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 konteynerleştirme 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, kodu ve kütüphaneler, sistem araçları ve ayarlar gibi tüm bağımlılıklarını paketleyen standartlaştırılmış bir yazılım birimi görevi görür; böylece uygulama bir bilgisayar ortamından diğerine hızlı ve güvenilir bir şekilde çalışır. Bu, araştırmacının dizüstü bilgisayarında eğitilmiş bir neural network modelinin devasa bir bulut sunucusuna veya bir uç cihaza dağıtıldığında tam olarak aynı şekilde davranmasını sağlayarak yaygın "benim makinemde çalışıyor" sorununu ortadan kaldırır.
Link to this sectionDocker Yapay Zeka ve Makine Öğrenimi İçin Neden Önemli?#
Modern machine learning operations (MLOps) süreçleri büyük ölçüde tekrarlanabilirlik ve taşınabilirliğe dayanır. Bir yapay zeka projesi genellikle Python'un belirli sürümleri, GPU acceleration için CUDA sürücüleri ve PyTorch veya TensorFlow gibi derin öğrenme çerçeveleri dahil olmak üzere karmaşık bir yazılım yığını gerektirir. Bunları farklı ekipler ve altyapılar arasında manuel olarak yönetmek hataya açıktır.
Docker, hafif ve bağımsız konteynerler oluşturarak bunu basitleştirir. Her örnek için tam bir işletim sistemi gerektiren geleneksel sanal makinelerin (VM) aksine, konteynerler ana makinenin işletim sistemi çekirdeğini paylaşır ancak yalıtılmış kullanıcı alanlarında çalışır. Bu onları kaynak açısından önemli ölçüde daha verimli kılar ve model serving altyapısını ölçeklendirirken veya dağıtık eğitim işlerini yürütürken kritik olan daha hızlı başlatma süreleri sağlar.
Link to this sectionGerç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şik 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, sonuçların donanım farklılıklarına bakılmaksızın meslektaşları tarafından tekrarlanabilir olmasını sağlar.
-
Uç Yapay Zeka Dağıtımı: smart city surveillance gibi alanlarda, 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ü paketlemelerine ve kablosuz olarak dağıtmaları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 sistemiyle çakışmaz.
Link to this sectionDocker 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 vs. Kubernetes: Bunlar birbirine rakip değil, birbirini tamamlayan teknolojilerdir. Docker, bireysel konteynerler 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 iyileştirme gibi görevleri yöneten bir konteyner düzenleme platformudur.
Link to this sectionÖrnek: Bir Konteyner İçinde Çıkarım Çalıştırma#
Aşağıdaki örnek, bilgisayarlı görü için tasarlanmış bir Docker konteyneri içinde bir Python betiğinin nasıl görünebileceğini göstermektedir. Bu betik, bir model yüklemek ve çıkarım yapmak 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.")Link to this sectionDocker'ı İş Akışına Entegre Etme#
Konteynerleştirmeye başlamak için geliştiriciler genellikle bir imaj oluşturmak için gereken tüm komutları içeren bir metin belgesi olan Dockerfile tanımlarlar. Oluşturulduktan sonra bu imajlar, Docker Hub veya GPU için optimize edilmiş konteynerler sunan NVIDIA NGC Catalog gibi kayıtlarda saklanabilir.
Docker 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 odaklanmalarını sağlar. Ayrıca, Ultralytics modellerini hemen konteynerlerde nasıl çalıştıracağını öğrenmek için Docker Quickstart Guide sayfamızı inceleyebilirsin.






