機械学習プラットフォーム連携 第1弾: Weights & Biases

Built for Speed: ~10ms Latency, Even Under Load
Blazingly fast way to build, track and deploy your models!
- Handles 350+ RPS on just 1 vCPU — no tuning needed
- Production-ready with full enterprise support
実験追跡は機械学習開発の極めて重要な側面であり、実務者が実験の進捗を効率的に管理・追跡できるようにします。実験追跡には、モデルのパフォーマンス、ハイパーパラメータ、トレーニングデータなど、さまざまな要素を記録・監視し、機械学習モデルのパフォーマンスに関する洞察を得ることが含まれます。
実験管理における課題
モデルの複雑さ、扱うデータ量の多さ、機械学習開発で使用されるツールやフレームワークの多様性により、実験の管理と結果の追跡は機械学習の実務者にとって困難な作業となることがあります。以下に、実務者が実験の管理と結果の追跡において直面する主な課題をいくつかご紹介します。
- 再現性: 実験の再現は、結果を検証し、モデルが実世界のシナリオで適切に機能することを保証するために不可欠です。しかし、特に複雑なモデル、複数のフレームワーク、異なるコンピューティング環境を扱う場合、実験の再現は困難な場合があります。
- スケーラビリティ: 機械学習の実務者は大規模なデータセットを扱うことが多く、そのためモデルのトレーニングはかなりの計算能力を必要とする時間のかかるプロセスとなることがあります。大規模な実験の管理と結果の追跡には、大量のデータと計算を処理できるツールとインフラストラクチャが必要です。
- コラボレーション: 機械学習開発においてコラボレーションは不可欠ですが、複数のチームメンバー間で実験を管理し、結果を追跡することは困難な場合があります。データ、コード、実験結果を共有し、全員が同じリソースにアクセスできることを保証するための堅牢なインフラストラクチャが必要です。
- データ管理: 機械学習モデルはデータに大きく依存しており、データを効果的に管理することはモデルの成功に不可欠です。しかし、データ管理には、データクレンジング、データラベリング、データバージョニングなど、時間と手間がかかり複雑になる可能性のある様々な課題が伴います。
- ハイパーパラメータ最適化: モデルに最適なハイパーパラメータを見つけることは、異なるハイパーパラメータで複数の実験を実行することを含む、困難で反復的なプロセスとなることがあります。これらの実験を管理し、結果を追跡することは、時間と手間がかかり、複雑になる可能性があります。
Weights & Biasesの機能を探る
Weights & Biases (W&B) は、機械学習の実務者が実験を効果的に管理・追跡できるよう設計されたプラットフォームです。実験追跡、可視化、コラボレーションのためのツールスイートを提供し、実務者が堅牢でスケーラブルな機械学習モデルを開発しやすくします。
W&Bプラットフォームの主な機能と利点は以下の通りです:
- 実験追跡: W&Bは、モデルのハイパーパラメータ、メトリクス、出力アーティファクトを自動的にログ記録することで、ユーザーが実験を追跡できるようにします。これにより、実務者は実験を把握し、異なるモデルやハイパーパラメータを簡単に比較できます。
- 可視化: W&Bは、ユーザーが実験と結果を可視化できる一連の可視化ツールを提供します。これには、3D可視化、混同行列、散布図などが含まれます。これにより、実務者はデータをより深く理解し、実験結果におけるパターンや傾向を特定するのに役立ちます。
- コラボレーション: W&Bは、実験、データ、結果を共有するための機能を提供することで、チームメンバーとのコラボレーションを容易にします。また、コードとデータのバージョン管理も提供し、全員が同じリソースで作業できるようにします。
- 統合: W&Bは、TensorFlow、PyTorch、Keras、Scikit-learnなど、幅広い機械学習フレームワークと簡単に統合できます。これにより、実務者は開発プロセスに大きな変更を加えることなく、既存のワークフローやフレームワークでW&Bを使用できます。
- 整理: W&Bは、プロジェクト、実行、タグなど、実験を整理するための機能を提供します。これにより、複数のチームメンバーやプロジェクトにわたる実験の管理と追跡が容易になります。
ステップバイステップガイド:Weights & Biasesの簡単なセットアップ
実験追跡のためにW&Bをセットアップするには、いくつかのステップが必要です。
- W&Bアカウントにサインアップ:最初のステップは、W&Bウェブサイトで無料アカウントにサインアップすることです。これは、ウェブサイトにアクセスし、サインアッププロセスに従うことで行えます。
- W&Bライブラリをインストール:アカウントにサインアップした後、次のステップは開発環境にW&Bライブラリをインストールすることです。W&Bライブラリは、ユーザーの好みと開発環境に応じて、pipまたはcondaを使用してインストールできます。
- W&Bを初期化:ライブラリがインストールされたら、ユーザーはコード内でW&Bを初期化するために、
wandb.init()関数を呼び出す必要があります。この関数はW&Bライブラリを初期化し、新しい実行を設定します。 - メトリクスをログ記録:ユーザーはトレーニング中に損失や精度などのメトリクスをログ記録するために、
wandb.log()関数を呼び出すことができます。この関数はメトリクスの辞書を入力として受け取り、W&Bダッシュボードにログ記録します。 - ハイパーパラメータをログ記録:ユーザーは学習率やバッチサイズなどのハイパーパラメータもログ記録するために、
wandb.config関数です。この関数は、ハイパーパラメータの辞書を入力として受け取り、それらをW&Bダッシュボードにログ記録します。 - 可視化をログ記録する:最後に、ユーザーは画像やプロットなどの可視化を、
wandb.log()関数を適切な可視化データとともに呼び出すことで行います。W&Bは、3D可視化、混同行列、散布図など、幅広い可視化ツールを提供しています。
例:
W&Bを使用してメトリクス、モデル、ハイパーパラメータ、および可視化をログ記録する方法の例を次に示します。
import wandb
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
# ステップ1:W&Bを初期化する
wandb.init(project="my-project")
# ステップ2:ハイパーパラメータをログ記録する
config = {
"learning_rate": 0.001,
"batch_size": 32,
"epochs": 10
}
wandb.config.update(config)
# ステップ3: モデルを訓練し、メトリクスを記録する
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(10,)),
tf.keras.layers.Dense(1)
])
model.compile(optimizer=tf.keras.optimizers.Adam(config['learning_rate']),
loss=tf.keras.losses.MeanSquaredError(),
metrics=[tf.keras.metrics.MeanAbsoluteError()])
for epoch in range(config['epochs']):
# ... モデルを訓練 ...
history = model.fit(x_train, y_train, batch_size=config['batch_size'])
loss = history.history['loss'][-1]
mae = history.history['mean_absolute_error'][-1]
wandb.log({"epoch": epoch, "loss": loss, "mae": mae})
# ステップ4: 可視化とモデルを記録する
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
wandb.log({"my_plot": wandb.Image(fig)})
wandb.save('my_model.h5')
# ステップ5:実行を終了する
wandb.finish()
c
シームレスな連携:TrueFoundryのWeights & Biasesへのアプローチ
TrueFoundryはWeights & Biases Model Registryとシームレスに連携し、Weights & BiasesにログされたモデルをTrueFoundryを使用してKubernetesクラスターにデプロイできるようにします。
📌
モデル管理と実験追跡にWeights & Biasesを使用するだけでなく、Truefoundryの実験追跡ツールであるMLFoundyも利用できます。

