Automazione del Retraining del Modello
Scorri per mostrare il menu
Man mano che nuovi dati diventano disponibili, il retraining dei modelli ML garantisce che le previsioni rimangano accurate e pertinenti — un passaggio fondamentale per mantenere le prestazioni del modello nel tempo. Con Apache Airflow, è possibile pianificare e orchestrare automaticamente questo retraining, eliminando le fasi manuali e assicurando la completa riproducibilità.
In questa configurazione, un DAG di Airflow definisce ogni fase del retraining: caricamento dei dati, preprocessamento, addestramento, valutazione e logging. Airflow gestisce ordine e pianificazione, mantenendo il modello aggiornato con il minimo sforzo.
Esempio: DAG di Retraining Automatico
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.python import PythonOperator
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import logging
def load_data():
iris = load_iris(as_frame=True)
df = iris.frame
df.to_csv('/tmp/iris.csv', index=False)
def train_and_evaluate():
df = pd.read_csv('/tmp/iris.csv')
X = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
pipeline = Pipeline([
('scaler', StandardScaler()),
('clf', RandomForestClassifier(n_estimators=50, random_state=42))
])
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
acc = accuracy_score(y_test, y_pred)
logging.info(f"Retrained model accuracy: {acc:.4f}")
default_args = {
'owner': 'airflow',
'start_date': datetime(2024, 1, 1),
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG(
'retrain_ml_model',
default_args=default_args,
schedule_interval='@daily',
catchup=False,
tags=['ml', 'retraining'],
)
load_data_task = PythonOperator(
task_id='load_data',
python_callable=load_data,
dag=dag,
)
train_and_evaluate_task = PythonOperator(
task_id='train_and_evaluate',
python_callable=train_and_evaluate,
dag=dag,
)
load_data_task >> train_and_evaluate_task
L'automazione del retraining aiuta a mitigare il model drift — il graduale calo delle prestazioni dovuto al cambiamento dei pattern nei dati. Con Airflow, le pipeline di retraining possono essere eseguite giornalmente, settimanalmente o dopo aggiornamenti dei dati, garantendo che il modello in produzione rimanga accurato e affidabile.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Automazione del Retraining del Modello
Man mano che nuovi dati diventano disponibili, il retraining dei modelli ML garantisce che le previsioni rimangano accurate e pertinenti — un passaggio fondamentale per mantenere le prestazioni del modello nel tempo. Con Apache Airflow, è possibile pianificare e orchestrare automaticamente questo retraining, eliminando le fasi manuali e assicurando la completa riproducibilità.
In questa configurazione, un DAG di Airflow definisce ogni fase del retraining: caricamento dei dati, preprocessamento, addestramento, valutazione e logging. Airflow gestisce ordine e pianificazione, mantenendo il modello aggiornato con il minimo sforzo.
Esempio: DAG di Retraining Automatico
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.python import PythonOperator
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import logging
def load_data():
iris = load_iris(as_frame=True)
df = iris.frame
df.to_csv('/tmp/iris.csv', index=False)
def train_and_evaluate():
df = pd.read_csv('/tmp/iris.csv')
X = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
pipeline = Pipeline([
('scaler', StandardScaler()),
('clf', RandomForestClassifier(n_estimators=50, random_state=42))
])
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
acc = accuracy_score(y_test, y_pred)
logging.info(f"Retrained model accuracy: {acc:.4f}")
default_args = {
'owner': 'airflow',
'start_date': datetime(2024, 1, 1),
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG(
'retrain_ml_model',
default_args=default_args,
schedule_interval='@daily',
catchup=False,
tags=['ml', 'retraining'],
)
load_data_task = PythonOperator(
task_id='load_data',
python_callable=load_data,
dag=dag,
)
train_and_evaluate_task = PythonOperator(
task_id='train_and_evaluate',
python_callable=train_and_evaluate,
dag=dag,
)
load_data_task >> train_and_evaluate_task
L'automazione del retraining aiuta a mitigare il model drift — il graduale calo delle prestazioni dovuto al cambiamento dei pattern nei dati. Con Airflow, le pipeline di retraining possono essere eseguite giornalmente, settimanalmente o dopo aggiornamenti dei dati, garantendo che il modello in produzione rimanga accurato e affidabile.
Grazie per i tuoi commenti!