0Pricing
Learn AI with Python · レッスン

再現可能なMLパイプラインの構築

sklearn Pipeline、joblibによるパイプラインの永続化、設定ファイルによるパラメータ化された実行について学習します。

「再現可能なMLパイプラインの構築」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

再現性が重要な理由

再現できない結果は科学ではなく、偶然です。再現可能なパイプラインがあれば、同じデータと設定から常に同じモデルを生成できます。これはデバッグ、監査、チーム開発に不可欠です。

sklearn Pipeline

scikit-learnのPipelineは、前処理とモデルを1つのオブジェクトに連結します。そのため、学習時とまったく同じ変換が推論時にも適用され、学習環境と提供環境のずれを解消できます。

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier

pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("model", RandomForestClassifier(n_estimators=200))
])
pipe.fit(X_train, y_train)

Pipelineのアーティファクトとしての保存

パイプライン全体が1つのオブジェクトなので、単一のアーティファクトとして保存し、どこからでも再読み込みできます。前処理もモデルと一緒に保存されるため安心です。

joblib.dumpとload

joblibはscikit-learnのオブジェクトを効率よくシリアライズします(大きなNumPy配列の処理はpickleより優れています)。学習済みのパイプラインを保存し、提供時に再読み込みします。

import joblib

joblib.dump(pipe, "pipeline.joblib")        # save
loaded = joblib.load("pipeline.joblib")    # reload
preds = loaded.predict(X_new)

ハイパーパラメータ用のYAML設定

ハードコードされた値からは、実行時にどの値が使われたのか分かりません。すべてのハイパーパラメータをYAMLファイルに置くと、各設定が明示され、バージョン管理でき、コードを編集せずに変更できます。

# config.yaml
model:
  n_estimators: 200
  max_depth: 8
data:
  test_size: 0.2
  random_state: 42

設定の読み込み

起動時にYAMLを一度読み込み、その値をパイプラインに渡します。これにより、1つのファイルで実行全体を制御できます。

import yaml

with open("config.yaml") as f:
    cfg = yaml.safe_load(f)

model = RandomForestClassifier(
    n_estimators=cfg["model"]["n_estimators"],
    max_depth=cfg["model"]["max_depth"]
)

乱数シードを固定する

再現性を確保するには、学習用データとテスト用データの分割、モデルの初期化、シャッフルなど、すべての箇所で乱数シードも固定する必要があります。シードをYAML設定に保存し、明示的かつ一貫した状態にしましょう。

from sklearn.model_selection import train_test_split

X_tr, X_te, y_tr, y_te = train_test_split(
    X, y, test_size=cfg["data"]["test_size"],
    random_state=cfg["data"]["random_state"]
)

繰り返し可能な手順のためのMakefile

Makefileを使うと、パイプラインの各段階を名前付きターゲットにできます。そのため、長いコマンドを覚える代わりに、誰でもmake trainを実行できます。チーム全体でワークフローを標準化できます。

Makeターゲットの定義

一般的なターゲットにはmake data、make train、make evaluateがあり、それぞれ対応するスクリプトを呼び出します。

# Makefile
data:
	python src/prepare_data.py

train:
	python src/train.py --config config.yaml

evaluate:
	python src/evaluate.py --config config.yaml

依存関係の連鎖

Makeターゲット同士に依存関係を設定できます。そのため、必要であればmake trainが先にdataを実行し、パイプラインが常に正しい順序で実行されることを保証できます。

train: data
	python src/train.py --config config.yaml

全体の組み立て

再現可能な構成は、joblibでPipelineを保存し、すべてのハイパーパラメータをYAMLに置き、乱数シードを固定し、Makefileでmake data / train / evaluateを実行できるようにしたものです。誰でもリポジトリをクローンして、まったく同じモデルを再現できます。

クイックチェック

再現可能なパイプラインに関する知識をテストしましょう。

まとめ

再現可能なパイプラインを構築しました。sklearnのPipelineをjoblib.dump/loadで保存し、すべてのハイパーパラメータをYAML設定にまとめ、乱数シードを固定し、make data / train / evaluateターゲットを持つMakefileを用意しました。次は、本番環境でモデルを監視します。

よくある質問

「再現可能なMLパイプラインの構築」レッスンは無料ですか?

はい。「再現可能なMLパイプラインの構築」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「再現可能なMLパイプラインの構築」で何を学びますか?

sklearn Pipeline、joblibによるパイプラインの永続化、設定ファイルによるパラメータ化された実行について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「再現可能なMLパイプラインの構築」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. MLflowによる実験管理
  2. モデルレジストリとバージョニング
  3. 再現可能なMLパイプラインの構築
  4. 本番環境でのモデル性能監視
← Learn AI with Pythonに戻る