0Pricing
Learn AI with Python · Lezione

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 learning

Un 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.csv

Leggere 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.txt

Ambienti 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.txt

Verifica 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 e random_state
  • Configurazioni: tutti gli iperparametri in config.yaml, caricati con PyYAML
  • Ambienti: requirements.txt con 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

  1. Struttura professionale delle directory di un progetto IA
  2. Git per progetti di IA
  3. Riproducibilità: seed, configurazioni e ambienti
  4. Buone pratiche per i notebook Jupyter
← Torna a Learn AI with Python