Phase 6: KI-Projekte in der Praxis und Produktionsbereitstellung
Ein umfassender Kurs für maschinelles Lernen, der lehrt, wie man maschinelles Lernen mit Software Engineering kombiniert, vom Experiment bis zur Produktionsbereitstellung.
Made With ML – Projektdetails
Projektübersicht
Made With ML ist ein Open-Source-Projekt von Goku Mohandas, das sich darauf konzentriert, die Integration von Machine Learning und Software Engineering zu vermitteln, um produktionsreife Machine-Learning-Anwendungen zu entwerfen, zu entwickeln, bereitzustellen und iterativ zu verbessern. Das Projekt hat sich zu einem der Top-Machine-Learning-Repositories auf GitHub entwickelt und wird von über 40.000 Entwicklern verfolgt.
Projektziele und Besonderheiten
Kernidee
Der Kurs baut iterativ zuverlässige Produktionssysteme auf, von der Experimentierphase (Design + Entwicklung) bis zur Produktionsphase (Bereitstellung + Iteration).
Hauptmerkmale
- 💡 Prinzipien von Grund auf:Etablierung eines Verständnisses der Prinzipien von Grund auf für jedes Machine-Learning-Konzept, bevor direkt in den Code eingestiegen wird.
- 💻 Best Practices:Implementierung von Software-Engineering-Best Practices bei der Entwicklung und Bereitstellung von Machine-Learning-Modellen.
- 📈 Skalierung:Einfache Skalierung von Machine-Learning-Workloads (Daten, Training, Optimierung, Service) in Python, ohne eine völlig neue Sprache lernen zu müssen.
- ⚙️ MLOps:Verbindung von MLOps-Komponenten (Tracking, Tests, Service, Orchestrierung usw.) zum Aufbau von End-to-End-Machine-Learning-Systemen.
- 🚀 Entwicklung bis Produktion:Lernen, wie man schnell und zuverlässig von der Entwicklung zur Produktion übergeht, ohne Code oder Infrastrukturmanagement zu ändern.
- 🐙 CI/CD:Lernen, wie man ausgereifte CI/CD-Workflows erstellt, um kontinuierlich bessere Modelle auf modulare Weise zu trainieren und bereitzustellen.
Zielgruppe
Das Projekt richtet sich an verschiedene Arten von Lernenden:
- 👩💻 Alle Entwickler:Ob Software-/Infrastruktur-Ingenieure oder Data Scientists, Machine Learning wird zunehmend zu einem Schlüsselelement der Produktentwicklung.
- 👩🎓 Hochschulabsolventen:Erlernen praktischer Fähigkeiten, die in der Industrie benötigt werden, um die Lücke zwischen Universitätskursen und den Erwartungen der Industrie zu schließen.
- 👩💼 Produkt-/Führungsebene:Wunsch, eine technische Grundlage zu schaffen, um beeindruckende und zuverlässige Produkte zu entwickeln, die von Machine Learning angetrieben werden.
Projektstruktur und Inhalt
Codestruktur
Der Kerncode des Projekts wurde in die folgenden Python-Skripte umstrukturiert:
madewithml
├── config.py
├── data.py
├── evaluate.py
├── models.py
├── predict.py
├── serve.py
├── train.py
├── tune.py
└── utils.py
Hauptarbeitsabläufe
1. Umgebungseinrichtung
Das Projekt unterstützt verschiedene Bereitstellungsumgebungen:
- Lokale Umgebung:Verwendung eines persönlichen Laptops als Cluster
- Anyscale-Plattform:Verwendung von Anyscale Workspace für die Cloud-Entwicklung
- Andere Plattformen:Unterstützung von AWS, GCP, Kubernetes, lokaler Bereitstellung usw.
2. Daten und Modelltraining
export EXPERIMENT_NAME="llm"
export DATASET_LOC="https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/dataset.csv"
export TRAIN_LOOP_CONFIG='{"dropout_p": 0.5, "lr": 1e-4, "lr_factor": 0.8, "lr_patience": 3}'
python madewithml/train.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--train-loop-config "$TRAIN_LOOP_CONFIG" \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/training_results.json
3. Modelloptimierung
python madewithml/tune.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--initial-params "$INITIAL_PARAMS" \
--num-runs 2 \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/tuning_results.json
4. Modellevaluierung
export RUN_ID=$(python madewithml/predict.py get-best-run-id --experiment-name $EXPERIMENT_NAME --metric val_loss --mode ASC)
python madewithml/evaluate.py \
--run-id $RUN_ID \
--dataset-loc $HOLDOUT_LOC \
--results-fp results/evaluation_results.json
5. Modellvorhersage
python madewithml/predict.py predict \
--run-id $RUN_ID \
--title "Transfer learning with transformers" \
--description "Using transformers for transfer learning on text classification tasks."
6. Modelldienst
python madewithml/serve.py --run_id $RUN_ID
Experimentverfolgung
Das Projekt verwendet MLflow zur Experimentverfolgung und Modellverwaltung:
export MODEL_REGISTRY=$(python -c "from madewithml import config; print(config.MODEL_REGISTRY)")
mlflow server -h 0.0.0.0 -p 8080 --backend-store-uri $MODEL_REGISTRY
Testframework
Das Projekt enthält eine umfassende Testsuite:
# Codetests
python3 -m pytest tests/code --verbose --disable-warnings
# Datentests
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings
# Modelltests
pytest --run-id=$RUN_ID tests/model --verbose --disable-warnings
# Abdeckungstests
python3 -m pytest tests/code --cov madewithml --cov-report html --disable-warnings
Produktionsbereitstellung
Anyscale-Bereitstellung
Das Projekt bietet eine vollständige Anyscale-Bereitstellungslösung:
- Konfiguration der Clusterumgebung:
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
- Rechenkonfiguration:
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
- Jobübermittlung:
anyscale job submit deploy/jobs/workloads.yaml
- Dienstbereitstellung:
anyscale service rollout -f deploy/services/serve_model.yaml
CI/CD-Prozess
Das Projekt integriert GitHub Actions zur Automatisierung der Bereitstellung:
- Workflow-Auslösung: Auslösung des Workload-Workflows beim Erstellen eines PR
- Modelltraining und -evaluierung: Automatisches Ausführen von Training und Evaluierung
- Ergebnisrückmeldung: Direkte Anzeige der Trainings- und Evaluierungsergebnisse im PR
- Automatische Bereitstellung: Automatische Bereitstellung in der Produktionsumgebung nach dem Zusammenführen in den Hauptzweig
Kernlernpunkte
Technologiestack
- Python: Kernprogrammiersprache
- Ray: Framework für verteiltes Rechnen
- MLflow: Experimentverfolgung und Modellverwaltung
- Transformers: Deep-Learning-Modelle
- FastAPI: API-Service-Framework
- pytest: Testframework
- GitHub Actions: CI/CD-Plattform
Best Practices für Machine-Learning-Engineering
- Codeorganisation: Modulare Projektstruktur
- Experimentmanagement: Systematische Experimentverfolgung
- Versionskontrolle: Versionsverwaltung von Code und Modellen
- Teststrategie: Umfassende Testabdeckung
- Bereitstellungsautomatisierung: CI/CD-Prozessintegration
- Überwachung und Wartung: Kontinuierliche Überwachung der Produktionsumgebung
Projektwert
Machine Learning ist keine eigenständige Branche, sondern eine leistungsstarke Denkweise für Daten, die nicht auf bestimmte Personengruppen beschränkt ist. Das Projekt bietet einen vollständigen Lernpfad von grundlegenden Konzepten bis zur Produktionsbereitstellung und hilft den Lernenden, die vollständigen Fähigkeiten des modernen Machine-Learning-Engineerings zu erlernen.
Lernressourcen
- Online-Kurs: https://madewithml.com/
- Quellcode: https://github.com/GokuMohandas/Made-With-ML
- Interaktive Notebooks: notebooks/madewithml.ipynb
- Live-Bootcamps: Regelmäßig stattfindende Online-Bootcamps
Kontinuierliche Verbesserung
Das Projekt betont die Bedeutung kontinuierlicher Verbesserung. Mit der Einrichtung von CI/CD-Workflows kann man sich auf die kontinuierliche Verbesserung von Modellen konzentrieren und problemlos auf geplante Ausführungen (Cron), Datenpipelines, Drift-Erkennungsüberwachung, Online-Bewertung usw. erweitern.
Dieses Projekt bietet Machine-Learning-Praktikern eine umfassende, praktische Lernressource, die den gesamten Prozess vom Konzeptverständnis bis zur Produktionsbereitstellung abdeckt und eine hervorragende Ressource zum Erlernen moderner MLOps ist.