Trackio documentation

Trackioへの移行

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Trackioへの移行

他の実験トラッキングライブラリからTrackioへの移行は、コードの修正を最小限に抑えることで簡単に実現できます。このガイドでは、人気のある実験トラッキングツールからの移行方法について説明します。

Weights & Biases ( wandb )

Weights & Biases から Trackio への移行は、Trackio が wandb とまったく同じ API 構文を使用しているため、非常に簡単です。ほとんどの場合、インポート文を変更するだけで済みます!

シンプルな移行

最も基本的な移行には、インポートの変更だけで済みます:

- import wandb
+ import trackio as wandb

wandb.init(project="my-project")
wandb.log({"loss": 0.5, "accuracy": 0.8})
wandb.finish()

完全な例

残りのコードがまったく同じままで済むことを示す、より完全な例を以下に示します!

- import wandb
+ import trackio as wandb
import numpy as np

wandb.init(
    project="image-classification",
    name="experiment-1",
    config={
        "learning_rate": 0.01,
        "batch_size": 32,
        "epochs": 10
    }
)

for epoch in range(10):
    loss = np.random.random()
    accuracy = np.random.random()
    
    wandb.log({
        "epoch": epoch,
        "loss": loss,
        "accuracy": accuracy,
        "learning_rate": wandb.config.learning_rate
    })

wandb.finish()

高度な機能

Trackioは、Tables、Images、Audio、3Dオブジェクトなどのログ記録をサポートしています。wandbと同じAPIです:

- import wandb
+ import trackio as wandb
import numpy as np

wandb.init(project="data-analysis")

image_array = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8)
wandb.log({
    "sample_image": wandb.Image(image_array, caption="Generated sample"),
    "model_diagram": wandb.Image("architecture.png")
})

columns = ["epoch", "train_loss", "val_loss", "accuracy"]
data = [
    [1, 0.8, 0.6, 0.75],
    [2, 0.6, 0.5, 0.82],
    [3, 0.4, 0.45, 0.89]
]
table = wandb.Table(data=data, columns=columns)
wandb.log({"training_results": table})

wandb.finish()

Neptune (neptune)

Neptuneからの移行は、Neptuneが異なるAPI構造を持っているため、いくつかの追加の変更が必要ですが、移行自体は依然として簡単です。

基本的なログの移行

- import neptune

+ import trackio

- run = neptune.init_run(
-     project="my-workspace/my-project",
-     api_token="your-token"
- )

+ trackio.init(project="my-project")

- run["parameters"] = {"learning_rate": 0.01, "batch_size": 32}
- run["metrics/loss"].log(0.5)
- run["metrics/accuracy"].log(0.8)

+ trackio.config.update({"learning_rate": 0.01, "batch_size": 32})
+ trackio.log({"loss": 0.5, "accuracy": 0.8})

- run.stop()

+ trackio.finish()

完全なトレーニングループの移行

- import neptune
+ import trackio
import numpy as np

- run = neptune.init_run(
-     project="my-workspace/classification-project",
-     name="experiment-1",
-     tags=["pytorch", "cnn"]
- )

+ trackio.init(
+     project="classification-project",
+     name="experiment-1",
+     tags=["pytorch", "cnn"]
+ )

config = {"learning_rate": 0.01, "epochs": 10, "batch_size": 32}

- run["parameters"] = config
+ trackio.config.update(config)

for epoch in range(config["epochs"]):
    # Simulate training
    train_loss = np.random.random()
    val_accuracy = np.random.random()
    
    # Neptune logging
-     run["metrics/train/loss"].log(train_loss)
-     run["metrics/val/accuracy"].log(val_accuracy)
-     run["metrics/epoch"].log(epoch)

    # Trackio logging
+     trackio.log({
+         "train/loss": train_loss,
+         "val/accuracy": val_accuracy,
+         "epoch": epoch
+     })

- run["model/weights"].upload("model.pth")
+ trackio.save("model.pth")

- run.stop()
+ trackio.finish()

主な移行ポイント

  1. 初期化: neptune.init_run() を trackio.init() に置き換えてください
  2. ログ出力: 個別のメトリック割り当ての代わりに、辞書を使用してtrackio.log()を使用します
  3. クリーンアップ: run.stop() を trackio.finish() に置き換えます

移行のメリット

  • よりシンプルな API: ネストされた属性アクセスではなく、フラットな辞書によるログ出力
  • ローカル開発: デフォルトでオフラインで作業
  • 無料ホスティング:Hugging Face Spacesにダッシュボードを無料でデプロイ
  • 慣れ親しんだインターフェース: 特に以前wandbを使用していた場合、APIは変更されていません
Update on GitHub