From ee9fe1bca21b55b461f9adc436eeaaaa0a73ca80 Mon Sep 17 00:00:00 2001 From: Alexis Bruneteau Date: Tue, 23 Sep 2025 18:29:32 +0200 Subject: [PATCH] init --- Rapport2.pdf | Bin 0 -> 92505 bytes Rapport2.typ | 445 +++++++++++++++++++++++++++++++++++++++++++ images/pipeline2.svg | 3 + 3 files changed, 448 insertions(+) create mode 100644 Rapport2.pdf create mode 100644 Rapport2.typ create mode 100644 images/pipeline2.svg diff --git a/Rapport2.pdf b/Rapport2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fd6f2cfe0918e8e40f732a3434b3158a24c5d2ac GIT binary patch literal 92505 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 literal 0 HcmV?d00001 diff --git a/Rapport2.typ b/Rapport2.typ new file mode 100644 index 0000000..8106128 --- /dev/null +++ b/Rapport2.typ @@ -0,0 +1,445 @@ +// Using native Typst table instead of tablex for compatibility + +#set document(title: "Projet CS:GO - Pipeline MLOps", author: "Équipe MLOps") +#set page(margin: 2cm, numbering: "1") +#set text(size: 11pt) +#set heading(numbering: "1.1") + +#align(center)[ + #text(18pt, weight: "bold")[Projet CS:GO Esports Intelligence Platform] + #v(0.5cm) + #text(14pt)[Pipeline MLOps et Stratégie de Monitoring] + #v(0.3cm) + #line(length: 100%) + #v(0.5cm) + + #grid( + columns: (1fr, 1fr), + [*Équipe : Paul Roost, Axelle Desthombes, Alexis Bruneteau* ], [*Date :* #datetime.today().display()] + ) + + #v(0.2cm) + *Dataset :* CS:GO Professional Matches (Kaggle - 25K+ matches) \ + *Objectif :* Prédiction des résultats de matchs et optimisation des stratégies esports +] + +#v(1cm) + += Atelier 1 : Pipeline du Fil Rouge + +== Architecture Générale du Pipeline + +#figure( + image("images/pipeline2.svg", width: 60%), + caption: [Architecture complète du pipeline MLOps CS:GO] +) + + + +== Étapes Détaillées du Pipeline + +=== Collecte et Ingestion des Données + +*Sources de données :* +- *HLTV.org* : Résultats historiques, classements équipes +- *Steam API* : Données joueurs en temps réel +- *Tournament APIs* : Calendriers, formats de compétition + +*Pipeline d'ingestion automatisé avec Apache Airflow :* + +```python +@dag(schedule_interval="@hourly", start_date=datetime(2024,1,1)) +def csgo_data_ingestion(): + + extract_hltv_matches = PythonOperator( + task_id='extract_hltv', + python_callable=scrape_hltv_matches + ) + + validate_data = PythonOperator( + task_id='validate_raw_data', + python_callable=validate_match_schema + ) + + store_s3 = PythonOperator( + task_id='store_to_s3', + python_callable=upload_to_s3 + ) + + extract_hltv_matches >> validate_data >> store_s3 +``` + +=== Feature Engineering Multi-Niveaux + +#table( + columns: (2fr, 3fr), + stroke: 0.5pt, + [*Catégorie*], [*Features*], + [*Team-level*], [ + • `recent_form_10_matches` - Ratio W/L récent \ + • `map_pool_strength` - Win rate par map \ + • `clutch_success_rate` - Performance clutch \ + • `eco_round_conversion` - Gestion économique + ], + [*Context*], [ + • `tournament_tier` - Prestige de l'événement \ + • `prize_pool_amount` - Facteur de pression \ + • `head_to_head_record` - Historique direct \ + • `current_game_patch` - Version meta game + ], + [*Live*], [ + • `current_score_difference` - Score en cours \ + • `momentum_last_5_rounds` - Élan récent \ + • `economy_advantage` - Avantage économique + ] +) + +=== Entraînement Multi-Target + +Architecture d'apprentissage multitâche avec PyTorch : + +```python +class CSGOPredictor(nn.Module): + def __init__(self, input_dim): + super().__init__() + self.shared_layers = nn.Sequential( + nn.Linear(input_dim, 256), + nn.ReLU(), + nn.Dropout(0.3), + nn.Linear(256, 128) + ) + + # Têtes spécialisées par tâche + self.match_winner = nn.Linear(128, 2) # Classification binaire + self.final_score = nn.Linear(128, 2) # Régression scores + self.total_maps = nn.Linear(128, 4) # Nombre de maps + + def forward(self, x): + shared_repr = self.shared_layers(x) + return { + 'match_winner': self.match_winner(shared_repr), + 'final_score': self.final_score(shared_repr), + 'total_maps': self.total_maps(shared_repr) + } +``` + +== Automatisation et Points de Contrôle + +=== Stratégie d'Automatisation + +#table( + columns: (2fr, 1fr, 3fr), + stroke: 0.5pt, + [*Étape*], [*Status*], [*Justification*], + [*Ingestion données*], [AUTO], [Nouveaux matchs quotidiens, obsolescence rapide], + [*Feature Engineering*], [AUTO], [Features dépendent de données temps-réel], + [*Model Retraining*], [AUTO], [Meta game évolue (patches, transferts)], + [*Deployment*], [AUTO], [Évite erreurs humaines, rollback rapide], + [*Model Selection*], [MANUEL], [Décisions business complexes nécessitant expertise] +) + +=== Points de Contrôle Critiques + +*Validation des Données :* +```python +def validate_match_data(df): + """Validation avant feature engineering""" + checks = [ + ('schema_compliance', validate_schema(df)), + ('completeness', check_missing_values(df, threshold=0.05)), + ('consistency', validate_team_names(df)), + ('freshness', check_data_age(df, max_hours=24)), + ('volume', validate_daily_match_count(df, min_matches=50)) + ] + + for check_name, result in checks: + if not result.passed: + raise DataValidationError(f"{check_name} failed") +``` + +*Validation des Performances :* +```python +def validate_model_performance(model, validation_data): + """Validation avant déploiement""" + metrics = evaluate_model(model, validation_data) + + # Seuils minimaux + assert metrics['accuracy'] > 0.65, "Accuracy insuffisante" + assert metrics['roi_betting'] > 1.05, "ROI non profitable" + assert metrics['upset_detection'] > 0.20, "Détection upsets faible" + + return True +``` + +=== Difficultés Techniques et Solutions + +*Défi 1 : Concept Drift Extrême* + +Les mises à jour du jeu modifient significativement les stratégies et l'équilibre, ce qui peut rendre les modèles existants moins performants. + +*Solution :* Détection automatisée de drift + retraining d'urgence +```python +def detect_meta_shift(recent_matches, baseline): + """Détecte changements post-patch""" + map_rates = calculate_map_win_rates(recent_matches) + baseline_rates = baseline['map_win_rates'] + + for map_name in map_rates: + ks_stat, p_value = ks_2samp(map_rates[map_name], + baseline_rates[map_name]) + if p_value < 0.01: # Drift significatif + return True + return False +``` + +*Défi 2 : Cold Start Problem* + +Les nouvelles équipes ou changements de composition ne disposent pas d'historique suffisant pour l'entraînement. + +*Solution :* Transfer learning via embeddings joueurs +```python +def handle_cold_start_team(roster, player_db): + """Prédictions via similarité joueurs""" + team_embedding = [player_db.get_embedding(p.id) for p in roster] + similar_teams = find_similar_teams(team_embedding, top_k=5) + return weighted_prediction_from_similar(similar_teams) +``` + +#pagebreak() + += Atelier 2 : Expériences et Monitoring + +== Tracking des Expériences avec MLflow + +=== Configuration et Logging Structuré + +```python +mlflow.set_tracking_uri("http://mlflow-server:5000") +mlflow.set_experiment("csgo-match-prediction") + +def train_and_log_experiment(config): + with mlflow.start_run(run_name=f"csgo-v{config.version}"): + + # Hyperparamètres + mlflow.log_params({ + "model_type": config.model_type, + "learning_rate": config.lr, + "batch_size": config.batch_size, + "data_version": config.data_version + }) + + # Métriques par époque + for epoch in range(config.epochs): + train_loss = train_one_epoch(model, train_loader) + val_metrics = evaluate_model(model, val_loader) + + mlflow.log_metrics({ + "train_loss": train_loss, + "val_accuracy": val_metrics['accuracy'], + "betting_roi": val_metrics['roi'], + "upset_detection": val_metrics['upset_rate'] + }, step=epoch) + + # Artefacts finaux + mlflow.pytorch.log_model(model, "model") + mlflow.log_artifacts("evaluation_plots/") +``` + +=== Métriques Trackées + +#table( + columns: (2fr, 3fr), + stroke: 0.5pt, + [*Catégorie*], [*Métriques*], + [*Performance ML*], [ + • Accuracy, Precision, Recall, F1-Score \ + • ROC-AUC, Calibration Error \ + • Performance par segment (tier tournoi) + ], + [*Business*], [ + • ROI betting, Profit/Loss \ + • Sharpe Ratio, Upset Detection Rate \ + • User Engagement, Revenue Impact + ], + [*Computational*], [ + • Training Time, Inference Latency \ + • Model Size, Memory Usage \ + • API Response Time + ] +) + +== Stratégie de Monitoring Complète + +=== Métriques de Surveillance Multi-Niveaux + +*Surveillance de la qualité des données :* +```python +class DataMonitoring: + def monitor_data_quality(self, new_batch): + metrics = {} + + # Volume et couverture + metrics['daily_match_count'] = len(new_batch) + metrics['team_coverage'] = new_batch['team_name'].nunique() + + # Qualité + metrics['missing_rate'] = new_batch.isnull().mean().mean() + metrics['duplicates'] = new_batch.duplicated().sum() + + # Drift distribution + for col in ['team_ranking', 'match_duration']: + drift = calculate_drift_score(new_batch[col], baseline[col]) + metrics[f'{col}_drift'] = drift + + return metrics +``` + +*Model Performance Monitoring :* +```python +def monitor_model_performance(predictions, actuals): + """Monitoring performance temps-réel""" + rolling_metrics = {} + + # Fenêtres glissantes + for window in [1, 7, 30]: # jours + recent = get_recent_data(window) + rolling_metrics[f'accuracy_{window}d'] = accuracy_score( + recent['actual'], recent['predicted'] + ) + rolling_metrics[f'roi_{window}d'] = calculate_roi( + recent['predictions'], recent['outcomes'] + ) + + return rolling_metrics +``` + +=== Système d'Alertes Intelligent + +#table( + columns: (1fr, 2fr, 2fr), + stroke: 0.5pt, + [*Sévérité*], [*Seuils*], [*Actions*], + [*CRITIQUE*], [ + • Accuracy 7j \< 60% \ + • ROI 7j \< 100% \ + • API errors \> 5% + ], [ + • PagerDuty + Slack \ + • Email équipe oncall \ + • Rollback automatique + ], + [*WARNING*], [ + • Accuracy trending ↓ \ + • Concept drift p\<0.05 \ + • Latency \> 300ms + ], [ + • Slack \#alerts \ + • Email ML team \ + • Investigation requise + ], + [*INFO*], [ + • Nouveaux tournaments \ + • Performance updates \ + • System health + ], [ + • Slack \#monitoring \ + • Dashboard updates + ] +) + +=== Dashboards et Rapports + +*Dashboard Temps-Réel (Grafana) :* + +- *Model Performance* : Accuracy, ROI, Calibration trends +- *Data Pipeline Health* : Volume, freshness, quality scores +- *API Performance* : Latency P95, request rate, error rate +- *Business Metrics* : Revenue impact, user engagement + +*Rapports Hebdomadaires Automatisés :* + +```python +class WeeklyReportGenerator: + def generate_performance_report(self, week_start, week_end): + sections = [ + self.executive_summary(), # KPIs clés + self.model_performance(), # Analyse détaillée + self.business_impact(), # Valeur générée + self.technical_health(), # Infrastructure + self.recommendations() # Actions recommandées + ] + return self.compile_html_report(sections) +``` + +== Architecture de Monitoring Production + +=== Alerting Multi-Canal + +```python +class AlertManager: + def __init__(self): + self.channels = { + 'slack': SlackNotifier(SLACK_WEBHOOK), + 'email': EmailNotifier(EMAIL_CONFIG), + 'pagerduty': PagerDutyNotifier(PAGERDUTY_KEY) + } + + def send_alert(self, alert): + if alert['severity'] == 'CRITICAL': + // Alertes critiques sur tous les canaux + self.channels['pagerduty'].send(alert) + self.channels['slack'].send_critical(alert) + self.channels['email'].send_oncall(alert) + elif alert['severity'] == 'WARNING': + // Warnings vers Slack et email + self.channels['slack'].send_warning(alert) + self.channels['email'].send_team(alert) +``` + +=== Runbooks d'Incident + +*Alerte Critique : Accuracy < 60%* + +1. *Actions Immédiates (0-15min)* + - Vérifier qualité des données récentes + - Identifier changements meta/tournois + - Rollback si accuracy < 55% + +2. *Investigation (15-60min)* + - Analyse drift sur données récentes + - Comparaison prédictions vs résultats + - Validation pipeline features + +3. *Résolution (1-4h)* + - Retraining d'urgence si drift détecté + - Fix pipeline si problème data quality + - Rollback si problème infrastructure + += Conclusion + +L'architecture MLOps développée pour ce projet CS:GO présente plusieurs caractéristiques importantes : + +*Architecture de production robuste :* +- Apprentissage multi-tâches permettant des prédictions variées selon les besoins métier +- Service en temps réel respectant les contraintes de latence +- Gestion de la dérive conceptuelle liée à l'évolution du meta-jeu +- Surveillance complète des données, modèles et métriques business + +*Mesure de la valeur métier :* +- Suivi du retour sur investissement pour les applications de paris et fantasy leagues +- Métriques d'engagement utilisateur pour optimiser la rétention +- Impact sur le chiffre d'affaires pour justifier les investissements + +*Fiabilité opérationnelle :* +- Retour en arrière automatique en cas de dégradation des performances +- Système d'alertes multi-canaux pour une réaction rapide +- Procédures documentées pour la résolution d'incidents +- Plan de continuité d'activité pour les événements critiques + +Ce travail démontre l'application des principes MLOps modernes à un domaine spécialisé, en mettant l'accent sur la création de valeur métier et la fiabilité opérationnelle. + +#align(center)[ + #line(length: 50%) + #v(0.3cm) + *Équipe MLOps - Projet CS:GO Intelligence Platform* +] \ No newline at end of file diff --git a/images/pipeline2.svg b/images/pipeline2.svg new file mode 100644 index 0000000..1f7bdab --- /dev/null +++ b/images/pipeline2.svg @@ -0,0 +1,3 @@ + + +

INGEST

CACHE

PROCESS

VALIDATE

TRAIN

TRACK

REGISTER

QUALITY CHECK

BUILD

DEPLOY

RELEASE

MONITOR

ALERT

SERVE

FEEDBACK

RETRAIN

🗃️ Data SourcesHLTV.org Steam APITournament Feeds☁️ Data LakeAmazon S3Raw match results Feature StoreRedis CacheReal-time features⚙️ Data PipelineAirflow + SparkETL Feature Engineering🔍 Quality GatesGreat ExpectationsSchema Drift Detection🤖 Model TrainingMulti-Target MLMatch Prediction📊 Experiment TrackingMLflowHyperparameter Tuning📦 Model RegistryModel StoreA/B Testing🔄 CI/CD PipelineGitea ActionsAutomated Testing🚀 Model ServingFastAPI + ECSReal-time API📈 MonitoringPrometheus + GrafanaModel Performance🚨 AlertingPagerDuty + SlackPerformance Alerts👥 End UsersFantasy SportsBetting Analytics
\ No newline at end of file