𝗙𝗿𝗼𝗺 𝗖𝗵𝗮𝗼𝘀 𝘁𝗼 𝗖𝗼𝗻𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝘆: 𝗗𝗼𝗰𝗸𝗲𝗿 𝗳𝗼𝗿 𝗔𝗜 𝗪𝗼𝗿𝗸𝗳𝗹𝗼𝘄𝘀
Hai addestrato il modello. Il notebook funziona. La demo funziona.
Poi lo invii a un collega. Quaranta minuti dopo, ricevi un messaggio. Ha un errore CUDA. Torch non si importa. Ha la versione di Python sbagliata.
Dici le parole che ogni ingegnere teme: "Sul mio computer funziona".
"Sul mio computer funziona" è una confessione. Significa che il tuo codice dipende da elementi presenti sul tuo laptop che non hai documentato. Ti è sfuggita una versione di Python, una libreria di sistema o un toolkit CUDA.
Docker ferma tutto questo.
Una tipica web app ha poche dipendenze. I progetti di AI hanno molti livelli:
• Pacchetti Python: Torch, Transformers e Numpy. • Librerie di sistema: Libgl1 o ffmpeg. • Lo stack CUDA: Driver e toolkit. • Pesi del modello: file di grandi dimensioni non presenti nel tuo repository. • Versione di Python: 3.10 sul tuo laptop, 3.12 sul server.
Un file requirements.txt cattura solo un livello. Docker li cattura tutti.
Un'immagine Docker è uno snapshot di un computer. Include il sistema operativo, Python, i pacchetti e il tuo codice. Un container è una copia in esecuzione di quello snapshot.
Un container condivide il kernel della tua macchina. Si avvia in pochi secondi. Un'unica immagine funziona allo stesso modo sul tuo laptop e su un server GPU in cloud.
Usa un Dockerfile per scrivere la tua ricetta. Ecco un template per 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"]
Segui queste regole per evitare errori:
• Blocca le versioni (Pin). Usa torch==2.3.1 invece di solo torch. Questo garantisce la riproducibilità.
• Copia prima i requirements. Questo sfrutta la cache di Docker. Rende le build veloci saltando le reinstallazioni se il tuo codice cambia ma i pacchetti no.
• Usa i volumi per i pesi. Non inserire modelli da 5GB all'interno dell'immagine. Usa un volume per collegare la tua cartella locale al container.
• Un processo per container. Non inserire la tua API e il database in un unico container. Usa Docker Compose per collegarli.
Con Docker, al tuo collega servono solo due comandi:
git clone your-repo
docker compose up
Basta con il debugging degli errori di ambiente. Funziona su ogni macchina.
Source: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7
Community di apprendimento opzionale: https://t.me/GyaanSetuAi