Docker
Docker'ın yeniden üretilebilir yapay zekâ dağıtımını nasıl mümkün kıldığını keşfet. Ultralytics YOLO26 modellerini sorunsuz ölçeklendirme için buluttan uç cihazlara kadar kapsayıcılarda paketlemeyi öğren.
Docker, geliştiricilerin kapsayıcılık kullanarak uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmesini sağlayan açık kaynaklı bir platformdur. Yapay zekâ ve makine öğrenimi bağlamında Docker, kodu ve kitaplıklar, 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 bilgi işlem ortamından diğerine hızlı ve güvenilir şekilde çalışır. Bu yaklaşım, yaygın "benim makinemde çalışıyor" sorununu ortadan kaldırarak bir araştırmacının dizüstü bilgisayarında eğitilen bir sinir ağının büyük bir bulut sunucusuna veya uç cihaza dağıtıldığında tamamen aynı şekilde davranmasını sağlar.
Docker Yapay Zekâ ve Makine Öğrenimi İçin Neden Önemlidir?#
Modern makine öğrenimi operasyonları (MLOps), tekrarlanabilirliğe ve taşınabilirliğe büyük ölçüde dayanır. Bir yapay zekâ projesi genellikle belirli Python sürümlerini, GPU hızlandırması için CUDA sürücülerini ve PyTorch veya TensorFlow gibi derin öğrenme çerçevelerini içeren karmaşık bir yazılım yığını kullanır. Bunları farklı ekipler ve altyapılar genelinde manuel olarak yönetmek hataya açıktır.
Docker, hafif ve bağımsız kapsayıcılar oluşturarak bu süreci basitleştirir. Her örnek için tam bir işletim sistemi gerektiren geleneksel sanal makinelerin (VMs) aksine kapsayıcılar, ana makinenin işletim sistemi çekirdeğini paylaşır ancak yalıtılmış kullanıcı alanlarında çalışır. Bu, kapsayıcıları çok daha verimli ve hızlı başlatılabilir hâle getirir; bu özellik, model sunumu altyapısını ölçeklendirirken veya dağıtık eğitim işleri çalıştırırken kritik önem taşır.
Gerçek Dünya Uygulamaları#
Docker, ilk denemelerden son dağıtıma kadar yapay zekâ yaşam döngüsünün her aşamasında yaygın olarak kullanılır.
-
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, nesne tespiti üzerinde çalışan bir araştırmacı, gerekli tüm sürücüleri ve kitaplıkları içeren önceden oluşturulmuş bir imajı çekebilir. Bu, bir YOLO26 modeli eğitildiğinde, kullanılan donanımdaki farklılıklardan bağımsız olarak sonuçların ekip arkadaşları tarafından yeniden üretilebilmesini sağlar.
-
Uçta Yapay Zekâ Dağıtımı: Akıllı şehir gözetimi kapsamında, güncellenen modellerin trafik kameraları veya dronlar gibi binlerce uç cihazına gönderilmesi gerekir. Docker kapsayıcıları, mühendislerin yeni bir model sürümünü paketleyip kablosuz olarak dağıtmasına olanak tanır. Kapsayıcı çıkarım çalışma zamanını içerdiğinden güncelleme süreci sorunsuz ilerler ve cihazın temel işletim sistemini etkilemez.
Docker, Kubernetes ve Sanal Makineler Karşılaştırması#
Docker'ın kendine özgü rolünü anlamak için onu ilişkili teknolojilerden ayırmak yararlıdır:
- Docker ve Sanal Makineler (VMs): Sanal makineler donanımı sanallaştırır; yani her sanal makine, bir hipervizör üzerinde tam bir işletim sistemi (Windows veya Linux gibi) çalıştırır. Bu, önemli miktarda bellek ve CPU tüketir. Docker işletim sistemini sanallaştırarak kapsayıcıları sanal makinelerden çok daha küçük ve hızlı hâle getirir.
- Docker ve Kubernetes: Bunlar birbirine rakip değil, birbirini tamamlayan teknolojilerdir. Docker, tek tek kapsayıcıları oluşturmak ve çalıştırmak için kullanılan araçtır. Kubernetes, Docker kapsayıcılarının kümelerini yöneten bir kapsayıcı orkestrasyon platformudur; büyük ölçekli bulut bilişim ortamlarında otomatik ölçeklendirme, yük dengeleme ve otomatik iyileştirme gibi görevleri yerine getirir.
Örnek: Bir Kapsayıcıda Çıkarım Çalıştırma#
Aşağıdaki örnek, bilgisayarlı görü için tasarlanmış bir Docker kapsayıcısında bir Python betiğinin nasıl görünebileceğini gösterir. Bu betik, bir modeli yüklemek ve çıkarım gerçekleştirmek için ultralytics paketini kullanır. Kapsayıcı ortamı, doğru bağımlılıkların (opencv-python ve torch gibi) zaten 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#
Kapsayıcılığa başlamak için geliştiriciler genellikle bir imajı oluşturmak üzere gereken tüm komutları içeren bir metin belgesi olan Dockerfile dosyasını tanımlar. Oluşturulduktan sonra bu imajlar, Docker Hub veya GPU için optimize edilmiş kapsayıcılar sunan NVIDIA NGC Catalog gibi kayıt depolarında saklanabilir.
Dockerfiles'ı 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 sayede kullanıcılar altyapıyı yapılandırmak yerine model doğruluğunu geliştirmeye odaklanabilir. Ayrıca, Ultralytics modellerini kapsayıcılarda hemen çalıştırmayı öğrenmek için Docker Hızlı Başlangıç Kılavuzumuzu inceleyebilirsin.









