Saltar para o conteúdo

Guia de início rápido do Docker para Ultralytics

Ultralytics Visual do pacote Docker

Este guia serve como uma introdução abrangente à configuração de um ambiente Docker para seus projetos Ultralytics . O Docker é uma plataforma para desenvolver, enviar e executar aplicativos em contêineres. É particularmente benéfico para garantir que o software será sempre executado da mesma forma, independentemente de onde for implantado. Para obter mais detalhes, visite o repositório do Docker Ultralytics no Docker Hub.

Versão da imagem do Docker Docker Pulls

O que vai aprender

  • Configurar o Docker com suporte para NVIDIA
  • Instalando imagens do Ultralytics Docker
  • Executar Ultralytics num contentor Docker com suporte para CPU ou GPU
  • Usar um servidor de exibição com o Docker para mostrar os resultados da deteção de Ultralytics
  • Montagem de diretórios locais no contentor

Pré-requisitos

  • Certifique-se de que o Docker está instalado no seu sistema. Se não estiver, pode descarregá-lo e instalá-lo a partir do sítio Web do Docker.
  • Certifique-se de que o seu sistema tem um controlador NVIDIA GPU e NVIDIA instalados.

Configurar o Docker com o suporte NVIDIA

Primeiro, verifique se os controladores NVIDIA estão corretamente instalados, executando:

nvidia-smi

Instalando NVIDIA Tempo de execução do Docker

Agora, vamos instalar o tempo de execução do Docker NVIDIA para habilitar o suporte a GPU em contêineres do Docker:

# Add NVIDIA package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(lsb_release -cs)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# Install NVIDIA Docker runtime
sudo apt-get update
sudo apt-get install -y nvidia-docker2

# Restart Docker service to apply changes
sudo systemctl restart docker

Verificar o tempo de execução do NVIDIA com o Docker

Correr docker info | grep -i runtime para garantir que nvidia aparece na lista de tempos de execução:

docker info | grep -i runtime

Instalando Ultralytics Imagens Docker

Ultralytics oferece várias imagens Docker optimizadas para várias plataformas e casos de utilização:

  • Dockerfile: imagem GPU , ideal para formação.
  • Dockerfile-arm64: Para a arquitetura ARM64, adequada para dispositivos como o Raspberry Pi.
  • Dockerfile-cpu: CPU-versão exclusiva para ambientes de inferência e nãoGPU .
  • Dockerfile-jetson: Optimizado para NVIDIA dispositivos Jetson.
  • Dockerfile-python: Ambiente mínimo Python para aplicações leves.
  • Dockerfile-conda: Inclui o pacote Miniconda3 e Ultralytics instalado via Conda.

Para obter a imagem mais recente:

# Set image name as a variable
t=ultralytics/ultralytics:latest

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t

Executando Ultralytics no Docker Container

Eis como executar o contentor Docker Ultralytics :

Utilizando apenas o CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

Utilização de GPUs

# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t

O -it atribui um pseudo-TTY e mantém o stdin aberto, permitindo-lhe interagir com o contentor. O sinalizador --ipc=host permite a partilha do espaço de nomes IPC do anfitrião, essencial para a partilha de memória entre processos. O sinalizador --gpus permite que o contentor aceda às GPUs do anfitrião.

Executando Ultralytics no Docker Container

Eis como executar o contentor Docker Ultralytics :

Utilizando apenas o CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

Utilização de GPUs

# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t

O -it atribui um pseudo-TTY e mantém o stdin aberto, permitindo-lhe interagir com o contentor. O sinalizador --ipc=host permite a partilha do espaço de nomes IPC do anfitrião, essencial para a partilha de memória entre processos. O sinalizador --gpus permite que o contentor aceda às GPUs do anfitrião.

Nota sobre a acessibilidade dos ficheiros

Para trabalhar com ficheiros no seu computador local dentro do contentor, pode utilizar volumes Docker:

# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t

Substituir /path/on/host com o caminho do diretório na sua máquina local e /path/in/container com o caminho desejado dentro do contentor Docker.

Executar aplicações de interface gráfica do utilizador (GUI) num contentor Docker

Altamente experimental - o utilizador assume todos os riscos

As instruções a seguir são experimentais. A partilha de um socket X11 com um contentor Docker apresenta potenciais riscos de segurança. Por conseguinte, recomenda-se que esta solução seja testada apenas num ambiente controlado. Para obter mais informações, consulte estes recursos sobre como usar o xhost(1)(2).

O Docker é usado principalmente para colocar em contêineres aplicativos em segundo plano e programas CLI , mas também pode executar programas gráficos. No mundo Linux, dois servidores gráficos principais lidam com a exibição gráfica: X11 (também conhecido como X Window System) e Wayland. Antes de começar, é essencial determinar qual o servidor gráfico que está a utilizar atualmente. Execute este comando para descobrir:

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

