Home
Login

第六段階:AIプロジェクト実践と本番環境へのデプロイ

機械学習とソフトウェアエンジニアリングを組み合わせ、実験から本番環境へのデプロイまでの全工程を教える、包括的な機械学習エンジニアリングコース。

MLOpsMachineLearningProductionMLGitHubTextFreeEnglish

Made With ML プロジェクト詳細

プロジェクト概要

Made With ML は、Goku Mohandas によって作成されたオープンソースプロジェクトで、機械学習とソフトウェアエンジニアリングを組み合わせ、プロダクションレベルの機械学習アプリケーションの設計、開発、デプロイ、およびイテレーションの方法を教えることに重点を置いています。このプロジェクトは、GitHub でトップクラスの機械学習リポジトリの 1 つとなり、40,000 人を超える開発者が注目しています。

プロジェクトの目標と特徴

コアコンセプト

このコースでは、実験段階(設計 + 開発)からプロダクション段階(デプロイ + イテレーション)まで、反復的な方法で、信頼性の高いプロダクションシステムを段階的に構築します。

主な特徴

  1. 💡 第一原理:コードに直接入る前に、各機械学習の概念について第一原理の理解を確立します。
  2. 💻 ベストプラクティス:機械学習モデルの開発とデプロイにおいて、ソフトウェアエンジニアリングのベストプラクティスを実装します。
  3. 📈 スケーラビリティ:新しい言語を学ぶことなく、Python で機械学習のワークロード(データ、トレーニング、チューニング、サービス)を簡単に拡張できます。
  4. ⚙️ MLOps:MLOps コンポーネント(追跡、テスト、サービス、オーケストレーションなど)を接続して、エンドツーエンドの機械学習システムを構築します。
  5. 🚀 開発からプロダクションへ:コードやインフラストラクチャの管理を変更することなく、開発からプロダクションへ迅速かつ確実に移行する方法を学びます。
  6. 🐙 CI/CD:モジュール方式でより優れたモデルを継続的にトレーニングおよびデプロイするための、成熟した CI/CD ワークフローを作成する方法を学びます。

対象読者

このプロジェクトは、さまざまなタイプの学習者を対象としています。

  • 👩💻 すべての開発者:ソフトウェア/インフラストラクチャエンジニアであろうとデータサイエンティストであろうと、機械学習は製品開発の重要な部分になりつつあります。
  • 👩🎓 大学院生:業界が必要とする実用的なスキルを学び、大学のカリキュラムと業界の期待とのギャップを埋めます。
  • 👩💼 製品/リーダーシップ:機械学習によって駆動される素晴らしい信頼性の高い製品を構築するために、技術的な基盤を構築したいと考えています。

プロジェクトの構造と内容

コード構造

プロジェクトのコアコードは、次の Python スクリプトにリファクタリングされています。

madewithml
├── config.py
├── data.py
├── evaluate.py
├── models.py
├── predict.py
├── serve.py
├── train.py
├── tune.py
└── utils.py

主なワークフロー

1. 環境設定

プロジェクトは、さまざまなデプロイ環境をサポートしています。

  • ローカル環境:個人のノートパソコンをクラスタとして使用
  • Anyscale プラットフォーム:Anyscale Workspace を使用してクラウドで開発
  • その他のプラットフォーム:AWS、GCP、Kubernetes、ローカルデプロイなどをサポート
2. データとモデルのトレーニング
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. モデルのチューニング
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. モデルの評価
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. モデルの予測
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. モデルのサービス
python madewithml/serve.py --run_id $RUN_ID

実験の追跡

プロジェクトは、MLflow を使用して実験の追跡とモデルの管理を行います。

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

テストフレームワーク

プロジェクトには、包括的なテストスイートが含まれています。

# コードテスト
python3 -m pytest tests/code --verbose --disable-warnings

# データテスト
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings

# モデルテスト
pytest --run-id=$RUN_ID tests/model --verbose --disable-warnings

# カバレッジテスト
python3 -m pytest tests/code --cov madewithml --cov-report html --disable-warnings

プロダクションデプロイメント

Anyscale デプロイメント

プロジェクトは、完全な Anyscale デプロイメントソリューションを提供します。

  1. クラスタ環境の構成
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
  1. 計算構成
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
  1. ジョブの送信
anyscale job submit deploy/jobs/workloads.yaml
  1. サービスのデプロイ
anyscale service rollout -f deploy/services/serve_model.yaml

CI/CD フロー

プロジェクトは、GitHub Actions を統合して自動デプロイメントを実現します。

  1. ワークフローのトリガー:PR の作成時にワークロードワークフローをトリガーします。
  2. モデルのトレーニングと評価:トレーニングと評価を自動的に実行します。
  3. 結果のフィードバック:PR でトレーニングと評価の結果を直接表示します。
  4. 自動デプロイメント:メインブランチにマージされた後、プロダクション環境に自動的にデプロイします。

コア学習ポイント

技術スタック

  • Python:コアプログラミング言語
  • Ray:分散コンピューティングフレームワーク
  • MLflow:実験の追跡とモデルの管理
  • Transformers:深層学習モデル
  • FastAPI:API サービスフレームワーク
  • pytest:テストフレームワーク
  • GitHub Actions:CI/CD プラットフォーム

機械学習エンジニアリングのベストプラクティス

  1. コードの整理:モジュール化されたプロジェクト構造
  2. 実験の管理:体系的な実験の追跡
  3. バージョン管理:コードとモデルのバージョン管理
  4. テスト戦略:包括的なテストカバレッジ
  5. デプロイメントの自動化:CI/CD フローの統合
  6. 監視とメンテナンス:プロダクション環境の継続的な監視

プロジェクトの価値

機械学習は単独の業界ではなく、特定のタイプの人々に限定されない強力なデータ思考方法です。このプロジェクトは、基礎概念からプロダクションデプロイメントまで、完全な学習パスを提供し、学習者が最新の機械学習エンジニアリングのすべてのスキルを習得するのに役立ちます。

学習リソース

継続的な改善

プロジェクトは、継続的な改善の重要性を強調しており、CI/CD ワークフローの確立により、モデルの継続的な改善、スケジュールされた実行(cron)、データパイプライン、ドリフト検出監視、オンライン評価などへの簡単な拡張に集中できます。

このプロジェクトは、機械学習の実務者に、概念の理解からプロダクションデプロイメントまでの完全なプロセスを網羅した、包括的で実用的な学習リソースを提供し、最新の MLOps を学習するための優れたリソースです。