𝗗𝗼 𝗖𝗮𝗼𝘀 à 𝗖𝗼𝗻𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝗶𝗮: 𝗗𝗼𝗰𝗸𝗲𝗿 𝗽𝗮𝗿𝗮 𝗙𝗹𝘂𝘅𝗼𝘀 𝗱𝗲 𝗧𝗿𝗮𝗯𝗮𝗹𝗵𝗼 𝗱𝗲 𝗜𝗔
Você treinou o modelo. O notebook funciona. A demonstração funciona.
Então você o envia para um colega de equipe. Quarenta minutos depois, você recebe uma mensagem. Ele tem um erro de CUDA. O Torch não importa. Ele tem a versão errada do Python.
Você diz as palavras que todo engenheiro teme: "Na minha máquina funciona."
"Na minha máquina funciona" é uma confissão. Significa que seu código depende de coisas no seu laptop que você não documentou. Você esqueceu uma versão do Python, uma biblioteca do sistema ou um toolkit do CUDA.
O Docker impede isso.
Um aplicativo web típico tem poucas dependências. Projetos de IA têm muitas camadas:
• Pacotes Python: Torch, Transformers e Numpy. • Bibliotecas do sistema: Libgl1 ou ffmpeg. • A stack CUDA: Drivers e toolkits. • Pesos do modelo: Arquivos grandes que não estão no seu repositório. • Versão do Python: 3.10 no seu laptop, 3.12 no servidor.
Um arquivo requirements.txt captura apenas uma camada. O Docker captura todas elas.
Uma imagem Docker é um snapshot de um computador. Ela inclui o SO, Python, pacotes e seu código. Um container é uma cópia em execução desse snapshot.
Um container compartilha o kernel da sua máquina. Ele inicia em segundos. Uma imagem roda da mesma forma no seu laptop e em um servidor de GPU na nuvem.
Use um Dockerfile para escrever sua receita. Aqui está um template para PyTorch:
FROM python:3.11-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libgl1 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "predict.py"]
Siga estas regras para evitar erros:
• Fixe suas versões. Use torch==2.3.1 em vez de apenas torch. Isso garante a reprodutibilidade. • Copie os requirements primeiro. Isso utiliza o cache do Docker. Isso torna os builds rápidos, pulando reinstalações se o seu código mudar, mas seus pacotes não. • Use volumes para os pesos. Não coloque modelos de 5GB dentro da imagem. Use um volume para vincular sua pasta local ao container. • Um processo por container. Não coloque sua API e seu banco de dados em um único container. Use o Docker Compose para vinculá-los.
Com o Docker, seu colega de equipe só precisa de dois comandos:
git clone your-repo
docker compose up
Chega de depurar erros de ambiente. Funciona em qualquer máquina.
Source: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7
Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi