Ultralytics için Docker Hızlı Başlangıç Kılavuzu#
Bu kılavuz, Ultralytics projelerin için bir Docker ortamı kurmaya kapsamlı bir giriş niteliğindedir. Docker, uygulamaları konteynerler içinde geliştirmek, göndermek ve çalıştırmak için bir platformdur. Yazılımın nerede dağıtıldığına bakılmaksızın her zaman aynı şekilde çalışmasını sağlamak açısından özellikle faydalıdır. Daha fazla ayrıntı için Docker Hub üzerindeki Ultralytics Docker deposunu ziyaret et.
Neler Öğreneceksin#
- NVIDIA desteği ile Docker kurulumu
- Ultralytics Docker imajlarının yüklenmesi
- Ultralytics'i CPU veya GPU desteği ile bir Docker konteynerinde çalıştırma
- Ultralytics tespit sonuçlarını göstermek için Docker ile bir görüntü sunucusu kullanma
- Yerel dizinleri konteyner içine bağlama
Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉
Ön koşullar#
- Sisteminde Docker'ın kurulu olduğundan emin ol. Değilse, Docker'ın web sitesinden indirip kurabilirsin.
- GPU hızlandırma için sisteminde bir NVIDIA GPU ve NVIDIA sürücülerinin kurulu olduğundan emin ol. CPU imajları NVIDIA donanımı gerektirmez.
- NVIDIA Jetson cihazları kullanıyorsan uygun JetPack sürümünün kurulu olduğundan emin ol. Daha fazla ayrıntı için NVIDIA Jetson kılavuzuna göz at.
NVIDIA Desteği ile Docker Kurulumu (İsteğe Bağlı)#
Öncelikle, NVIDIA sürücülerinin düzgün yüklendiğini şu komutu çalıştırarak doğrula:
nvidia-smiNVIDIA Container Toolkit Yükleme#
Şimdi, Docker konteynerlerinde GPU desteğini etkinleştirmek için NVIDIA Container Toolkit paketini kuralım:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listPaket listelerini güncelle ve NVIDIA Container Toolkit'i yükle:
sudo apt-get updatesudo apt-get install -y nvidia-container-toolkitCDI Cihazlarını Docker ile Doğrula#
GPU CDI cihazlarının kullanılabilir olduğunu doğrulamak için nvidia-ctk cdi list komutunu çalıştır (araç setinin nvidia-cdi-refresh servisi, toolkit >= 1.18 sürümünde spesifikasyonu otomatik olarak oluşturur ve korur):
nvidia-ctk cdi listnvidia.com/gpu=0 ve nvidia.com/gpu=all gibi girdiler görmelisin. Keşfedilen CDI cihazları ayrıca docker info içinde de görünür.
Ultralytics Docker İmajlarını Yükleme#
Ultralytics, Docker Hub üzerinde şu imajları yayınlar. Her imaj, Docker yayınlama iş akışı tarafından bağlantılı Dockerfile dosyasından oluşturulur.
| Etiket | Platform ve amaç | Kaynak |
|---|---|---|
latest | GPU eğitimi ve çıkarımı için CUDA içeren Linux AMD64 | Dockerfile |
latest-export | Dönüştürme ve kıyaslama için CUDA ve dışa aktarma bağımlılıkları içeren Linux AMD64 | Dockerfile-export |
latest-python | CPU çıkarımı için hafif Linux AMD64 Python görüntüsü | Dockerfile-python |
latest-python-export | Dışa aktarma bağımlılıkları içeren Linux AMD64 CPU görüntüsü | Dockerfile-python-export |
latest-cpu | Varsayılan komut olarak Bash içeren Linux AMD64 CPU görüntüsü | Dockerfile-cpu |
latest-jupyter | JupyterLab ve Ultralytics eğitim not defterlerini içeren Linux AMD64 CPU görüntüsü | Dockerfile-jupyter |
latest-arm64 | Apple silikon, Raspberry Pi ve diğer ARM64 sistemler için Linux ARM64 CPU imajı | Dockerfile-arm64 |
latest-nvidia-arm64 | Jetson AGX Thor, DGX Spark, JetPack 7 ve DGX OS için NVIDIA GPU destekli Linux ARM64 | Dockerfile-nvidia-arm64 |
latest-jetson-jetpack6 | JetPack 6 çalıştıran NVIDIA Jetson cihazlar için Linux ARM64 | Dockerfile-jetson-jetpack6 |
latest-jetson-jetpack5 | JetPack 5 çalıştıran NVIDIA Jetson cihazlar için Linux ARM64 | Dockerfile-jetson-jetpack5 |
latest-jetson-jetpack4 | JetPack 4 çalıştıran NVIDIA Jetson cihazlar için Linux ARM64 | Dockerfile-jetson-jetpack4 |
latest-runner | Kendi kendine barındırılan GitHub Actions GPU çalıştırıcısı için Linux AMD64 CUDA görüntüsü | Dockerfile-runner |
latest-runner-cpu | Kendi kendine barındırılan GitHub Actions CPU çalıştırıcısı için Linux AMD64 görüntüsü | Dockerfile-runner-cpu |
latest ile başlayan etiketler en son yayınlanan main dalı derlemesini takip eder. Sürümlendirilmiş etiketler, latest önekini VERSION, VERSION-cpu veya VERSION-jetson-jetpack6 gibi bir Ultralytics sürümüyle değiştirir. Tekrarlanabilir bir ortam için sürümlendirilmiş bir etiket kullan.
En son imajı çekmek için:
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latestUltralytics'i Docker Konteynerinde Çalıştırma#
Ultralytics Docker konteynerini şu şekilde çalıştırabilirsin:
Sadece CPU kullanma#
# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpuGPU'ları kullanma#
# Run with all GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 ultralytics/ultralytics:latest-it bayrağı sahte bir TTY atar ve stdin'i açık tutarak konteynerle etkileşime geçmeni sağlar. --ipc=host bayrağı, işlemler arasında bellek paylaşımı için gerekli olan ana makine IPC ad alanının paylaşımını etkinleştirir. --device nvidia.com/gpu=... bayrağı, konteynere CDI aracılığıyla ana makinenin GPU'larına erişim izni verir.
Linux'ta CDI cihaz istekleri Docker >= 28.2.0 (CDI varsayılan olarak etkin) ve nvidia-container-toolkit >= 1.18 (otomatik CDI spec üretimi) gerektirir. GPU konteynerlerini çalıştırmadan önce daha eski Linux ana makinelerini güncelle. Eski --gpus all bayrağı, ana makine rutin paket güncellemeleri sırasında systemd'yi yeniden yüklediğinde (Failed to initialize NVML: Unknown Error) GPU erişimini kaybedebilir (nvidia-container-toolkit#48). CDI --device istekleri, cihaz düğümlerini konteyner yapılandırmasına dahil eder; böylece eğitim işçileri veya CI çalıştırıcıları gibi uzun süre çalışan konteynerler, yeniden yüklemeler boyunca GPU erişimini korur.
NVIDIA CDI cihazları orada mevcut olmadığından, Windows üzerinde Docker Desktop GPU desteği şu anda WSL 2 arka ucu ile --gpus all kullanmaktadır. Windows Linux systemd kullanmaz, bu nedenle yukarıdaki daemon-reload hatası geçerli değildir.
Dosya Erişilebilirliği Hakkında Not#
Konteyner içinde yerel makinendeki dosyalarla çalışmak için Docker birimlerini (volumes) kullanabilirsin:
# Mount a local directory into the container
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest/path/on/host ifadesini yerel makinenizdeki dizin yoluyla ve /path/in/container ifadesini Docker konteyneri içindeki istenen yol ile değiştir.
Eğitim Çıktılarını Kalıcı Hale Getirme#
Eğitim çıktıları varsayılan olarak konteyner içinde /ultralytics/runs/<task>/<name>/ konumuna kaydedilir. Bir ana makine dizini bağlanmazsa, konteyner kaldırıldığında çıktılar kaybolur.
Eğitim çıktılarını kalıcı hale getirmek için:
# Recommended: mount workspace and specify project path
sudo docker run --rm -it -v "$(pwd)":/w -w /w ultralytics/ultralytics:latest \
yolo train model=yolo26n.pt data=coco8.yaml project=/w/runsBu, tüm eğitim çıktılarını ana makinenizdeki ./runs konumuna kaydeder.
Bir Docker Konteynerinde grafiksel kullanıcı arayüzü (GUI) uygulamalarını çalıştırma#
Docker öncelikli olarak arka plan uygulamalarını ve CLI programlarını konteynerleştirmek için kullanılır, ancak grafiksel programları da çalıştırabilir. Linux dünyasında grafiksel ekranları yöneten iki ana grafik sunucusu bulunur: X11 (X Window System olarak da bilinir) ve Wayland. Başlamadan önce, şu anda hangi grafik sunucusunu kullandığını belirlemek esastır. Bunu öğrenmek için bu komutu çalıştır:
env | grep -E -i 'x11|xorg|wayland'X11 veya Wayland görüntü sunucusunun kurulumu ve yapılandırması bu kılavuzun kapsamı dışındadır. Eğer yukarıdaki komut hiçbir şey döndürmezse, devam etmeden önce sistemin için bunlardan birini çalışır hale getirmen gerekecektir.
GUI ile bir Docker Konteyneri Çalıştırma#
GPU'ları kullan
GPU'lar kullanıyorsan komuta --device nvidia.com/gpu=all bayrağını ekleyebilirsin.
Eğer X11 kullanıyorsan, Docker konteynerinin X11 soketine erişmesine izin vermek için şu komutu çalıştırabilirsin:
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host ultralytics/ultralytics:latestBu komut DISPLAY ortam değişkenini ana makinenin ekranına ayarlar, X11 soketini bağlar ve .Xauthority dosyasını konteynere eşler. xhost +local:docker komutu, Docker konteynerinin X11 sunucusuna erişmesine izin verir.
GUI ile Docker Kullanımı#
Artık Docker konteynerinin içinde grafiksel uygulamalar görüntüleyebilirsin. Örneğin, bir YOLO26 modelinden tahminleri görselleştirmek için aşağıdaki CLI komutunu çalıştırabilirsin:
yolo predict model=yolo26n.pt show=TrueTest Etme
Docker grubunun X11 sunucusuna erişimi olduğunu doğrulamanın basit bir yolu, xclock veya xeyes gibi bir GUI programı içeren bir konteyner çalıştırmaktır. Alternatif olarak, GNU-Linux ekran sunucunun X11 sunucusuna erişimini test etmek için bu programları Ultralytics Docker konteynerine de kurabilirsin. Herhangi bir sorunla karşılaşırsan, hata ayıklama bilgilerinin çıktısını etkinleştirerek sorun giderme sürecine yardımcı olan -e QT_DEBUG_PLUGINS=1 ortam değişkenini ayarlamayı düşün.
Docker GUI ile işin bittiğinde#
Her iki durumda da, işin bittiğinde Docker grubunun erişimini iptal etmeyi unutma.
xhost -local:dockerGörüntü sonuçlarını doğrudan Terminalde görmek ister misin?
Görüntü sonuçlarını bir terminal kullanarak görüntüleme hakkındaki şu kılavuza göz at
Artık Ultralytics'i Docker ile kullanmaya hazırsın ve özelliklerinden yararlanmaya başlayabilirsin. Ultralytics web uygulamasını kendi sunucunda barındırmak için Platform On-Premise kılavuzuna göz at. Alternatif Python paket kurulum yöntemleri için Ultralytics hızlı başlangıç belgelerine bak.
SSS#
Ultralytics'i Docker ile nasıl kurarım?#
Ultralytics'i Docker ile kurmak için öncelikle sisteminizde Docker'ın kurulu olduğundan emin olun. Bir NVIDIA GPU'nuz varsa, GPU desteğini etkinleştirmek için NVIDIA Container Toolkit paketini kurun. Ardından, aşağıdaki komutu kullanarak en son Ultralytics Docker imajını Docker Hub'dan çekin:
sudo docker pull ultralytics/ultralytics:latestDetaylı adımlar için Docker Hızlı Başlangıç Kılavuzumuza başvur.
Makine öğrenimi projeleri için Ultralytics Docker imajlarını kullanmanın faydaları nelerdir?#
Ultralytics Docker imajlarını kullanmak, farklı makinelerde tutarlı bir ortam sağlayarak aynı yazılımı ve bağımlılıkları çoğaltır. Bu, ekipler arası iş birliği yapmak, modelleri çeşitli donanımlarda çalıştırmak ve tekrarlanabilirliği sürdürmek için özellikle yararlıdır. Genel NVIDIA GPU eğitimi için latest kullanın veya bir NVIDIA Jetson cihazı için JetPack sürümünüze uyan imajı seçin. Tam imaj tablosuna bakın veya Ultralytics Docker Hub sayfasını keşfedin.
Ultralytics YOLO'yu GPU desteği olan bir Docker konteynerinde nasıl çalıştırabilirim?#
İlk olarak, NVIDIA Container Toolkit paketinin kurulu ve yapılandırılmış olduğundan emin olun. Ardından, GPU desteğiyle Ultralytics YOLO çalıştırmak için şu komutu kullanın:
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest # all GPUsBu komut, GPU erişimi olan bir Docker konteyneri kurar. Ek detaylar için Docker Hızlı Başlangıç Kılavuzuna bak.
Bir Docker konteynerinde görüntü sunucusu ile YOLO tahmin sonuçlarını nasıl görselleştiririm?#
Bir Docker konteynerinde GUI ile YOLO tahmin sonuçlarını görselleştirmek için Docker'ın görüntü sunucuna erişmesine izin vermen gerekir. X11 çalıştıran sistemler için komut şudur:
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host ultralytics/ultralytics:latestWayland çalıştıran sistemler için şunu kullan:
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host ultralytics/ultralytics:latestDaha fazla bilgiyi Docker Konteynerinde grafik kullanıcı arayüzü (GUI) uygulamalarını çalıştırma bölümünde bulabilirsin.
Ultralytics Docker konteynerine yerel dizinleri bağlayabilir miyim?#
Evet, -v bayrağını kullanarak yerel dizinleri Ultralytics Docker konteynerine bağlayabilirsin:
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest/path/on/host ifadesini yerel makinenizdeki dizin ile ve /path/in/container ifadesini konteyner içindeki istenen yol ile değiştir. Bu kurulum, konteyner içinde yerel dosyalarınızla çalışmanıza olanak tanır. Daha fazla bilgi için Dosya Erişilebilirliği Hakkında Not bölümüne bakın.