Salta 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, visita o reposit√≥rio do Docker Ultralytics no Docker Hub.

Vers√£o da imagem do Docker Docker Pulls

O que vais aprender

  • Configura o Docker com suporte para NVIDIA
  • Instalar imagens do Ultralytics Docker
  • Executar Ultralytics num contentor Docker com suporte para CPU ou GPU
  • Usando um servidor de exibi√ß√£o com Docker para mostrar os resultados da dete√ß√£o de Ultralytics
  • Montagem de direct√≥rios locais no contentor

Pré-requisitos

  • Certifica-te de que o Docker est√° instalado no teu sistema. Se n√£o estiver, podes transferi-lo e instal√°-lo a partir do site do Docker.
  • Certifica-te de que o teu sistema tem um controlador NVIDIA GPU e NVIDIA instalados.

Configura o Docker com o suporte NVIDIA

Primeiro, verifica se os controladores NVIDIA est√£o corretamente instalados, executando:

nvidia-smi

Instalando o NVIDIA Docker Runtime

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

Verifica o tempo de execução de NVIDIA com o Docker

Corre 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: GPU imagem, 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 obteres 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

Executa Ultralytics no Docker Container

Vê aqui como executar o contentor Docker Ultralytics :

Utilizando apenas o CPU

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

Utilizar 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-te 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.

Executa Ultralytics no Docker Container

Vê aqui como executar o contentor Docker Ultralytics :

Utilizando apenas o CPU

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

Utilizar 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-te 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 na tua m√°quina local dentro do contentor, podes utilizar os 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

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

Executa 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. Partilhar um socket X11 com um contentor Docker apresenta potenciais riscos de seguran√ßa. Portanto, √© recomend√°vel testar essa solu√ß√£o apenas em um ambiente controlado. Para obter mais informa√ß√Ķes, consulta estes recursos sobre como utilizar 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ás a utilizar atualmente. Executa 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 retornar nada, ent√£o ter√°s de come√ßar por p√īr qualquer um deles a funcionar no teu sistema antes de continuar.

Executando um Docker Container com uma GUI

Exemplo

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

Se estiveres a utilizar o X11, podes 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, utiliza 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 a tela do host, monta o soquete Wayland e permite que o contêiner Docker acesse o servidor Wayland.

Usando o Docker com uma GUI

Agora podes apresentar aplica√ß√Ķes gr√°ficas dentro do teu contentor Docker. Por exemplo, podes executar o seguinte comandoCLI para visualizar as previs√Ķes de um modeloYOLOv8 :

yolo predict model=yolov8n.pt show=True
Testes

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. Alternativamente, tamb√©m podes instalar estes programas no contentor Ultralytics Docker para testar o acesso ao servidor X11 do teu servidor de visualiza√ß√£o GNU-Linux. Se tiveres algum problema, considera 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 terminares com a GUI do Docker

Revogar o acesso

Em ambos os casos, não te esqueças de revogar o acesso do grupo Docker quando terminares.

xhost -local:docker
Queres ver os resultados das imagens diretamente no Terminal?

Consulta o seguinte guia para ver os resultados da imagem utilizando um terminal


Parabéns! Agora estás preparado para usar Ultralytics com o Docker e pronto para tirar partido das suas poderosas capacidades. Para métodos de instalação alternativos, fica à 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 certifica-te de que o Docker está instalado no teu sistema. Se tiveres um NVIDIA GPU , instala o tempo de execução do Docker NVIDIA para ativar o suporte GPU . Em seguida, extrai a imagem mais recente do Ultralytics Docker do Docker Hub usando o seguinte comando:

sudo docker pull ultralytics/ultralytics:latest

Para obter etapas detalhadas, consulta 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?

Usando Ultralytics imagens 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. Explora Ultralytics Docker Hub para mais pormenores.

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

Primeiro, certifica-te de que o tempo de execução do NVIDIA Docker está instalado e configurado. Em seguida, usa o seguinte comando para executar Ultralytics YOLO com o suporte de GPU :

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

Esse comando configura um contêiner do 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 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, utiliza:

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

Podes encontrar mais informa√ß√Ķes na sec√ß√£o Executar aplica√ß√Ķes de interface gr√°fica do utilizador (GUI) num contentor Docker.

Posso montar directórios locais no contentor Docker Ultralytics ?

Sim, podes montar directórios locais no contentor Docker Ultralytics utilizando o comando -v bandeira:

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

Substitui /path/on/host com o diret√≥rio na tua m√°quina local e /path/in/container com o caminho desejado dentro do contentor. Esta configura√ß√£o permite-te trabalhar com os teus ficheiros locais dentro do contentor. Para mais informa√ß√Ķes, consulta a sec√ß√£o relevante sobre montagem de direct√≥rios locais.



Criado em 2023-11-12, Atualizado em 2024-07-05
Autores: glenn-jocher (7), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

Coment√°rios