Ir para o conteúdo

Guia de Início Rápido do Docker para Ultralytics

Visual do Pacote Docker Ultralytics

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

Versão da Imagem Docker Puxadas do Docker

O Que Você Irá Aprender

  • Configurando o Docker com suporte NVIDIA
  • Instalando imagens Docker da Ultralytics
  • Executando Ultralytics em um contêiner Docker com suporte a CPU ou GPU
  • Usando um Servidor de Exibição com Docker para Mostrar os Resultados da Detecção do Ultralytics
  • Montando diretórios locais no contêiner



Assista: Como Começar com o Docker | Uso do Pacote Python Ultralytics Dentro do Docker (Demonstração ao Vivo) 🎉


Pré-requisitos

  • Certifique-se de que o Docker esteja instalado no seu sistema. Caso contrário, você pode baixá-lo e instalá-lo no site do Docker.
  • Certifique-se de que seu sistema tenha uma GPU NVIDIA e os drivers NVIDIA instalados.

Configurando o Docker com Suporte NVIDIA

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

nvidia-smi

Instalando o NVIDIA Docker Runtime

Agora, vamos instalar o runtime NVIDIA Docker para habilitar o suporte a GPU em contêineres 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 Runtime NVIDIA com Docker

Execute docker info | grep -i runtime para garantir que nvidia apareça na lista de runtimes:

docker info | grep -i runtime

Instalando as Imagens Docker da Ultralytics

A Ultralytics oferece diversas imagens Docker otimizadas para várias plataformas e casos de uso:

  • Dockerfile: Imagem GPU, ideal para treinamento.
  • Dockerfile-arm64: Para arquitetura ARM64, adequado para dispositivos como Raspberry Pi.
  • Dockerfile-cpu: Versão somente para CPU para inferência e ambientes sem GPU.
  • Dockerfile-jetson-jetpack4: Otimizado para dispositivos NVIDIA Jetson executando NVIDIA JetPack 4.
  • Dockerfile-jetson-jetpack5: Otimizado para dispositivos NVIDIA Jetson executando NVIDIA JetPack 5.
  • Dockerfile-jetson-jetpack6: Otimizado para dispositivos NVIDIA Jetson executando NVIDIA JetPack 6.
  • Dockerfile-jupyter: Para desenvolvimento interativo usando JupyterLab no navegador.
  • Dockerfile-python: Ambiente Python mínimo para aplicações leves.
  • Dockerfile-conda: Inclui Miniconda3 e o pacote Ultralytics instalado via Conda.

Para baixar 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 em um Contêiner Docker

Veja como executar o contêiner Ultralytics Docker:

Usando apenas a CPU

# Run without GPU
sudo docker run -it --ipc=host $t

Usando 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 A flag atribui um pseudo-TTY e mantém o stdin aberto, permitindo que você interaja com o contêiner. A --ipc=host flag permite o compartilhamento do namespace IPC do host, essencial para compartilhar memória entre processos. A --gpus flag permite que o contêiner acesse as GPUs do host.

Nota sobre Acessibilidade de Arquivos

Para trabalhar com arquivos em sua máquina local dentro do contêiner, você pode usar 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

Substitua /path/on/host pelo caminho do diretório em sua máquina local e /path/in/container pelo caminho desejado dentro do contêiner Docker.

Executar aplicações com interface gráfica do usuário (GUI) em um Contêiner Docker

Altamente Experimental - O Usuário Assume Todos os Riscos

As instruções a seguir são experimentais. Compartilhar um socket X11 com um contêiner Docker apresenta potenciais riscos de segurança. Portanto, é recomendado testar esta solução apenas em um ambiente controlado. Para mais informações, consulte estes recursos sobre como usar xhost(1)(2).

O Docker é usado principalmente para conteinerizar aplicações 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 servidor gráfico você está usando atualmente. Execute este comando para descobrir:

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

A configuração de um servidor de exibição X11 ou Wayland está fora do escopo deste guia. Se o comando acima não retornar nada, então você precisará começar fazendo com que um deles funcione para o seu sistema antes de continuar.

Executando um Contêiner Docker com uma GUI

Exemplo

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

Se estiver a usar 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 a DISPLAY variável de ambiente para o ecrã do host, monta o socket X11 e mapeia o .Xauthority ficheiro para o contentor. O xhost +local:docker comando permite que o contentor Docker aceda ao servidor X11.

Para Wayland, use 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 a DISPLAY variável de ambiente para o ecrã do host, monta o socket Wayland e permite que o contentor Docker aceda ao servidor Wayland.

Usando Docker com uma GUI

Agora pode exibir aplicações gráficas dentro do seu contentor Docker. Por exemplo, pode executar o seguinte comando CLI para visualizar as previsões de um modelo YOLO11:

yolo predict model=yolo11n.pt show=True
Testes

Uma forma simples de validar se o grupo Docker tem acesso ao servidor X11 é executar um contentor com um programa GUI como xclock ou xeyes. Alternativamente, também pode 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. Definir esta variável de ambiente ativa a saída de informações de depuração, auxiliando no processo de resolução de problemas.

Ao terminar com o Docker GUI

Revogar acesso

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

xhost -local:docker
Quer ver os resultados da imagem diretamente no Terminal?

Consulte o seguinte guia sobre como visualizar os resultados da imagem usando um terminal


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

FAQ

Como configuro o Ultralytics com o Docker?

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

sudo docker pull ultralytics/ultralytics:latest

Para obter instruções detalhadas, consulte nosso Guia de Início Rápido do Docker.

Quais são os benefícios de usar imagens Docker da Ultralytics para projetos de machine learning?

Usar imagens Ultralytics Docker garante um ambiente consistente em diferentes máquinas, replicando o mesmo software e dependências. Isso é particularmente útil para colaborar entre equipes, executando modelos em vários hardwares e mantendo a reprodutibilidade. Para treinamento baseado em GPU, a Ultralytics fornece imagens Docker otimizadas, como Dockerfile para uso geral de GPU e Dockerfile-jetson para dispositivos NVIDIA Jetson. Explore Ultralytics Docker Hub para mais detalhes.

Como posso executar o Ultralytics YOLO em um contêiner Docker com suporte a GPU?

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

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

Este comando configura um contêiner Docker com acesso à GPU. Para obter detalhes adicionais, consulte o Guia de Início Rápido do Docker.

Como visualizo os resultados da previsão do YOLO em um contêiner Docker com um servidor de exibição?

Para visualizar os resultados da predição YOLO com uma GUI em um contêiner Docker, você precisa permitir que o Docker acesse seu servidor de exibição. Para sistemas que executam 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 que executam Wayland, use:

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 seção Executar aplicações com interface gráfica (GUI) em um contêiner Docker.

Posso montar diretórios locais no contêiner Docker da Ultralytics?

Sim, você pode montar diretórios locais no contêiner Ultralytics Docker usando a flag -v :

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

Substitua /path/on/host com o diretório na sua máquina local e /path/in/container com o caminho desejado dentro do contêiner. Esta configuração permite que você trabalhe com seus arquivos locais dentro do contêiner. Para obter mais informações, consulte o Nota sobre Acessibilidade de Arquivos secção.



📅 Criado há 1 ano ✏️ Atualizado há 2 meses

Comentários