Contesto e Problema
Durante la configurazione dell’ambiente di sviluppo è emerso un conflitto architetturale critico. Lo stack tecnologico del progetto si basa su due ecosistemi con requisiti di versione Python contrastanti:
- Ecosistema AI Tradizionale: Librerie fondamentali per il progetto, come
prophet, hanno una stabilità consolidata e una compatibilità testata con Python 3.10. - Libreria di Forecasting Core: La libreria
timesfm, identificata come una funzionalità strategica e non negoziabile, richiede esplicitamente Python >= 3.11 per poter utilizzare la sua API moderna (from_pretrained). Le versioni precedenti, compatibili con Python 3.10, sono risultate inaccessibili o incompatibili con altre dipendenze chiave (pandas v2.x,alpaca-py).
Questa dicotomia ha creato un vicolo cieco: un ambiente basato su Python 3.10 escluderebbe una funzionalità core del prodotto, mentre un ambiente basato su Python 3.11 introduce un rischio per la stabilità di altre componenti essenziali.
Decisione Presa
Il progetto FIRE standardizzerà il proprio ambiente di sviluppo e produzione su Python 3.11.
Questa decisione è guidata dal requisito di business che TimesFM è una funzionalità fondamentale e non negoziabile per la visione del prodotto. Poiché l’unica versione funzionale e accessibile di timesfm impone questo vincolo, l’intera infrastruttura del progetto deve allinearsi ad esso.
Si accetta consapevolmente il rischio che altre librerie possano presentare instabilità, e i relativi problemi verranno affrontati e risolti caso per caso attraverso una gestione attenta delle dipendenze.
Conseguenze
Positive
- Abilitazione di una Feature Core: La decisione sblocca lo sviluppo e permette l’integrazione della versione moderna di
timesfm, una pietra miliare del prodotto. - Modernizzazione dello Stack: L’adozione di Python 3.11 consente al progetto di beneficiare delle sue ottimizzazioni prestazionali (“Faster CPython”) e delle nuove funzionalità del linguaggio.
- Chiarezza Architetturale: Viene stabilita una regola chiara e inequivocabile per tutte le future decisioni sulle dipendenze, che dovranno essere compatibili con Python 3.11.
Negative
- Aumento del Rischio di Instabilità: Il progetto potrebbe affrontare un maggior numero di conflitti di dipendenza o bug a runtime legati a librerie non ancora pienamente mature per Python 3.11.
- Maggiore Sforzo di Manutenzione: Sarà necessario un monitoraggio costante e attento del file
requirements.txt. La strategia di “risoluzione minimale”, affidando apipil compito di trovare una combinazione valida di versioni, diventa un processo fondamentale per la stabilità dell’ambiente.
Alternative Considerate
Soluzione: Standardizzare su Python 3.10 (Scartata)
- Descrizione: Mantenere Python 3.10 come versione di riferimento per massimizzare la stabilità delle librerie AI tradizionali.
- Pro: Ambiente più stabile e prevedibile per la maggior parte dello stack esistente.
- Contro (Motivo della Scelta di Scartarla): Questa opzione renderebbe impossibile implementare la funzionalità
timesfmcome richiesto, bloccando di fatto un requisito di business fondamentale. La perdita di questa feature chiave è stata considerata un costo inaccettabile.