nikkie-ftnextの日記

イベントレポートや読書メモを発信

Weights & Biases(WandB)ってどんなツール? データを記録だけしてみる第一歩

はじめに

わんだほー!
きゃー!〜〜!!💚 nikkieです

Weights & Biases(ウェイツ・アンド・バイアスィズ)、触ってみました。

目次

技術書典15『WandBで始める実験管理』

LLMに関するMeetupのアーカイブが多くあって知っていたWeights & Biases1
https://www.youtube.com/@WeightsBiasesJapan

アーカイブではLLM(や機械学習モデル)の訓練で便利と聞きましたが、どんなツールかは触って理解しているわけではありませんでした。

また、こちらの技術同人誌を積ん読していました。

リンク集リポジトリがこちらです。

いまこそ紐解くとき!

ランダムな数値をWandBに記録してみる

第2章「WandB 入門」の最初のコードを素振りします(2.1)。
機械学習モデルは訓練せずに、ランダムな数値をWandBに記録だけします。
WandBとは何かを掴むのにうってつけの例だと思いました

  • Python 3.11.8
  • wandb 0.16.6
    • アカウントも開設しています
    • https://www.wandb.jp/ からサインアップ。この記事の範囲は無料です2

環境変数WANDB_API_KEYを設定しました。
API KeyはUser settingsの中にあります(Danger Zone)

WandBにbasic-introプロジェクトを作って、3回のRunを記録するコードを書いています。
1回あたりの記録のコードは以下です。

with wandb.init(
    project="basic-intro",
    name=f"experiment_{run}",  # 例: experiment_0
    config={
        "learning_rate": 0.02,  # この例ではダミーの値
        "architecture": "CNN",
        "dataset": "CIFAR-100",
        "epochs": 10,
    },
) as run:

    epochs = 10
    offset = random.random() / 5
    for epoch in range(2, epochs):  # 8回ランダムな数値を生成
        loss = 2**-epoch + random.random() / epoch + offset
        acc = 1 - loss
        run.log({"acc": acc, "loss": loss})

スクリプトを実行すると、Runが3回記録されます。
ローカルのwandbディレクトリに記録してから、WandBのWebアプリ側にも記録されるようです。

ブラウザで見た画面です(Runsを見ています)

グラフも見られます

感想(終わりにに代えて)

ちょっとしか触っていないので誤解しているかもしれませんが、「MLflow3と似ているな」という印象です。

  • 両ツールとも、モデルに関するデータ(例:訓練中のロスの値)をローカルに保存
  • WandBはローカルだけでなくWebアプリにも保存。ダッシュボードとして見られる
    • 他方MLflowも、ローカルでダッシュボードを立てられます。またDatabricks社が提供するサービス版があるように記憶しています

モデルに関するデータを記録する機能について細部を見れば違いがあるかと思いますが、両ツールとも機械学習まわり(特に実験管理)のペインを解消するツールなのだと思います。
今回取り上げた技術同人誌では、WandBのいろいろな事例が掲載されていたので、もうちょっと触ってみたいところです。


  1. 「LLMの評価方法」を視聴して書いたブログ
  2. パーソナルアカウントの範囲は無料です。チームで共有する機能は有料です https://www.wandb.jp/pricing
  3. 先日触りました