Guia de início rápido do Docker para Ultralytics
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.
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:
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:
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
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
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:
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 :
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.
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:
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 :
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.