📌
以下のColabノートブックを通じて、以下のコードを一緒に試すことができます。
Colabノートブック
ステップ1 - インストールとセットアップ:
- wandbをインストール
pip install wandb -qU
- W&Bアカウントにログイン
import wandb
wandb.login()
- servicefoundryをインストール
pip install -U "servicefoundry"
- Truefoundryにログイン
sfy ログイン
ステップ2 - モデルの学習とログ記録:
まず、 wandb.init() でプロジェクトを初期化します
次に、MLモデルを学習させ、joblibファイルとして保存します
次に、joblibファイルをwandbに保存します。 wandb.save()
import wandb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
import joblib
# W&Bを初期化
wandb.init(project="iris-logistic-regression")
# データを読み込み、前処理する
X, y = load_iris(as_frame=True, return_X_y=True)
X = X.rename(columns={
"sepal length (cm)": "sepal_length",
"がく片の幅 (cm)": "sepal_width",
"花弁の長さ (cm)": "petal_length",
"花弁の幅 (cm)": "petal_width",
})
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
# モデルを初期化
clf = LogisticRegression(solver="liblinear")
# モデルを学習
clf.fit(X_train, y_train)
# モデルを評価
preds = clf.predict(X_test)
# モデルと評価指標をW&Bにログ記録
joblib.dump(clf, "model.joblib")
wandb.save("model.joblib")
# 実行を完了
wandb.finish()
ステップ3 - 推論アプリケーションと依存関係ファイルを作成する:
Truefoundryにデプロイするには、2つのファイルを作成する必要があります。 app.py アプリケーションコードを含むファイルと、 requirements.txt 依存関係を含むファイルです。
。
├── app.py
├── deploy.py
└── requirements.txt
c
- app.py:
ここでは、wandb.restore()に以下の引数を渡す必要があります。<name_of_saved_file>および"username/project/run_id"
例:wandb.restore("model.joblib", "adityajha-tfy/iris-logistic-regression/00r5xvyv")
import os
import wandb
import joblib
import pandas as pd
from fastapi import FastAPI
wandb.login(key=os.environ["WANDB_API_KEY"])
# W&Bからモデルを取得
model_joblib = wandb.restore(
'model.joblib',
run_path="adityajha-tfy/iris-logistic-regression/00r5xvyy",
)
model = joblib.load(model_joblib.name)
# モデルを読み込み
app = FastAPI(root_path=os.getenv("TFY_SERVICE_ROOT_PATH"))
@app.post("/predict")
def predict(
sepal_length: float, sepal_width: float, petal_length: float, petal_width: float
):
data = dict(
sepal_length=sepal_length,
sepal_width=sepal_width,
petal_length=petal_length,
petal_width=petal_width,
)
prediction = int(model.predict(pd.DataFrame([data]))[0])
return {"prediction": prediction}
- requirements.txt:
fastapi
joblib
numpy
pandas
scikit-learn
uvicorn
wandb
ステップ4 - truefoundryのPython SDKを使用し、デプロイメントを設定します
- deploy.py:
import argparse
import logging
from servicefoundry import Build, PythonBuild, Service, Resources, Port
# ロガーを設定
logging.basicConfig(level=logging.INFO)
# 引数パーサーを設定
parser = argparse.ArgumentParser()
parser.add_argument("--workspace_fqn", required=True, type=str)
parser.add_argument("--wandb_api_key", required=True, type=str)
args = parser.parse_args()
service = Service(
name="fastapi",
image=Build(
build_spec=PythonBuild(
command="uvicorn app:app --port 8000 --host 0.0.0.0",
requirements_path="requirements.txt",
)
),
ports=[
Port(
port=8000,
host="ml-deploy-aditya-ws-8000.demo.truefoundry.com",
)
],
resources=Resources(
cpu_request=0.25,
cpu_limit=0.5,
memory_request=200,
memory_limit=400,
ephemeral_storage_request=200,
ephemeral_storage_limit=400,
),
env={
"WANDB_API_KEY": args.wandb_api_key
}
)
service.deploy(workspace_fqn=args.workspace_fqn)
ステップ5 - Truefoundry経由でサービスをデプロイする
次のコマンドを実行し、あなたの
- ワークスペース FQN: ダッシュボードで見つけることができます
- Wandb APIキー
python deploy.py --workspace_fqn "<Your Workspace FQN>" --wandb_api_key "<Your Wandb API Key>"
そして、これで完了です!ログには、デプロイされたサービスのダッシュボードが表示されます。そして、右上にはデプロイされたアプリケーションのエンドポイントが見つかります。

TrueFoundry は、Kubernetes上で動作するMLデプロイメントPaaSであり、開発者のワークフローを加速させるとともに、モデルのテストとデプロイにおいて完全な柔軟性を提供し、インフラチームには完全なセキュリティと制御を保証します。私たちのプラットフォームを通じて、機械学習チームは デプロイと監視 15分でモデルを、100%の信頼性、スケーラビリティ、数秒でのロールバック機能とともに運用することで、コストを削減し、モデルをより迅速に本番環境にリリースできるようになり、真のビジネス価値の実現を可能にします。
TrueFoundry AI Gateway delivers ~3–4 ms latency, handles 350+ RPS on 1 vCPU, scales horizontally with ease, and is production-ready, while LiteLLM suffers from high latency, struggles beyond moderate RPS, lacks built-in scaling, and is best for light or prototype workloads.


















.webp)
.webp)


.png)

.png)














