Chapitre 1 : Pipelines d'ingestion de données
Introduction
L'ingestion de données est la base de tout système ML. Ce chapitre couvre la construction de pipelines de données fiables et évolutifs en utilisant des outils d'orchestration modernes.
Apache Airflow pour les pipelines ML
Structure de base du DAG
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'ml-team',
'depends_on_past': False,
'email_on_failure': True,
'email': ['ml-alerts@company.com'],
'retries': 3,
'retry_delay': timedelta(minutes=5),
}
with DAG(
'ml_data_pipeline',
default_args=default_args,
description='Daily ML data ingestion pipeline',
schedule_interval='0 6 * * *', # Daily at 6 AM
start_date=datetime(2024, 1, 1),
catchup=False,
tags=['ml', 'data', 'production'],
) as dag:
extract = PythonOperator(
task_id='extract_data',
python_callable=extract_from_source,
)
transform = PythonOperator(
task_id='transform_data',
python_callable=transform_data,
)
validate = PythonOperator(
task_id='validate_data',
python_callable=run_data_validation,
)
load = PythonOperator(
task_id='load_to_feature_store',
python_callable=load_features,
)
extract >> transform >> validate >> load
Traitement en flux vs par lots
| Aspect | Traitement par lots | Traitement en flux |
|---|---|---|
| Latence | Minutes à heures | Millisecondes à secondes |
| Cas d'utilisation | Données d'entraînement, rapports | Fonctionnalités en temps réel |
| Outils | Spark, Airflow | Kafka, Flink |
| Complexité | Moindre | Plus élevée |
Points clés à retenir
Résumé
- Utilisez des outils d'orchestration comme Airflow pour des pipelines complexes
- Choisissez entre traitement par lots et en flux selon les exigences de latence
- Implémentez l'idempotence pour des ré-exécutions fiables
- Surveillez la santé du pipeline avec des alertes et des tableaux de bord
Suivant : Chapitre 2 : Ingénierie des fonctionnalités à grande échelle