Ultralytics YOLO27:

Ultralytics için Docker Hızlı Başlangıç Kılavuzu#

Ultralytics Docker Package Visual

Bu kılavuz, Ultralytics projelerin için bir Docker ortamı kurmaya kapsamlı bir giriş sunar. Docker, uygulamaları kapsayıcılarda geliştirmek, dağıtmak ve çalıştırmak için kullanılan bir platformdur. Yazılımın nerede dağıtıldığından bağımsız olarak her zaman aynı şekilde çalışmasını sağlamada özellikle faydalıdır. Daha fazla bilgi için Docker Hub üzerindeki Ultralytics Docker deposunu ziyaret et.

Docker İmajı Sürümü Docker Çekimleri

Öğreneceklerin#

  • NVIDIA desteğiyle Docker'ı kurma
  • Ultralytics Docker imajlarını yükleme
  • Ultralytics'i CPU veya GPU desteğiyle bir Docker kapsayıcısında çalıştırma
  • Ultralytics algılama sonuçlarını göstermek için Docker ile bir görüntüleme sunucusu kullanma
  • Yerel dizinleri kapsayıcıya bağlama


Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉

Ön koşullar#

  • Sisteminde Docker'ın yüklü olduğundan emin ol. Yüklü değilse Docker web sitesinden indirip yükleyebilirsin.
  • GPU hızlandırması için sisteminde bir NVIDIA GPU ve NVIDIA sürücülerinin yüklü olduğundan emin ol. CPU imajları NVIDIA donanımı gerektirmez.
  • NVIDIA Jetson cihazları kullanıyorsan uygun JetPack sürümünün yüklü olduğundan emin ol. Daha fazla bilgi için NVIDIA Jetson kılavuzuna başvur.

NVIDIA Desteğiyle Docker'ı Kurma (İsteğe Bağlı)#

Öncelikle NVIDIA sürücülerinin düzgün yüklendiğini şu komutu çalıştırarak doğrula:

nvidia-smi

NVIDIA Container Toolkit'i Yükleme#

Şimdi Docker kapsayıcılarında GPU desteğini etkinleştirmek için NVIDIA Container Toolkit'i yükleyelim:

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.list

Paket listelerini güncelle ve NVIDIA Container Toolkit'i yükle:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

CDI Cihazlarını Docker ile Doğrulama#