A instalação e configuração de um servidor de ecrã X11 ou Wayland está fora do âmbito deste guia. Se o comando acima não devolver nada, então terá de começar por pôr qualquer um deles a funcionar no seu sistema antes de continuar.

Executar um contentor Docker com uma GUI

Exemplo

Utilizar GPUs
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.

Se estiver a utilizar o X11, pode executar o seguinte comando para permitir que o contentor Docker aceda ao socket X11:

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

Este comando define o DISPLAY para o ecrã do anfitrião, monta o socket X11 e mapeia a variável de ambiente .Xauthority para o contentor. O ficheiro xhost +local:docker permite que o contentor Docker aceda ao servidor X11.

Para Wayland, utilize o seguinte comando:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t

Este comando define o DISPLAY para o ecrã do anfitrião, monta o socket Wayland e permite que o contentor Docker aceda ao servidor Wayland.

Usando o Docker com uma GUI

Agora é possível exibir aplicativos gráficos dentro do contêiner Docker. Por exemplo, você pode executar o seguinte comandoCLI para visualizar as previsões de um modeloYOLO11 :

yolo predict model=yolo11n.pt show=True
Ensaios

Uma forma simples de validar que o grupo Docker tem acesso ao servidor X11 é executar um contentor com um programa GUI como xclock ou xeyes. Em alternativa, pode também instalar estes programas no contentor Docker Ultralytics para testar o acesso ao servidor X11 do seu servidor de visualização GNU-Linux. Se tiver algum problema, considere definir a variável de ambiente -e QT_DEBUG_PLUGINS=1. A definição desta variável de ambiente permite a saída de informações de depuração, ajudando no processo de resolução de problemas.

Quando terminar com a GUI do Docker

Revogar o acesso

Em ambos os casos, não se esqueça de revogar o acesso do grupo Docker quando tiver terminado.

xhost -local:docker
Pretende visualizar os resultados das imagens diretamente no Terminal?

Consulte o seguinte guia para visualizar os resultados da imagem utilizando um terminal


Parabéns! Agora você está configurado para usar o Ultralytics com o Docker e está pronto para aproveitar seus recursos avançados. Para métodos de instalação alternativos, sinta-se à vontade para explorar a documentação de início rápido doUltralytics .

FAQ

Como é que configuro Ultralytics com o Docker?

Para configurar Ultralytics com o Docker, primeiro certifique-se de que o Docker está instalado no seu sistema. Se você tiver um NVIDIA GPU , instale o tempo de execução do Docker NVIDIA para habilitar o suporte a GPU . Em seguida, extraia a imagem mais recente do Ultralytics Docker do Docker Hub usando o seguinte comando:

sudo docker pull ultralytics/ultralytics:latest

Para obter etapas detalhadas, consulte o nosso Guia de início rápido do Docker.

Quais são as vantagens de utilizar imagens Ultralytics Docker para projectos de aprendizagem automática?

O uso de imagens Ultralytics Docker garante um ambiente consistente em diferentes máquinas, replicando o mesmo software e dependências. Isto é particularmente útil para colaborar entre equipas, executar modelos em vários hardwares e manter a reprodutibilidade. Para treinamento baseado em GPU, Ultralytics fornece imagens Docker otimizadas, como Dockerfile para utilização geral GPU e Dockerfile-jetson para NVIDIA dispositivos Jetson. Explorar Ultralytics Centro de Docker para mais pormenores.

Como posso executar Ultralytics YOLO num contentor Docker com suporte para GPU ?

Primeiro, certifique-se de que o tempo de execução do Docker NVIDIA esteja instalado e configurado. Em seguida, use o seguinte comando para executar Ultralytics YOLO com o suporte de GPU :

sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest

Este comando configura um contentor Docker com acesso GPU . Para obter detalhes adicionais, consulte o Guia de início rápido do Docker.

Como é que visualizo os resultados da previsão de YOLO num contentor Docker com um servidor de visualização?

Para visualizar os resultados da previsão do YOLO com uma GUI num contentor Docker, é necessário permitir que o Docker aceda ao seu servidor de visualização. Para sistemas que executam o X11, o comando é:

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

Para sistemas com Wayland, utilize:

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

Mais informações podem ser encontradas na secção Executar aplicações de interface gráfica do utilizador (GUI) num contentor Docker.

Posso montar diretórios locais no contentor Docker Ultralytics ?

Sim, é possível montar diretórios locais no contêiner do Docker Ultralytics usando o -v bandeira:

sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

Substituir /path/on/host com o diretório no seu computador local e /path/in/container com o caminho desejado dentro do contentor. Esta configuração permite-lhe trabalhar com os seus ficheiros locais dentro do contentor. Para mais informações, consulte a secção relevante sobre montagem de diretórios locais.

📅C riado há 1 ano ✏️ Atualizado há 2 meses

Comentários