𝗙𝗿𝗼𝗺 𝗖𝗵𝗮𝗼𝘀 𝘁𝗼 𝗖𝗼𝗻𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝘆: 𝗗𝗼𝗰𝗸𝗲𝗿 𝗳𝗼𝗿 𝗔𝗜 𝗪𝗼𝗿𝗸𝗳𝗹𝗼𝘄𝘀

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