再現可能な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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- MLflowによる実験管理
- モデルレジストリとバージョニング
- 再現可能なMLパイプラインの構築
- 本番環境でのモデル性能監視