Riproducibilità: seed, configurazioni e ambienti
random.seed(), np.random.seed(), file di configurazione YAML e blocco delle versioni dell’ambiente con pip freeze.
Riproducibilità: seed, configurazioni e ambienti è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Perché la riproducibilità
Un esperimento che non è possibile riprodurre non è scienza. Se eseguendo due volte lo stesso codice si ottengono risultati diversi, non si possono considerare affidabili i confronti né eseguire il debug delle regressioni.
Tre pilastri rendono riproducibile il lavoro con l'IA: seed casuali, configurazioni esternalizzate e ambienti con versioni bloccate.
Fonti di casualità
La casualità può introdursi da molte fonti: mescolamento dei dati, suddivisioni train/test, inizializzazione dei pesi, dropout e augmentation. Ognuna può usare un generatore casuale diverso.
Per riprodurre un'esecuzione, deve inizializzare con un seed ogni generatore utilizzato dal codice.
Impostare il seed per Python e NumPy
Fissi i generatori della libreria standard e di NumPy con un unico seed scelto (42 è una convenzione comune).
import random
import numpy as np
random.seed(42)
np.random.seed(42)Seed dei framework
I framework di machine learning hanno generatori propri. Imposti il seed anche per questi e lo passi alle funzioni che accettano random_state.
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)
# torch.manual_seed(42) / tf.random.set_seed(42) for deep learningUn helper set_seed
Raccolga tutta la logica per impostare i seed in un'unica funzione e la chiami all'inizio di ogni script, così non dimenticherà mai un generatore.
import random, os
import numpy as np
def set_seed(seed=42):
random.seed(seed)
np.random.seed(seed)
os.environ["PYTHONHASHSEED"] = str(seed)
set_seed(42)Gli iperparametri hardcoded sono una trappola
Distribuire 0.01, 200 e 0.2 nel codice rende difficile tenere traccia delle esecuzioni e modificarle. Nell'esecuzione con il punteggio migliore, il learning rate era 0.01 o 0.001?
La soluzione: inserire tutti gli iperparametri in un file di configurazione, non nel codice.
File di configurazione YAML
YAML è un formato leggibile dalle persone, ideale per i file di configurazione. Un solo file raccoglie tutte le impostazioni di un'esecuzione.
# config.yaml
seed: 42
model:
name: random_forest
n_estimators: 200
max_depth: 8
training:
test_size: 0.2
data:
path: data/processed/train.csvLeggere YAML con PyYAML
Carichi la configurazione all'inizio dello script con PyYAML. Ora il codice legge i valori da cfg invece di codificarli direttamente.
import yaml
with open("config.yaml") as f:
cfg = yaml.safe_load(f)
print(cfg["model"]["n_estimators"]) # 200
set_seed(cfg["seed"])Passare la configurazione al codice
Le funzioni ricevono la configurazione, o i suoi valori, come argomenti. Per eseguire un nuovo esperimento, modifica il file YAML, non il codice Python.
from sklearn.ensemble import RandomForestClassifier
m = cfg["model"]
model = RandomForestClassifier(
n_estimators=m["n_estimators"],
max_depth=m["max_depth"],
random_state=cfg["seed"],
)Bloccare l'ambiente
Versioni diverse delle librerie producono risultati diversi. Blocchi le versioni esatte, così altre persone e il suo futuro ambiente installeranno lo stesso stack.
# requirements.txt with pinned versions
pandas==2.2.0
scikit-learn==1.4.0
numpy==1.26.4
# generate it with:
# pip freeze > requirements.txtAmbienti virtuali
Isoli ogni progetto, in modo che le versioni bloccate non entrino in conflitto con quelle degli altri progetti. Crei e attivi un ambiente virtuale, quindi installi i pacchetti dal file con le versioni bloccate.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtVerifica rapida: iperparametri
Vuole provare dieci combinazioni diverse di iperparametri e mantenere ogni esecuzione riproducibile e tracciabile.
Riepilogo: riproducibilità
Ha imparato i tre pilastri dell'IA riproducibile:
- Seed:
random.seed(42),np.random.seed(42), i seed dei framework erandom_state - Configurazioni: tutti gli iperparametri in
config.yaml, caricati con PyYAML - Ambienti:
requirements.txtcon versioni bloccate, all'interno di un ambiente virtuale
Modifichi la configurazione, non il codice. Prossimo argomento: buone pratiche per i notebook Jupyter.
Domande Frequenti
La lezione «Riproducibilità: seed, configurazioni e ambienti» è gratuita?
Sì — il testo completo di «Riproducibilità: seed, configurazioni e ambienti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Riproducibilità: seed, configurazioni e ambienti»?
random.seed(), np.random.seed(), file di configurazione YAML e blocco delle versioni dell’ambiente con pip freeze. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Riproducibilità: seed, configurazioni e ambienti»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Struttura professionale delle directory di un progetto IA
- Git per progetti di IA
- Riproducibilità: seed, configurazioni e ambienti
- Buone pratiche per i notebook Jupyter