PAD-75.34: Standardizzazione Ambiente PyTorch GPU

Obiettivo: Garantire che l’ambiente di sviluppo e produzione supporti l’accelerazione GPU (CUDA) su macchine dotate di NVIDIA, mantenendo la compatibilità CPU per gli altri, attraverso una gestione delle dipendenze riproducibile.

Stato: 🔴 Da Fare


1. Analisi del Problema

  • Attualmente torch viene installato da PyPI di default, che spesso serve la versione CPU-only per Linux/Windows per risparmiare banda, o versioni CUDA non allineate.
  • L’installazione manuale (pip install --index-url ...) funziona localmente ma viola il principio di riproducibilità (Regola 5).
  • pip-tools fatica a gestire indici multipli (PyPI standard + PyTorch Index) nello stesso file requirements.in.

2. Strategia Tecnica

Separare le dipendenze “Core” da quelle “Compute-Intensive” o usare flag specifici per pip-compile.

3. Piano d’Azione (Checklist)

Fase A: Pulizia e Definizione (DevOps)

  • Creare requirements-torch.in: Un file separato che contiene solo torch, torchvision, torchaudio.
  • Aggiornare requirements.in: Rimuovere i riferimenti a torch da qui.

Fase B: Generazione Lockfile Multi-Index

  • Script di Compilazione Custom: Creare uno script (es. scripts/compile_deps.ps1) che esegue:
    1. pip-compile requirements.in requirements.txt
    2. pip-compile requirements-torch.in --find-links https://download.pytorch.org/whl/cu124 requirements-torch.txt
    3. Fonde i due file o li mantiene separati per l’installazione sequenziale.

Fase C: Aggiornamento CI/CD e Build

  • Aggiornare build_portable.py: Assicurarsi che PyInstaller includa le DLL di CUDA (che sono pesanti) o fornisca istruzioni per scaricarle.
  • Test su Macchina Pulita: Verificare che pip install -r requirements-full.txt installi la versione CUDA correttamente su un PC vergine.

Fase D: Documentazione

  • Aggiornare CONTRIBUTING.md con le istruzioni specifiche per il setup dell’ambiente AI (che richiede questo passaggio extra).

Salva questo PAD nei tuoi appunti o crea un file docs/pad/PAD-001-pytorch-gpu.md se preferisci archiviarlo nel progetto.