メインコンテンツまでスキップ

Track a model

W&B Python SDK を使用して、モデル、モデルの依存関係、およびそのモデルに関連するその他の情報をトラッキングします。

内部的には、W&B は model artifact のリネージを作成し、W&B App UI で視覚化したり、W&B Python SDK でプログラム的に確認することができます。詳細については Create model lineage map を参照してください。

モデルをログする方法

run.log_model API を使用してモデルをログします。モデルファイルが保存されているパスを path パラメータに提供します。このパスはローカルファイル、ディレクトリー、または s3://bucket/path のような外部バケットへの reference URI であることができます。

オプションで、name パラメータにモデルアーティファクトの名前を提供します。name が指定されていない場合、W&B は入力パスのベース名に run ID を付加して使用します。

次のコードスニペットをコピーして貼り付けます。<> で囲まれた値を自分のものに置き換えてください。

import wandb

# Initialize a W&B run
run = wandb.init(project="<project>", entity="<entity>")

# Log the model
run.log_model(path="<path-to-model>", name="<name>")
Example: Log a Keras model to W&B

次のコード例では、畳み込みニューラルネットワーク (CNN) モデルを W&B にログする方法を示しています。

import os
import wandb
from tensorflow import keras
from tensorflow.keras import layers

config = {"optimizer": "adam", "loss": "categorical_crossentropy"}

# Initialize a W&B run
run = wandb.init(entity="charlie", project="mnist-project", config=config)

# トレーニングアルゴリズム
loss = run.config["loss"]
optimizer = run.config["optimizer"]
metrics = ["accuracy"]
num_classes = 10
input_shape = (28, 28, 1)

model = keras.Sequential(
[
layers.Input(shape=input_shape),
layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(num_classes, activation="softmax"),
]
)

model.compile(loss=loss, optimizer=optimizer, metrics=metrics)

# モデルを保存
model_filename = "model.h5"
local_filepath = "./"
full_path = os.path.join(local_filepath, model_filename)
model.save(filepath=full_path)

# モデルをログ
run.log_model(path=full_path, name="MNIST")

# W&B に明示的に run の終了を伝えます。
run.finish()
Was this page helpful?👍👎