GPU CDI cihazlarının kullanılabilir olduğundan emin olmak için nvidia-ctk cdi list komutunu çalıştır (toolkit'in nvidia-cdi-refresh hizmeti, toolkit >= 1.18 sürümünde belirtimi otomatik olarak oluşturur ve güncel tutar):

nvidia-ctk cdi list

nvidia.com/gpu=0 ve nvidia.com/gpu=all gibi girdiler görmelisin. Keşfedilen CDI cihazları docker info içinde de görünür.

Ultralytics Docker İmajlarını Yükleme#

Ultralytics aşağıdaki imajları Docker Hub'da yayımlar. Her imaj, Docker yayınlama iş akışı tarafından bağlantılı Dockerfile'dan oluşturulur.

EtiketPlatform ve amaçKaynak
latestGPU eğitimi ve çıkarımı için CUDA içeren Linux AMD64Dockerfile
latest-exportDönüştürme ve kıyaslama için CUDA ve dışa aktarma bağımlılıklarını içeren Linux AMD64Dockerfile-export
latest-pythonCPU çıkarımı için hafif Linux AMD64 Python imajıDockerfile-python
latest-python-exportDışa aktarma bağımlılıklarını içeren Linux AMD64 CPU imajıDockerfile-python-export
latest-cpuVarsayılan komut olarak Bash kullanan Linux AMD64 CPU imajıDockerfile-cpu
latest-jupyterJupyterLab ve Ultralytics öğretici not defterlerini içeren Linux AMD64 CPU imajıDockerfile-jupyter
latest-arm64Apple silicon, Raspberry Pi ve diğer ARM64 sistemleri için Linux ARM64 CPU imajıDockerfile-arm64
latest-nvidia-arm64DGX Spark (DGX OS) için Linux ARM64 ve Thor üzerinde PyTorch (JetPack 7.1); birlikte gelen TensorRT, JetPack sürümünü desteklemezDockerfile-nvidia-arm64
latest-jetson-jetpack6JetPack 6 çalıştıran NVIDIA Jetson cihazları için Linux ARM64Dockerfile-jetson-jetpack6
latest-jetson-jetpack5JetPack 5 çalıştıran NVIDIA Jetson cihazları için Linux ARM64Dockerfile-jetson-jetpack5
latest-jetson-jetpack4JetPack 4 çalıştıran NVIDIA Jetson cihazları için Linux ARM64Dockerfile-jetson-jetpack4
latest-runnerKendi barındırdığın GitHub Actions GPU çalıştırıcısı için Linux AMD64 CUDA imajıDockerfile-runner
latest-runner-cpuKendi barındırdığın GitHub Actions CPU çalıştırıcısı için Linux AMD64 imajıDockerfile-runner-cpu

AMD64 GPU görüntüleri (latest, latest-export ve latest-runner), PyTorch 2.14 ve CUDA 13.2 kullanır. AMD64 GPU görüntülerini başlatmadan önce nvidia-smi ile ana makine sürücüsünün CUDA desteğini kontrol et; daha yeni bir kapsayıcı yüklemek ana makine sürücüsünü güncellemez. CUDA 13, Tesla P100 ve V100 dahil olmak üzere Maxwell, Pascal ve Volta GPU'ları için desteği kaldırır. NVIDIA'nın CUDA sürüm notları ve sürücü uyumluluğu gereksinimleri belgelerine göz at.

NVIDIA ARM64 görüntüsü, CUDA 13.4 ve TensorRT 11.2 içeren NVIDIA PyTorch 26.08 kullanır. NVIDIA ARM64 görüntüsünün Thor için PyTorch desteği TensorRT'ye uzanmaz: NVIDIA, JetPack üzerinde TensorRT 11.2'yi desteklemez. Jetson TensorRT dışarı aktarımları için JetPack sürümün için desteklenen TensorRT 10.x çalışma zamanını kullan. Jetson kılavuzu veya DGX Spark kılavuzu içerisindeki platform gereksinimlerini takip et. JetPack 4, 5 ve 6 görüntüleri, kendi ayrı cihaza özel yığınlarını korur.

Conda Dockerfile, yerel derlemeler için kullanılabilir; latest-conda öğesinin otomatik olarak yayınlanması devre dışı bırakılmıştır, bu nedenle bu kayıt defteri etiketi bu güncellemeleri içermez.

LiteRT dışarı aktarımları için latest-python-export kullan. GPU latest-export görüntüsü PyTorch 2.14'ü korur ve mevcut bağımlılığı 2.14'ün altında bir PyTorch gerektirdiği için LiteRT'yi dışarıda bırakır.

latest ile başlayan etiketler, en son yayımlanan ana dal derlemesini takip eder. Sürümlü etiketlerde latest ön eki, VERSION, VERSION-cpu veya VERSION-jetson-jetpack6 gibi bir Ultralytics sürümüyle değiştirilir. Tekrarlanabilir bir ortam için sürümlü etiket kullan.

En son imajı çekmek için:

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latest

Bunun yerine bir imajı kendin oluşturmak için depoyu klonla ve derleme bağlamı olarak depo kökünü kullanarak yukarıdaki tablodan eşleşen Dockerfile'ı belirt:

# Build the CPU image locally from docker/Dockerfile-cpu
sudo docker build -t ultralytics/ultralytics:latest-cpu -f docker/Dockerfile-cpu .

Ultralytics'i Docker Kapsayıcısında Çalıştırma#

Ultralytics Docker kapsayıcısını şu şekilde çalıştırabilirsin:

Yalnızca CPU'yu kullanma#

# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpu

GPU'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ğı bir pseudo-TTY atar ve stdin'i açık tutarak kapsayıcıyla etkileşim kurmanı sağlar. --ipc=host bayrağı, işlemler arasında bellek paylaşımı için gerekli olan ana makinenin IPC ad alanının paylaşılmasını etkinleştirir. --device nvidia.com/gpu=... bayrağı, kapsayıcının ana makinedeki GPU'lara CDI aracılığıyla erişmesini sağlar.

`--gpus all` yerine CDI kullan

Linux'ta CDI cihaz istekleri için Docker >= 28.2.0 (CDI varsayılan olarak etkin) ve nvidia-container-toolkit >= 1.18 (otomatik CDI belirtimi oluşturma) gerekir. GPU kapsayıcılarını çalıştırmadan önce eski Linux ana makinelerini yükselt. Eski --gpus all bayrağı, ana makine rutin paket güncellemeleri sırasında systemd'yi yeniden yüklediğinde GPU erişimini (Failed to initialize NVML: Unknown Error) kaybedebilir (nvidia-container-toolkit#48). CDI --device istekleri, cihaz düğümlerini kapsayıcı yapılandırmasına ekler; böylece eğitim çalışanları veya CI çalıştırıcıları gibi uzun süre çalışan kapsayıcılar yeniden yüklemeler boyunca GPU erişimini korur.

Windows'ta Docker Desktop GPU desteği, NVIDIA CDI cihazları burada kullanılamadığı için şu anda WSL 2 arka ucuyla --gpus all kullanır. Windows Linux systemd kullanmadığından yukarıdaki daemon-reload hatası geçerli değildir.

Dosya Erişilebilirliği Hakkında Not#

Kapsayıcı içinde yerel makinenizdeki dosyalarla çalışmak için Docker birimlerini 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 yolu, /path/in/container ifadesini ise Docker kapsayıcısı içindeki istediğin yol ile değiştir.

Eğitim Çıktılarını Kalıcı Hale Getirme#

Eğitim çıktıları varsayılan olarak kapsayıcı içinde /ultralytics/runs/<task>/<name>/ konumuna kaydedilir. Bir ana makine dizini bağlamazsan kapsayıcı 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/runs

Bu işlem tüm eğitim çıktılarını ana makinen üzerinde ./runs konumuna kaydeder.

Docker Kapsayıcısında grafik kullanıcı arayüzü (GUI) uygulamalarını çalıştırma#

Son Derece Deneyseldir - Tüm Sorumluluk Kullanıcıya Aittir

Aşağıdaki talimatlar deneyseldir. Bir X11 soketinin Docker kapsayıcısıyla paylaşılması potansiyel güvenlik riskleri oluşturur. Bu nedenle bu çözümü yalnızca kontrollü bir ortamda test etmen önerilir. Daha fazla bilgi için xhost kullanımına ilişkin şu kaynaklara başvur(1)(2).

Docker öncelikle arka plan uygulamalarını ve CLI programlarını kapsayıcılaştırmak için kullanılır, ancak grafik programlarını da çalıştırabilir. Linux dünyasında grafik görüntülemeyi yöneten iki ana grafik sunucusu vardır: X11 (X Window System olarak da bilinir) ve Wayland. Başlamadan önce şu anda hangi grafik sunucusunu kullandığını belirlemen önemlidir. Öğrenmek için şu komutu çalıştır:

env | grep -E -i 'x11|xorg|wayland'

Bir X11 veya Wayland görüntüleme sunucusunun kurulumu ve yapılandırılması bu kılavuzun kapsamı dışındadır. Yukarıdaki komut hiçbir şey döndürmezse devam etmeden önce sisteminde bunlardan birini çalışır duruma getirerek başlaman gerekir.

GUI ile Docker Kapsayıcısı Çalıştırma#

Örnek
GPU'ları kullanma

GPU'lar kullanıyorsan komuta --device nvidia.com/gpu=all bayrağını ekleyebilirsin.

X11 kullanıyorsan Docker kapsayıcısının 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:latest

Bu komut, DISPLAY ortam değişkenini ana makinenin görüntüsüne ayarlar, X11 soketini bağlar ve .Xauthority dosyasını kapsayıcıya eşler. xhost +local:docker komutu, Docker kapsayıcısının X11 sunucusuna erişmesine izin verir.

GUI ile Docker Kullanma#

Artık Docker kapsayıcının içinde grafik uygulamaları görüntüleyebilirsin. Örneğin, bir YOLO26 modeli tarafından üretilen tahminleri görselleştirmek için aşağıdaki CLI komutunu çalıştırabilirsin:

yolo predict model=yolo26n.pt show=True
Test Etme

Docker grubunun X11 sunucusuna erişimi olduğunu doğrulamanın basit bir yolu, xclock veya xeyes gibi GUI programlarına sahip bir kapsayıcı çalıştırmaktır. Alternatif olarak, GNU-Linux görüntüleme sunucunun X11 sunucusuna erişimi test etmek için bu programları Ultralytics Docker kapsayıcısına da yükleyebilirsin. Herhangi bir sorunla karşılaşırsan -e QT_DEBUG_PLUGINS=1 ortam değişkenini ayarlamayı düşün. Bu ortam değişkenini ayarlamak, hata ayıklama bilgilerinin çıktılanmasını etkinleştirerek sorun giderme sürecine yardımcı olur.

Docker GUI'siyle işin bittiğinde#

Erişimi iptal et

Her iki durumda da işin bittiğinde Docker grubunun erişimini iptal etmeyi unutma.

xhost -local:docker
İmaj sonuçlarını doğrudan Terminal'de görüntülemek mi istiyorsun?

İmaj sonuçlarını terminal kullanarak görüntüleme hakkındaki aşağıdaki kılavuza başvur.

Artık Ultralytics'i Docker ile kullanmak için kurulumun tamamlandı ve yeteneklerinden yararlanmaya hazırsın. Ultralytics web uygulamasını kendi sunucunda barındırmak için Platform On-Premise kılavuzuna bak. Alternatif Python paketi yükleme yöntemleri için Ultralytics hızlı başlangıç belgelerine bak.

SSS#

  • Ultralytics'i Docker ile kurmak için önce Docker'ın sisteminde yüklü olduğundan emin ol. NVIDIA GPU'n varsa GPU desteğini etkinleştirmek için NVIDIA Container Toolkit'i yükle. Ardından aşağıdaki komutu kullanarak en yeni Ultralytics Docker imajını Docker Hub'dan çek:

    sudo docker pull ultralytics/ultralytics:latest

    Ayrıntılı adımlar için Docker Hızlı Başlangıç Kılavuzumuza başvur.

  • Ultralytics Docker imajlarını kullanmak, aynı yazılım ve bağımlılıkları çoğaltarak farklı makineler arasında tutarlı bir ortam sağlar. Bu, özellikle ekipler arasında iş birliği yapmak, modelleri çeşitli donanımlarda çalıştırmak ve tekrarlanabilirliği korumak için faydalıdır. Genel NVIDIA GPU eğitimi için latest kullan veya NVIDIA Jetson cihazı için JetPack sürümünle eşleşen imajı seç. Eksiksiz imaj tablosuna bak ya da Ultralytics Docker Hub'ı keşfet.

  • Öncelikle NVIDIA Container Toolkit'in yüklü ve yapılandırılmış olduğundan emin ol. Ardından Ultralytics YOLO'yu GPU desteğiyle çalıştırmak için şu komutu kullan:

    sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest # all GPUs

    Bu komut, GPU erişimine sahip bir Docker kapsayıcısı kurar. Ek ayrıntılar için Docker Hızlı Başlangıç Kılavuzuna bak.

  • YOLO tahmin sonuçlarını Docker kapsayıcısında bir GUI ile görselleştirmek için Docker'ın görüntüleme sunucuna erişmesine izin vermen gerekir. X11 çalıştıran sistemlerde komut şöyledir:

    xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
      -v /tmp/.X11-unix:/tmp/.X11-unix \
      -v ~/.Xauthority:/root/.Xauthority \
      -it --ipc=host ultralytics/ultralytics:latest

    Wayland çalıştıran sistemlerde ş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:latest

    Daha fazla bilgiyi Docker Kapsayıcısında grafik kullanıcı arayüzü (GUI) uygulamalarını çalıştırma bölümünde bulabilirsin.

  • Evet, -v bayrağını kullanarak yerel dizinleri Ultralytics Docker kapsayıcısına 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 dizinle, /path/in/container ifadesini ise kapsayıcı içindeki istediğin yolla değiştir. Bu kurulum, kapsayıcı içinde yerel dosyalarınla çalışmana olanak tanır. Daha fazla bilgi için Dosya Erişilebilirliği Hakkında Not bölümüne başvur.

Yorumlar