Home
Login

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.

MLOpsMachineLearningProductionMLGitHubTextFreeEnglish

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

  1. 💡 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.
  2. 💻 Best Practices:Implementierung von Software-Engineering-Best Practices bei der Entwicklung und Bereitstellung von Machine-Learning-Modellen.
  3. 📈 Skalierung:Einfache Skalierung von Machine-Learning-Workloads (Daten, Training, Optimierung, Service) in Python, ohne eine völlig neue Sprache lernen zu müssen.
  4. ⚙️ MLOps:Verbindung von MLOps-Komponenten (Tracking, Tests, Service, Orchestrierung usw.) zum Aufbau von End-to-End-Machine-Learning-Systemen.
  5. 🚀 Entwicklung bis Produktion:Lernen, wie man schnell und zuverlässig von der Entwicklung zur Produktion übergeht, ohne Code oder Infrastrukturmanagement zu ändern.
  6. 🐙 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:

  1. Konfiguration der Clusterumgebung:
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
  1. Rechenkonfiguration:
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
  1. Jobübermittlung:
anyscale job submit deploy/jobs/workloads.yaml
  1. Dienstbereitstellung:
anyscale service rollout -f deploy/services/serve_model.yaml

CI/CD-Prozess

Das Projekt integriert GitHub Actions zur Automatisierung der Bereitstellung:

  1. Workflow-Auslösung: Auslösung des Workload-Workflows beim Erstellen eines PR
  2. Modelltraining und -evaluierung: Automatisches Ausführen von Training und Evaluierung
  3. Ergebnisrückmeldung: Direkte Anzeige der Trainings- und Evaluierungsergebnisse im PR
  4. 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

  1. Codeorganisation: Modulare Projektstruktur
  2. Experimentmanagement: Systematische Experimentverfolgung
  3. Versionskontrolle: Versionsverwaltung von Code und Modellen
  4. Teststrategie: Umfassende Testabdeckung
  5. Bereitstellungsautomatisierung: CI/CD-Prozessintegration
  6. Ü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

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.