メインコンテンツへスキップ
データのバージョン管理のために、W&B Artifacts を作成、更新、ダウンロード、管理します。

artifactを作成してログする

"""
W&B artifactを作成してログします。まずartifactオブジェクトを作成し、
次にファイル、ディレクトリ、または外部参照をartifactに追加します。
最後に、artifactをW&B runにログします。
"""
import wandb

# artifactオブジェクトを作成する
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")

# artifactに1つ以上のファイルを追加する
artifact.add_file(local_path="data/file1.csv")

# artifactにディレクトリを再帰的に追加する
artifact.add_dir(local_path="data/directory")

# artifactに外部URI参照を追加する
artifact.add_reference(uri="s3://my-bucket/path/to/data.csv")

with wandb.init(project="<project>") as run:
    # トレーニングおよびloggingのコードをここに記述する

    # artifactをログする例
    run.log_artifact(artifact)

クラウドストレージバケットのパスを参照として追加して外部 artifact をトラッキングする

"""
クラウドストレージのバケットパスへの参照を追加することで、外部artifactをトラッキングします。
"""

import wandb

# artifactオブジェクトを作成する
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")

# バケットパスへの参照を追加する
artifact.add_reference(uri = "uri/to/your/bucket/path")

# W&B runを初期化する
with wandb.init(project="<project>") as run:

  # artifactのメタデータをログする
  run.log_artifact(artifact)

run から特定の artifact のバージョンを削除する

"""
W&B runから特定のartifactバージョンを削除します。artifactにaliasが付いている場合は、
delete_aliasesを`True`に設定してください。
"""
import wandb

# W&B APIを初期化する
api = wandb.Api()

# パスでrunを取得する。<entity>/<project>/<run_path>で構成される
runs = api.run("<entity>/<project>/<run_path>")

# wandb.Api().Run.logged_artifacts()は、artifact名とバージョン<artifact_name>:v<version_number>で
# 構成されるartifactバージョンのリストを返す
for artifact_version in runs.logged_artifacts():
    # バージョン番号を含むartifactバージョン名(str)の末尾2文字を取得する
    if artifact_version.name[-2:] == "v"+ "<version_number>":
        artifact_version.delete(delete_aliases=True)

artifact collectionを削除する

"""
W&B からartifact collectionを削除する。
"""
import wandb

# W&B API を初期化する
api = wandb.Api()

# 名前とタイプでartifact collectionを削除する
# 名前の形式: <entity>/<project>/<run_path>
collection = api.artifact_collection(
    name="<entity>/<project>/<run_path>",
    type_name="<artifact_type>"
)

collection.delete()

Artifacts から特定のファイルまたはサブフォルダをダウンロードする

"""
W&B artifactsから特定のファイルまたはサブフォルダをダウンロードします。
同じロジックが外部artifactsにも適用されます。
"""
import wandb

with wandb.init(project="<project>") as run:
    # 使用するartifactを指定します。形式は "name:alias" です
    artifact = run.use_artifact("<artifact_name>:<alias>")

    # 特定のファイルまたはサブフォルダをダウンロードする
    artifact.download(path_prefix="<file_name>") # 指定したファイルまたはフォルダのみをダウンロードする

ファイル、またはartifact全体をダウンロードする

"""
W&B からファイルまたは Artifacts 全体をダウンロードします。同じ
ロジックは外部 Artifacts にも適用されます。
"""

import wandb    

with wandb.init(project="<project>") as run:
    # 使用する artifact を指定します。形式は "name:alias"
    artifact = run.use_artifact("<artifact_name>:<alias>")

    # パス名で指定した artifact からファイルをダウンロードします
    # artifact.add_reference() が使用された場合、参照 URL を返します
    entry = artifact.get_entry("<file_name>")

    # Artifacts 全体をダウンロードします
    datadir = artifact.download()

artifactをログする際に1つ以上のエイリアスを追加する

"""
W&B にログする際に、artifact に1つ以上のエイリアスを追加する。
"""
import wandb

# artifact を作成する
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")
# artifact にファイルを追加する
artifact.add_file("<file_path>")

with wandb.init(project="<project>") as run:
    # エイリアスを付けて artifact をログする
    run.log_artifact(artifact, aliases=["<alias1>", "<alias2>"])

既存のartifactにエイリアスを追加する

"""
既存のW&B artifactにaliasを追加します。
"""
import wandb

# 既存のartifactを取得してaliasを追加する
artifact = wandb.Api().artifact("entity/project/artifact:version")
artifact.aliases = ["<new-alias>"]
artifact.save()

artifact をログするときにタグを追加する

"""
W&B にログする際に artifact にタグを追加する。
"""
import wandb

# artifact を作成する
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")

# タグを付けて artifact をログする
with wandb.init(project="<project>") as run:
    run.log_artifact(artifact, tags=["<tag1>", "<tag2>"])

既存のartifactにタグを追加する

"""
既存のW&B artifactにタグを追加します。
"""
import wandb

# 既存のartifactを取得してタグを追加する
artifact = wandb.Api().artifact("entity/project/artifact:version")
artifact.tags = ["new-tag"]
artifact.save()

TTL ポリシー付きの artifact を作成してログする

"""
W&B で TTL ポリシーを設定した artifact を作成してログする。
"""
import wandb
from datetime import timedelta

# TTL ポリシーを設定した artifact を作成する
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")
artifact.add_file("<file_path>")
artifact.ttl = timedelta(days=30)  # TTL ポリシーを設定する

with wandb.init(project="<project>", entity="<entity>") as run:
    # TTL を設定した artifact をログする
    run.log_artifact(artifact)

既存のartifactのTTL ポリシーを更新する

"""
W&B の既存の artifact の TTL ポリシーを更新する。
"""
import wandb
from datetime import timedelta

# W&B API を初期化する
api = wandb.Api()

# 既存の artifact を取得する
artifact = api.artifact("<entity/project/artifact:alias>")

# TTL ポリシーを追加または更新する。期間を指定する。
artifact.ttl = timedelta(days=365)  # 1年後に削除する

# 更新した artifact を保存する
artifact.save()

run 内で既存の artifact の説明を更新する

"""
W&B run 内で既存の W&B artifact の説明を更新します。

このコードは W&B run を初期化し、名前と alias で指定された artifact を取得して、
説明を更新し、変更を保存します。
"""
import wandb

with wandb.init(entity="<entity>", project="<project>") as run:
    # 名前と alias で artifact を取得する
    artifact = run.use_artifact(artifact_or_name="<artifact>:<alias>")
    # artifact の説明を更新する
    artifact.description = "<description>"
    # 更新した artifact を保存する
    artifact.save()

既存のartifactの説明、メタデータ、エイリアスを、新しいrunを作成せずに更新する

"""
既存のartifactの説明、メタデータ、およびaliasを、
新しいrunを作成せずに更新する。
"""
import wandb

api = wandb.Api()

artifact = api.artifact(name="<entity/project/artifact:alias>")

# 説明を更新する
artifact.description = "My new description"

# メタデータのキーを選択的に更新する
artifact.metadata["oldKey"] = "new value"

# メタデータをすべて置き換える
artifact.metadata = {"newKey": "new value"}

# aliasを追加する
artifact.aliases.append("best")

# aliasを削除する
artifact.aliases.remove("latest")

# aliasをすべて置き換える
artifact.aliases = ["replaced"]

# artifactへのすべての変更を保存する
artifact.save()