Docker
Docker'ın tekrarlanabilir yapay zeka dağıtımını nasıl sağladığını keşfet. Buluttan uç cihazlara kesintisiz ölçeklendirme için Ultralytics YOLO26 modellerini konteynerlerde paketlemeyi öğren.
Docker, geliştiricilerin konteyner teknolojisini kullanarak uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmesini sağlayan açık kaynaklı bir platformdur. Yapay zeka ve makine öğrenimi bağlamında Docker, kodları ve tüm bağımlılıklarını (kütüphaneler, sistem araçları ve ayarlar gibi) paketleyen standartlaştırılmış bir yazılım birimi olarak görev yapar; böylece uygulama bir bilişim ortamından diğerine hızlı ve güvenilir bir şekilde çalışır. Bu durum, yaygın olan "benim bilgisayarımda çalışıyor" sorununu ortadan kaldırarak bir araştırmacının dizüstü bilgisayarında eğitilmiş bir neural network modelinin, devasa bir bulut sunucusunda veya uç cihaza dağıtıldığında tam olarak aynı şekilde davranmasını sağlar.
Docker Yapay Zeka ve Makine Öğrenimi İçin Neden Önemli?#
Modern machine learning operations (MLOps) süreçleri, yeniden üretilebilirlik ve taşınabilirliğe büyük ölçüde güvenir. Bir yapay zeka projesi genellikle Python'ın belirli sürümleri, GPU acceleration için CUDA sürücüleri ve PyTorch ya da TensorFlow gibi derin öğrenme çerçeveleri dahil olmak üzere karmaşık bir yazılım yığını içerir. Bunları farklı ekipler ve altyapılar arasında manuel olarak yönetmek hataya açık bir süreçtir.
Docker, hafif ve bağımsız konteynerler oluşturarak bunu basitleştirir. Her örnek için eksiksiz bir işletim sistemi gerektiren geleneksel sanal makinelerin (VM) aksine konteynerler, ana makinenin işletim sistemi çekirdeğini paylaşır ancak izole edilmiş kullanıcı alanlarında çalışır. Bu, model serving altyapısını ölçeklendirirken veya dağıtık eğitim işlerini çalıştırırken kritik önem taşıyan kaynak verimliliğini ve başlatma hızını önemli ölçüde artırır.
Gerçek Dünya Uygulamaları#
Docker, ilk denemelerden nihai dağıtıma kadar yapay zeka yaşam döngüsünde her yerde bulunur.
-
Tutarlı Eğitim Ortamları: Bir veri bilimi ekibi, birleştirilmiş bir geliştirme ortamını paylaşmak için Docker imajlarını kullanabilir. Örneğin, object detection üzerinde çalışan bir araştırmacı, gerekli tüm sürücüleri ve kütüphaneleri içeren önceden oluşturulmuş bir imajı çekebilir. Bu, bir YOLO26 modeli eğittiklerinde, temel donanım farklarından bağımsız olarak sonuçların meslektaşları tarafından yeniden üretilebilir olmasını sağlar.
-
Uç Yapay Zeka Dağıtımı: smart city surveillance alanında, güncellenmiş modellerin trafik kameraları veya dronlar gibi binlerce uç cihaza gönderilmesi gerekir. Docker konteynerleri, mühendislerin yeni bir model sürümünü paketlemesine ve bunu kablosuz (OTA) olarak dağıtmasına olanak tanır. Konteyner çıkarım çalışma zamanını içerdiğinden, güncelleme süreci sorunsuzdur ve cihazın temel işletim sistemine müdahale etmez.
Docker vs. Kubernetes vs. Sanal Makineler#
Docker'ın özel rolünü anlamak için onu ilgili teknolojilerden ayırt etmek faydalıdır:
- Docker vs. Sanal Makineler (VMs): VM'ler donanımı sanallaştırır; yani her VM bir hipervizör üzerinde tam bir işletim sistemi (Windows veya Linux gibi) çalıştırır. Bu durum önemli miktarda bellek ve CPU tüketir. Docker ise işletim sistemini sanallaştırır, bu da konteynerleri VM'lerden çok daha küçük ve hızlı hale getirir.
- Docker ve Kubernetes: Bunlar rakip değil, birbirini tamamlayan teknolojilerdir. Docker, bireysel konteynerleri oluşturmak ve çalıştırmak için kullanılan araçtır. Kubernetes ise büyük ölçekli cloud computing ortamlarında otomatik ölçeklendirme, yük dengeleme ve kendi kendini onarma gibi görevleri yöneterek Docker konteyner kümelerini yöneten bir konteyner düzenleme platformudur.
Örnek: Bir Konteyner İçinde Çıkarım Çalıştırma#
Aşağıdaki örnek, bilgisayarlı görü için tasarlanmış bir Docker konteynerinin içinde bir Python betiğinin nasıl görünebileceğini göstermektedir. Bu betik, bir modeli yüklemek ve çıkarım gerçekleştirmek için ultralytics paketini kullanır. Konteyner ortamı, doğru bağımlılıkların (opencv-python ve torch gibi) halihazırda mevcut olmasını sağlar.
from ultralytics import YOLO
# Load the YOLO26 model (weights are typically included in the Docker image)
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a containerized microservice, this might process incoming API requests
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Log the detection results
print(f"Detected {len(results[0].boxes)} objects in the image.")Docker'ı İş Akışına Entegre Etme#
Konteyner teknolojisiyle çalışmaya başlamak için geliştiriciler genellikle bir imajı birleştirmek için tüm komutları içeren bir metin belgesi olan Dockerfile tanımını yaparlar. Oluşturulduktan sonra bu imajlar, GPU için optimize edilmiş konteynerler sunan Docker Hub veya NVIDIA NGC Catalog gibi kayıt defterlerinde saklanabilir.
Dockerfiles dosyalarını manuel olarak yönetmeden eğitim ve dağıtım sürecini kolaylaştırmak isteyenler için Ultralytics Platform, bulut ortamlarının karmaşıklığını yöneten entegre araçlar sunar. Bu, kullanıcıların altyapıyı yapılandırmak yerine model accuracy değerini iyileştirmeye odaklanmasını sağlar. Ayrıca, Ultralytics modellerini hemen konteynerlerde nasıl çalıştıracağınızı öğrenmek için Docker Quickstart Guide kılavuzumuzu inceleyebilirsiniz.






