Artifacts 
W&B アーティファクトの概要、仕組み、および開始方法。
    
      
W&B Artifacts を使用して、W&B Runs  の入力と出力としてデータをトラッキングし、バージョン管理します。たとえば、モデルトレーニングの run では、データセットを入力として受け取り、トレーニングされたモデルを出力として生成することがあります。ハイパーパラメーター、メタデータ、メトリクスを run にログし、アーティファクトを使用してモデルをトレーニングするために使用されるデータセットを入力としてログ、トラッキング、およびバージョン管理し、生成されたモデルのチェックポイントを出力として管理できます。
ユースケース 
あなたの ML ワークフロー全体で、runs  の入力と出力としてアーティファクトを使用することができます。データセット、モデル、または他のアーティファクトをプロセシングの入力として使用することができます。
  
      
          ユースケース 
          入力 
          出力 
       
   
  
      
          モデルトレーニング 
          データセット (トレーニングおよび検証データ) 
          トレーニングされたモデル 
       
      
          データセットの前処理 
          データセット (生データ) 
          データセット (前処理済みデータ) 
       
      
          モデルの評価 
          モデル + データセット (テストデータ) 
          W&B Table  
      
          モデルの最適化 
          モデル 
          最適化されたモデル 
       
   
続くコードスニペットは順番に実行されることを意図しています。
アーティファクトを作成する 
4行のコードでアーティファクトを作成します:
W&B run  を作成する。wandb.Artifactモデルファイルやデータセットなど、一つ以上のファイルをアーティファクトオブジェクトに追加する。 
あなたのアーティファクトを W&B にログする。 
 
例として、続くコードスニペットは example_artifact という名前のアーティファクトに dataset.h5 というファイルをログする方法を示しています:
import  wandb
 run =  wandb. init(project= "artifacts-example" , job_type= "add-dataset" )
 artifact =  wandb. Artifact(name= "example_artifact" , type= "dataset" )
 artifact. add_file(local_path= "./dataset.h5" , name= "training_dataset" )
 artifact. save()
 
 # アーティファクトのバージョン "my_data" を dataset.h5 のデータを持つデータセットとしてログします 
外部オブジェクトストレージに保存されているファイルやディレクトリーへの参照の追加方法については、
外部ファイルのトラッキング ページを参照してください。
アーティファクトをダウンロードする 
use_artifact
続くコードスニペットに続けて、この次のコードブロックは training_dataset アーティファクトの使用方法を示しています:
artifact =  run. use_artifact(
     "training_dataset:latest" 
 )  # "my_data" アーティファクトを使用する run オブジェクトを返します 
 これはアーティファクトオブジェクトを返します。
次に、返されたオブジェクトを使用して、アーティファクトのすべての内容をダウンロードします:
datadir =  (
     artifact. download()
 )  # `my_data` アーティファクト全体をデフォルトのディレクトリにダウンロードします。 
 次のステップ 
アーティファクトをバージョン管理 し、更新 する方法を学びます。 
オートメーション を使用して、あなたのアーティファクトに対する変更に反応して下流のワークフローをトリガーしたり、Slack チャンネルに通知する方法を学びます。トレーニングされたモデルを収容するスペースであるレジストリ について学びます。 
Python SDK  と CLI  リファレンスガイドを探索します。 
 
 
  
  
  
  
  
  
  
    
    
	
    
    
	1 - アーティファクトを作成する 
    W&B アーティファクトを作成し、構築します。ファイルや URI リファレンスをアーティファクトに追加する方法を学びましょう。
	W&B Python SDK を使用して、W&B Runs  から artifacts を構築します。ファイル、ディレクトリ、URI、並行実行からのファイルを artifacts に追加 できます。ファイルをアーティファクトに追加した後、W&B サーバーまたは自分のプライベートサーバー に保存します。
Amazon S3 に保存されているファイルなど、外部ファイルのトラッキング方法については、外部ファイルのトラッキング ページをご覧ください。
アーティファクトの構築方法 
3 つのステップで W&B Artifact  を構築します。
1. wandb.Artifact() でアーティファクト Python オブジェクトを作成する 
wandb.Artifact()
Name : アーティファクトの名前を指定します。名前は一意で説明的、かつ記憶しやすいものにしてください。Artifacts の名前は、W&B アプリ UI でアーティファクトを識別するとき、またそのアーティファクトを使用したいときに使用します。Type : タイプを指定します。タイプはシンプルで説明的で、機械学習パイプラインの単一ステップに対応するものでなければなりません。一般的なアーティファクトタイプには 'dataset' や 'model' があります。 
指定した「name」と「type」は、有向非循環グラフを作成するために使用されます。これは、W&B アプリでアーティファクトのリネージを見ることができることを意味します。
詳細については、アーティファクトグラフの探索とトラバース をご覧ください。
Artifacts は、たとえ異なる types パラメータを指定しても、同じ名前を持つことはできません。つまり、cats という名前のタイプ dataset のアーティファクトを作成し、同じ名前のタイプ model のアーティファクトを作成することはできません。
アーティファクトオブジェクトを初期化する際に、オプションで説明とメタデータを提供できます。利用可能な属性とパラメータの詳細については、Python SDK Reference Guide の wandb.Artifact
次の例は、データセットアーティファクトを作成する方法を示しています。
import  wandb
 artifact =  wandb. Artifact(name= "<replace>" , type= "<replace>" )
 先行のコードスニペット内の文字列の引数を、自分の 固有の名前とタイプで置き換えてください。
2. アーティファクトに 1 つ以上のファイルを追加する 
ファイル、ディレクトリ、外部 URI リファレンス(例: Amazon S3)などをアーティファクトメソッドで追加します。たとえば、単一のテキストファイルを追加するには、add_file
artifact. add_file(local_path= "hello_world.txt" , name= "optional-name" )
 また、複数のファイルを add_dirアーティファクトの更新 をご覧ください。
3. アーティファクトを W&B サーバーに保存する 
最後に、アーティファクトを W&B サーバーに保存します。Artifacts は run に関連付けられます。したがって、run オブジェクトの log_artifact()
# W&B Run を作成します。'job-type' を置き換えます。 
run =  wandb. init(project= "artifacts-example" , job_type= "job-type" )
 
 run. log_artifact(artifact)
 W&B Run の外でアーティファクトを作成することもできます。詳細については、外部ファイルのトラッキング をご覧ください。
log_artifact の呼び出しは、パフォーマンスを向上させるために非同期で行われます。これにより、ループ内でアーティファクトをログする際に予期しない挙動が生じることがあります。たとえば、
for  i in  range(10 ):
    a =  wandb. Artifact(
         "race" ,
         type= "dataset" ,
         metadata= {
             "index" : i,
         },
     )
     # ... アーティファクト a にファイルを追加 ... 
     run. log_artifact(a)
 アーティファクトバージョン v0  は、そのメタデータにインデックス 0 があることを保証しません。アーティファクトは任意の順序でログされる可能性があるためです。
アーティファクトにファイルを追加 
以下のセクションでは、異なるファイルタイプおよび並行実行からのアーティファクトを構築する方法を説明します。
以下の例では、複数のファイルとディレクトリ構造を持つプロジェクトディレクトリを前提とします。
project-directory
|-- images
|   |-- cat.png
|   +-- dog.png
|-- checkpoints
|   +-- model.h5
+-- model.h5
単一ファイルを追加 
以下のコードスニペットは、ローカルの単一ファイルをアーティファクトに追加する方法を示しています。
# 単一のファイルを追加 
artifact. add_file(local_path= "path/file.format" )
 たとえば、作業中のローカルディレクトリに 'file.txt' というファイルがあるとします。
artifact. add_file("path/file.txt" )  # `file.txt` として追加されました 
 アーティファクトは次の内容を持つようになります。
file.txt
オプションで、アーティファクト内の name パラメータの希望するパスを渡して下さい。
artifact. add_file(local_path= "path/file.format" , name= "new/path/file.format" )
 アーティファクトは次のように保存されます。
new/path/file.txt
  
      
          API Call 
          Resulting artifact 
       
   
  
      
          artifact.add_file('model.h5')model.h5 
       
      
          artifact.add_file('checkpoints/model.h5')model.h5 
       
      
          artifact.add_file('model.h5', name='models/mymodel.h5')models/mymodel.h5 
       
   
複数ファイルを追加 
以下のコードスニペットは、ローカルのディレクトリ全体をアーティファクトに追加する方法を示しています。
# ディレクトリを再帰的に追加 
artifact. add_dir(local_path= "path/file.format" , name= "optional-prefix" )
 以下の API 呼び出しは、以下のアーティファクトコンテンツを生成します。
  
      
          API Call 
          Resulting artifact 
       
   
  
      
          artifact.add_dir('images')cat.png
dog.png
 
      
          artifact.add_dir('images', name='images')images/cat.png
images/dog.png
 
      
          artifact.new_file('hello.txt')hello.txt 
   
URI リファレンスを追加 
アーティファクトは、URI が W&B ライブラリが扱えるスキームを持つ場合、再現性のためにチェックサムやその他の情報をトラッキングします。
add_reference'uri' 文字列を自分の URI で置き換えてください。オプションで、アーティファクト内の name パラメータの希望するパスを渡して下さい。
# URI リファレンスを追加 
artifact. add_reference(uri= "uri" , name= "optional-name" )
 現在、アーティファクトは以下の URI スキームをサポートしています。
http(s)://: HTTP 上でアクセス可能なファイルへのパス。HTTP サーバーが ETag や Content-Length レスポンスヘッダーをサポートしている場合、アーティファクトはエタグとサイズメタデータの形でチェックサムをトラッキングします。s3://: S3 内のオブジェクトまたはオブジェクトプレフィックスへのパス。アーティファクトは、参照されたオブジェクトのためのチェックサムとバージョン管理情報(バケットにオブジェクトバージョン管理が有効になっている場合)をトラッキングします。オブジェクトプレフィックスは、プレフィックスの下にあるオブジェクトを最大 10,000 個まで含むように展開されます。gs://: GCS 内のオブジェクトまたはオブジェクトプレフィックスへのパス。アーティファクトは、参照されたオブジェクトのためのチェックサムとバージョン管理情報(バケットにオブジェクトバージョン管理が有効になっている場合)をトラッキングします。オブジェクトプレフィックスは、プレフィックスの下にあるオブジェクトを最大 10,000 個まで含むように展開されます。 
以下の API 呼び出しは、以下のアーティファクトを生成します。
  
      
          API call 
          Resulting artifact contents 
       
   
  
      
          artifact.add_reference('s3://my-bucket/model.h5')model.h5 
      
          artifact.add_reference('s3://my-bucket/checkpoints/model.h5')model.h5 
      
          artifact.add_reference('s3://my-bucket/model.h5', name='models/mymodel.h5')models/mymodel.h5 
      
          artifact.add_reference('s3://my-bucket/images')cat.png
dog.png
 
      
          artifact.add_reference('s3://my-bucket/images', name='images')images/cat.png
images/dog.png
 
   
並行実行からアーティファクトにファイルを追加 
大規模な datasets または分散トレーニングの場合、複数の並行 run が単一のアーティファクトに貢献する必要があるかもしれません。
import  wandb
import  time
 # デモンストレーションのために、run を並行して起動するために ray を使用します。 
# 並行 run は任意の方法で調整できます。 
import  ray
 ray. init()
 
 artifact_type =  "dataset" 
 artifact_name =  "parallel-artifact" 
 table_name =  "distributed_table" 
 parts_path =  "parts" 
 num_parallel =  5 
 
 # 並行ライターの各バッチは、その独自の 
# グループ名を持つ必要があります。 
group_name =  "writer-group- {} " . format(round(time. time()))
 
 
 @ray.remote 
def  train (i):
    """
      各ライターは、アーティファクトに 1 つの画像を追加します。
     """ 
    with  wandb. init(group= group_name) as  run:
         artifact =  wandb. Artifact(name= artifact_name, type= artifact_type)
 
         # wandb テーブルにデータを追加します。この場合、例としてデータを使用します。 
         table =  wandb. Table(columns= ["a" , "b" , "c" ], data= [[i, i *  2 , 2 ** i]])
 
         # アーティファクト内のフォルダーにテーブルを追加します。 
         artifact. add(table, " {} /table_ {} " . format(parts_path, i))
 
         # アーティファクトをアップサーティングすることで、アーティファクトにデータを作成または追加します。 
         run. upsert_artifact(artifact)
 
 
 # 並行して run を起動 
result_ids =  [train. remote(i) for  i in  range(num_parallel)]
 
 # ファイルがアーティファクトに追加されたことを確認するために 
# すべてのライターを待機します。 
ray. get(result_ids)
 
 # すべてのライターが終了したら、アーティファクトを終了して 
# 使用可能であることをマークします。 
with  wandb. init(group= group_name) as  run:
    artifact =  wandb. Artifact(artifact_name, type= artifact_type)
 
     # "PartitionTable" を作成し、フォルダーのテーブルを指すようにして 
     # アーティファクトに追加します。 
     artifact. add(wandb. data_types. PartitionedTable(parts_path), table_name)
 
     # アーティファクトを終了することで、このバージョンへの 
     # 将来の"upserts"を禁止します。 
     run. finish_artifact(artifact)
  
    
	
  
    
    
	
    
    
	2 - アーティファクトをダウンロードして使用する 
    複数の Projects から Artifacts をダウンロードして使用する。
	すでに W&B サーバーに保存されているアーティファクトをダウンロードして使用するか、アーティファクト オブジェクトを構築して、必要に応じて重複排除のためにそれを渡します。
閲覧専用シートのチームメンバーは、アーティファクトをダウンロードできません。
W&B に保存されているアーティファクトをダウンロードして使用する 
W&B に保存されているアーティファクトを W&B Run の内外でダウンロードして使用します。Public API(wandb.ApiPublic API Reference guide  を参照してください。
  
  
  
  
      
        During a run
       
     
      
        Outside of a run
       
     
      
        W&B CLI
       
     
 
    
        まず、W&B Python SDK をインポートします。次に、W&B Run  を作成します。
import  wandb
 run =  wandb. init(project= "<example>" , job_type= "<job-type>" )
 使用したいアーティファクトを use_artifact'bike-dataset' というアーティファクトを 'latest' というエイリアスで指定しています。
artifact =  run. use_artifact("bike-dataset:latest" )
 戻されたオブジェクトを使って、アーティファクトの内容をすべてダウンロードします。
datadir =  artifact. download()
 アーティファクトの内容を特定のディレクトリーにダウンロードするには、root パラメータにパスをオプションで渡すことができます。詳細については、Python SDK Reference Guide  を参照してください。
get_path
path =  artifact. get_path(name)
 これにより、パス name のファイルのみが取得されます。次のメソッドを持つ Entry オブジェクトが返されます。
Entry.download: パス name のアーティファクトからファイルをダウンロードEntry.ref: add_reference がエントリーを参照として保存している場合、URI を返します。 
W&B が処理方法を知っているスキームを持つ参照は、アーティファクトファイルと同様にダウンロードされます。詳細については、Track external files  を参照してください。
     
    
        まず、W&B SDK をインポートします。次に、Public API クラスからアーティファクトを作成します。エンティティ、プロジェクト、アーティファクト、およびエイリアスをそのアーティファクトに関連付けます。
import  wandb
 api =  wandb. Api()
 artifact =  api. artifact("entity/project/artifact:alias" )
 戻されたオブジェクトを使って、アーティファクトの内容をダウンロードします。
アーティファクトの内容を特定のディレクトリーにダウンロードするために root パラメータにパスをオプションで渡すことができます。詳細については、API Reference Guide  を参照してください。
     
    
        wandb artifact get コマンドを使用して、W&B サーバーからアーティファクトをダウンロードします。
$ wandb artifact get project/artifact:alias --root mnist/
 
 
アーティファクトの一部をダウンロード 
プレフィックスを基にアーティファクトの一部をダウンロードすることができます。path_prefix パラメータを使用して、単一のファイルまたはサブフォルダーの内容をダウンロードします。
artifact =  run. use_artifact("bike-dataset:latest" )
 
 artifact. download(path_prefix= "bike.png" ) # bike.png のみをダウンロード 
 または、特定のディレクトリーからファイルをダウンロードすることもできます。
artifact. download(path_prefix= "images/bikes/" ) # images/bikes ディレクトリー内のファイルをダウンロード 
 別のプロジェクトからアーティファクトを使用する 
アーティファクトの名前とともにそのプロジェクト名を指定して、アーティファクトを参照します。また、エンティティ名でアーティファクトの名前を指定して、エンティティを超えてアーティファクトを参照することもできます。
次のコード例は、現在の W&B run に他のプロジェクトからのアーティファクトを入力としてクエリする方法を示しています。
import  wandb
 run =  wandb. init(project= "<example>" , job_type= "<job-type>" )
 # 他のプロジェクトからアーティファクトを W&B でクエリして、それを入力として 
# この run にマークします。 
artifact =  run. use_artifact("my-project/artifact:alias" )
 
 # 別のエンティティからアーティファクトを使用し、それを入力として 
# この run にマークします。 
artifact =  run. use_artifact("my-entity/my-project/artifact:alias" )
 アーティファクトを同時に構築して使用する 
アーティファクトを同時に構築して使用します。アーティファクト オブジェクトを作成して、それを use_artifact に渡します。これにより、W&B にアーティファクトが存在しない場合は作成されます。use_artifact
import  wandb
 artifact =  wandb. Artifact("reference model" )
 artifact. add_file("model.h5" )
 run. use_artifact(artifact)
 アーティファクトの構築に関する詳細については、Construct an artifact  を参照してください。
 
    
	
  
    
    
	
    
    
	3 - アーティファクトを更新する 
    既存のアーティファクトを W&B run の内外で更新します。
	アーティファクトの description、metadata、および alias に希望する値を渡します。W&B サーバー上でアーティファクトを更新するには、save() メソッドを呼び出してください。W&B Run の間または Run の外でアーティファクトを更新することができます。
W&B Public API (wandb.Apiwandb.Artifact
Model Registry にリンクされたアーティファクトのエイリアスを更新することはできません。
  
  
  
  
      
        During a run
       
     
      
        Outside of a run
       
     
      
        With collections
       
     
 
    
        次のコード例は、wandb.Artifact
import  wandb
 run =  wandb. init(project= "<example>" )
 artifact =  run. use_artifact("<artifact-name>:<alias>" )
 artifact. description =  "<description>" 
 artifact. save()
  
    
        次のコード例は、wandb.Api API を使用してアーティファクトの説明を更新する方法を示しています。
import  wandb
 api =  wandb. Api()
 
 artifact =  api. artifact("entity/project/artifact:alias" )
 
 # 説明を更新する 
artifact. description =  "My new description" 
 
 # メタデータキーを選択的に更新する 
artifact. metadata["oldKey" ] =  "new value" 
 
 # メタデータを完全に置き換える 
artifact. metadata =  {"newKey" : "new value" }
 
 # エイリアスを追加する 
artifact. aliases. append("best" )
 
 # エイリアスを削除する 
artifact. aliases. remove("latest" )
 
 # エイリアスを完全に置き換える 
artifact. aliases =  ["replaced" ]
 
 # すべてのアーティファクトの変更を保存する 
artifact. save()
 詳細は、Weights and Biases Artifact API  を参照してください。
     
    
        コレクションも単一のアーティファクトと同様に更新することができます。
import  wandb
run =  wandb. init(project= "<example>" )
 api =  wandb. Api()
 artifact =  api. artifact_collection(type= "<type-name>" , collection= "<collection-name>" )
 artifact. name =  "<new-collection-name>" 
 artifact. description =  "<This is where you'd describe the purpose of your collection.>" 
 artifact. save()
 詳細は Artifacts Collection  リファレンスを参照してください。
     
 
 
    
	
  
    
    
	
    
    
	4 - アーティファクトのエイリアスを作成する 
    W&B アーティファクトのカスタムエイリアスを作成します。
	エイリアスを特定のバージョンへのポインターとして使用します。デフォルトでは、Run.log_artifact はログされたバージョンに latest エイリアスを追加します。
アーティファクトバージョン v0 は、アーティファクトを初めてログする際に作成され、アーティファクトに付随します。W&B は、同じアーティファクトに再度ログを行うときにコンテンツのチェックサムを行います。アーティファクトが変更された場合、W&B は新しいバージョン v1 を保存します。
例えば、トレーニングスクリプトがデータセットの最新バージョンを取得する場合、そのアーティファクトを使用するときに latest を指定します。次のコード例は、エイリアス latest を持つデータセットアーティファクト bike-dataset をダウンロードする方法を示しています。
import  wandb
 run =  wandb. init(project= "<example-project>" )
 
 artifact =  run. use_artifact("bike-dataset:latest" )
 
 artifact. download()
 アーティファクトバージョンにカスタムエイリアスを適用することもできます。例えば、モデルのチェックポイントがメトリック AP-50 で最高であることを示すために、文字列 'best-ap50' をエイリアスとしてモデルアーティファクトにログを記録する際に追加できます。
artifact =  wandb. Artifact("run-3nq3ctyy-bike-model" , type= "model" )
 artifact. add_file("model.h5" )
 run. log_artifact(artifact, aliases= ["latest" , "best-ap50" ])
  
    
	
  
    
    
	
    
    
	5 - アーティファクト バージョンを作成する 
    新しいアーティファクト バージョンを単一の run または分散プロセスから作成します。
	新しいアーティファクトバージョンをシングル run  で作成するか、分散 run を使って共同で作成します。以前のバージョンから新しいアーティファクトバージョンを作成することもできます。これを インクリメンタルアーティファクト  と呼びます。
アーティファクト内のファイルの一部に変更を加える必要がある場合、元のアーティファクトのサイズがかなり大きい場合は、インクリメンタルアーティファクトを作成することをお勧めします。
新しいアーティファクトバージョンをゼロから作成する 
新しいアーティファクトバージョンを作成する方法は、シングル run と分散 run による2つがあります。それぞれ次のように定義されています:
シングル run : シングル run が新しいバージョンのすべてのデータを提供します。これは最も一般的なケースで、run が必要なデータを完全に再現する場合に最適です。例: 保存されたモデルやモデル予測を分析用のテーブルに出力する。分散 run : 複数の run のセットが共同して新しいバージョンのすべてのデータを提供します。これは、複数の run が並行してデータを生成する分散ジョブに最適です。例: モデルを分散的に評価し、予測を出力する。 
W&B は、プロジェクト内に存在しない名前を wandb.Artifact API に渡すと、新しいアーティファクトを作成し、それに v0 エイリアスを割り当てます。同じアーティファクトに再度ログを記録する際に内容をチェックサムします。アーティファクトが変更されている場合、W&B は新しいバージョン v1 を保存します。
プロジェクト内に既存のアーティファクトと一致する名前とアーティファクトタイプを wandb.Artifact API に渡すと、W&B は既存のアーティファクトを取得します。取得されたアーティファクトはバージョンが 1 より大きくなります。
シングル run 
アーティファクト内のすべてのファイルを生成するシングル run によって、新しいバージョンのアーティファクトをログします。このケースは、シングル run がアーティファクト内のすべてのファイルを生成する場合に発生します。
ユースケースに基づいて、以下のタブのいずれかを選択して、run 内または run 外で新しいアーティファクトバージョンを作成してください:
  
  
  
      
        Inside a run
       
     
      
        Outside of a run
       
     
 
    
        W&B run 内でアーティファクトバージョンを作成します:
wandb.init を使って run を作成。wandb.Artifact で新しいアーティファクトを作成するか、既存のアーティファクトを取得。.add_file を使用してファイルをアーティファクトに追加。.log_artifact を使ってアーティファクトを run にログ。 
with  wandb. init() as  run:
    artifact =  wandb. Artifact("artifact_name" , "artifact_type" )
 
     # Add Files and Assets to the artifact using 
     # `.add`, `.add_file`, `.add_dir`, and `.add_reference` 
     artifact. add_file("image1.png" )
     run. log_artifact(artifact)
  
    
        W&B run の外でアーティファクトバージョンを作成します:
wanb.Artifact で新しいアーティファクトを作成するか、既存のアーティファクトを取得。.add_file を使用してファイルをアーティファクトに追加。.save でアーティファクトを保存。 
artifact =  wandb. Artifact("artifact_name" , "artifact_type" )
 # Add Files and Assets to the artifact using 
# `.add`, `.add_file`, `.add_dir`, and `.add_reference` 
artifact. add_file("image1.png" )
 artifact. save()
  
 
分散 run 
バージョンをコミットする前に、複数の run が共同で作業します。これは、上記のシングル run モードとは対照的です。こちらは1つの run が新しいバージョンのすべてのデータを提供します。
コレクション内の各 run は、同じバージョンで共同作業をするために、同じユニークな ID ( distributed_id と呼ばれる) を認識している必要があります。デフォルトでは、存在する場合、W&B は run の group を、wandb.init(group=GROUP) によって設定された distributed_id として使用します。 
バージョンを「コミット」し、その状態を永続的にロックする最終 run が必要です。 
協調的なアーティファクトに追加するには upsert_artifact を使用し、コミットを最終的にするには finish_artifact を使用します。 
 
以下の例を考えてみてください。異なる run (以下で Run 1 、Run 2 、Run 3  とラベル付けされている) が upsert_artifact を使って同じアーティファクトに異なる画像ファイルを追加します。
Run 1 
with  wandb. init() as  run:
    artifact =  wandb. Artifact("artifact_name" , "artifact_type" )
     # Add Files and Assets to the artifact using 
     # `.add`, `.add_file`, `.add_dir`, and `.add_reference` 
     artifact. add_file("image1.png" )
     run. upsert_artifact(artifact, distributed_id= "my_dist_artifact" )
 Run 2 
with  wandb. init() as  run:
    artifact =  wandb. Artifact("artifact_name" , "artifact_type" )
     # Add Files and Assets to the artifact using 
     # `.add`, `.add_file`, `.add_dir`, and `.add_reference` 
     artifact. add_file("image2.png" )
     run. upsert_artifact(artifact, distributed_id= "my_dist_artifact" )
 Run 3 
Run 1 と Run 2 が完了した後に実行する必要があります。finish_artifact を呼び出す Run は、アーティファクトにファイルを含めることができますが、必須ではありません。
with  wandb. init() as  run:
    artifact =  wandb. Artifact("artifact_name" , "artifact_type" )
     # Add Files and Assets to the artifact 
     # `.add`, `.add_file`, `.add_dir`, and `.add_reference` 
     artifact. add_file("image3.png" )
     run. finish_artifact(artifact, distributed_id= "my_dist_artifact" )
 既存のバージョンから新しいアーティファクトバージョンを作成する 
前のアーティファクトバージョンからファイルのサブセットを追加、変更、または削除して、変更されていないファイルを再インデックスする必要はありません。前のアーティファクトバージョンからファイルのサブセットを追加、変更、または削除すると、新しいアーティファクトバージョンが作成され、これをインクリメンタルアーティファクト と呼びます。
以下は、遭遇する可能性のあるインクリメンタルな変更の各タイプに対するシナリオです:
add: 新しいバッチを収集した後、定期的にデータセットに新しいファイルのサブセットを追加します。 
remove: 重複ファイルをいくつか発見し、アーティファクトからそれらを削除することを希望します。 
update: ファイルのサブセットに対する注釈を修正し、古いファイルを正しいものと置き換えます。 
 
インクリメンタルアーティファクトとしての同じ機能を実行するためにアーティファクトをゼロから作成することもできます。しかし、アーティファクトをゼロから作成する場合、アーティファクトのすべての内容をローカルディスクに持っている必要があります。インクリメンタルな変更を行う場合、前のアーティファクトバージョンのファイルを変更せずに、個々のファイルを追加、削除、または変更できます。
単一の run で、または複数の run (分散モード) でインクリメンタルアーティファクトを作成できます。
以下の手順に従って、アーティファクトをインクリメンタルに変更します:
インクリメンタル変更を行いたいアーティファクトバージョンを取得します: 
 
  
      
        Inside a run
       
     
      
        Outside of a run
       
     
 
    
        saved_artifact =  run. use_artifact("my_artifact:latest" )
  
    
        client =  wandb. Api()
 saved_artifact =  client. artifact("my_artifact:latest" )
  
 
以下の方法でドラフトを作成します: 
 
draft_artifact =  saved_artifact. new_draft()
 
次のバージョンで見たいインクリメンタルな変更を行います。既存のエントリーを追加、削除、または変更することができます。 
 
各変更を行うための例については、以下のいずれかのタブを選択してください:
  
  
  
    
        add_file メソッドで既存のアーティファクトバージョンにファイルを追加します:
draft_artifact. add_file("file_to_add.txt" )
 add_dir メソッドを使用してディレクトリを追加することで、複数のファイルを追加することもできます。
  
     
    
        remove メソッドで既存のアーティファクトバージョンからファイルを削除します:
draft_artifact. remove("file_to_remove.txt" )
 remove メソッドにディレクトリパスを渡すことで、複数のファイルを削除することもできます。
  
     
    
        ドラフトから古い内容を削除し、新しい内容を追加することで、内容を変更または置き換えます:
draft_artifact. remove("modified_file.txt" )
 draft_artifact. add_file("modified_file.txt" )
  
 
最後に、変更をログまたは保存します。以下のタブは、W&B run の内外で変更を保存する方法を示しています。適切なユースケースに応じてタブを選択してください: 
 
  
  
  
      
        Inside a run
       
     
      
        Outside of a run
       
     
 
    
        run. log_artifact(draft_artifact)
  
    
 
以上のコード例をまとめると、以下のようになります:
  
  
  
      
        Inside a run
       
     
      
        Outside of a run
       
     
 
    
        with  wandb. init(job_type= "modify dataset" ) as  run:
    saved_artifact =  run. use_artifact(
         "my_artifact:latest" 
     )  # fetch artifact and input it into your run 
     draft_artifact =  saved_artifact. new_draft()  # create a draft version 
 
     # modify a subset of files in the draft version 
     draft_artifact. add_file("file_to_add.txt" )
     draft_artifact. remove("dir_to_remove/" )
     run. log_artifact(
         artifact
     )  # log your changes to create a new version and mark it as output to your run 
  
    
        client =  wandb. Api()
 saved_artifact =  client. artifact("my_artifact:latest" )  # load your artifact 
 draft_artifact =  saved_artifact. new_draft()  # create a draft version 
 
 # modify a subset of files in the draft version 
draft_artifact. remove("deleted_file.txt" )
 draft_artifact. add_file("modified_file.txt" )
 draft_artifact. save()  # commit changes to the draft 
  
 
 
    
	
  
    
    
	
    
    
	6 - 外部ファイルをトラックする 
    W&B の外部に保存されたファイルも、Amazon S3 バケット、GCS バケット、HTTP ファイルサーバー、または NFS 共有内のファイルとしてトラックできます。
	リファレンスアーティファクト を使用して、Amazon S3 バケット、GCS バケット、Azure blob、HTTP ファイルサーバー、または NFS シェアなど、W&B システムの外部に保存されたファイルをトラッキングします。 W&B CLI を使用して、W&B Run の外部でアーティファクトをログします。
Run の外部でアーティファクトをログする 
W&B は、run の外部でアーティファクトをログするときに run を作成します。各アーティファクトは run に属し、run はプロジェクトに属します。アーティファクト (バージョン) もコレクションに属し、タイプを持ちます。
wandb artifact putproject/artifact_name) を指定します。必要に応じて、タイプ (TYPE) を指定します。以下のコードスニペットでは、アップロードしたいアーティファクトのファイルパスに PATH を置き換えてください。
$ wandb artifact put --name project/artifact_name --type TYPE PATH
 指定したプロジェクトが存在しない場合、W&B は新しいプロジェクトを作成します。アーティファクトのダウンロード方法については、アーティファクトのダウンロードと使用 を参照してください。
W&B の外部でアーティファクトをトラッキングする 
W&B Artifacts をデータセットのバージョン管理やモデルのリネージに使用し、リファレンスアーティファクト を使用して W&B サーバーの外部に保存されたファイルをトラッキングします。このモードでは、アーティファクトはファイルに関するメタデータ (例えば、URL、サイズ、チェックサム) のみを保存します。基礎データはシステムから離れることはありません。ファイルとディレクトリーを W&B サーバーに保存する方法については、クイックスタート を参照してください。
以下は、リファレンスアーティファクトを作成し、それをワークフローに最適に組み込む方法を説明します。
Amazon S3 / GCS / Azure Blob Storage リファレンス 
W&B Artifacts をデータセットとモデルのバージョン管理に使用して、クラウドストレージバケットでのリファレンスをトラッキングします。アーティファクトリファレンスを使用すると、既存のストレージレイアウトに変更を加えることなく、バケットの上にシームレスにトラッキングをレイヤリングできます。
Artifacts は基礎となるクラウドストレージベンダー (AWS、GCP、Azure など) を抽象化します。次のセクションで説明される情報は、Amazon S3、Google Cloud Storage、Azure Blob Storage に共通して適用されます。
W&B Artifacts は、MinIO を含む任意の Amazon S3 互換インターフェースをサポートしています。 AWS_S3_ENDPOINT_URL 環境変数を MinIO サーバーを指すように設定すれば、以下のスクリプトはそのまま動作します。
次の構造を持つバケットがあると仮定します:
s3://my-bucket
 +-- datasets/
 |		+-- mnist/
 +-- models/
 		+-- cnn/
 mnist/ の下には、私たちのデータセットである画像のコレクションがあります。アーティファクトでそれをトラッキングしましょう:
import  wandb
 run =  wandb. init()
 artifact =  wandb. Artifact("mnist" , type= "dataset" )
 artifact. add_reference("s3://my-bucket/datasets/mnist" )
 run. log_artifact(artifact)
 デフォルトでは、W&B はオブジェクトプリフィックスを追加する際に 10,000 オブジェクトの制限を課しています。この制限は、add_reference の呼び出しで max_objects= を指定することによって調整できます。
新しいリファレンスアーティファクト mnist:latest は、通常のアーティファクトと非常に似た外観と挙動を持っています。唯一の違いは、アーティファクトが S3/GCS/Azure オブジェクトに関するメタデータ (例えば、ETag、サイズ、バージョン ID) のみを含んでいることです (バケットにオブジェクトのバージョン管理が有効になっている場合)。
W&B は、使用するクラウドプロバイダーに基づいてクレデンシャルを探すデフォルトのメカニズムを使用します。クラウドプロバイダーからのドキュメントを読み、使用されるクレデンシャルについて詳しく学びましょう。
AWS では、バケットが設定されたユーザーのデフォルトリージョンに位置していない場合、AWS_REGION 環境変数をバケットリージョンに一致させる必要があります。
このアーティファクトを通常のアーティファクトのように扱うことができます。アプリ UI では、ファイルブラウザを使用してリファレンスアーティファクトの内容を閲覧したり、完全な依存関係グラフを探索したり、アーティファクトのバージョン履歴をスキャンしたりできます。
画像、オーディオ、ビデオ、ポイントクラウドといったリッチメディアは、バケットの CORS 設定によってアプリ UI で適切にレンダリングされない可能性があります。バケットの CORS 設定で app.wandb.ai  を許可リストに追加することで、アプリ UI でこれらのリッチメディアが正しくレンダリングされるようになります。
パネルは、プライベートバケットの場合アプリ UI でレンダリングされないかもしれません。もし会社が VPN を使用している場合は、VPN 内の IP をホワイトリストに追加するようにバケットのアクセスポリシーを更新できます。
リファレンスアーティファクトをダウンロードする 
import  wandb
 run =  wandb. init()
 artifact =  run. use_artifact("mnist:latest" , type= "dataset" )
 artifact_dir =  artifact. download()
 W&B は、リファレンスアーティファクトをダウンロードする際に、アーティファクトがログされたときに記録されたメタデータを使用して、基となるバケットからファイルを取得します。バケットにオブジェクトのバージョン管理が有効になっている場合、W&B はアーティファクトがログされた時点のファイルの状態に対応するオブジェクトバージョンを取得します。これは、バケットの内容が進化しても、アーティファクトがトレーニングされた特定の反復にあなたのデータを指し示すことができることを意味します。アーティファクトはトレーニング時点でのバケットのスナップショットとして機能します。
ワークフローの一環としてファイルを上書きする場合は、W&B はストレージバケットの「オブジェクトバージョン管理」を有効にすることを推奨します。バケットにバージョン管理が有効になっている場合、上書きされたファイルへのリファレンスを持つアーティファクトも依然として無傷であることになります。なぜなら、古いバージョンのオブジェクトが保持されるからです。
ユースケースに基づいて、オブジェクトバージョン管理を有効にする手順をお読みください。AWS 、GCP 、Azure 。
すべてを結び付ける 
次のコード例は、トレーニングジョブに供給される Amazon S3、GCS、または Azure 上のデータセットをトラッキングするために使用できる単純なワークフローを示しています:
import  wandb
 run =  wandb. init()
 
 artifact =  wandb. Artifact("mnist" , type= "dataset" )
 artifact. add_reference("s3://my-bucket/datasets/mnist" )
 
 # アーティファクトをトラッキングし、それを 
# この run の入力としてマークします。 
# バケット内のファイルが変更された場合にのみ、新しい 
# アーティファクトバージョンがログされます。 
run. use_artifact(artifact)
 
 artifact_dir =  artifact. download()
 
 # トレーニングをここで実行... 
モデルをトラッキングするために、トレーニングスクリプトがモデルファイルをバケットにアップロードした後に、モデルアーティファクトをログできます:
import  boto3
import  wandb
 run =  wandb. init()
 
 # トレーニングをここで実行... 
 s3_client =  boto3. client("s3" )
 s3_client. upload_file("my_model.h5" , "my-bucket" , "models/cnn/my_model.h5" )
 
 model_artifact =  wandb. Artifact("cnn" , type= "model" )
 model_artifact. add_reference("s3://my-bucket/models/cnn/" )
 run. log_artifact(model_artifact)
 GCP または Azure のリファレンスでのアーティファクトのトラッキング方法についてのエンドツーエンドのガイドを読むには、次のレポートをご覧ください:
ファイルシステムリファレンス 
データセットへの高速アクセスのためのもう一つの一般的なパターンは、NFS マウントポイントをトレーニングジョブを実行するすべてのマシンでリモートファイルシステムに公開することです。これは、クラウドストレージバケットよりもさらに簡単なソリューションになる可能性があります。トレーニングスクリプトの視点からは、ファイルはちょうどローカルファイルシステムに置かれているかのように見えるからです。幸運にも、その使いやすさは、ファイルシステムへのリファレンスをトラッキングするために Artifacts を使用する場合にも当てはまります。ファイルシステムがマウントされているかどうかに関係なくです。
次の構造を持つファイルシステムが /mount にマウントされていると仮定します:
mount
 +-- datasets/
 |		+-- mnist/
 +-- models/
 		+-- cnn/
 mnist/ の下には、私たちのデータセットである画像のコレクションがあります。アーティファクトでそれをトラッキングしましょう:
import  wandb
 run =  wandb. init()
 artifact =  wandb. Artifact("mnist" , type= "dataset" )
 artifact. add_reference("file:///mount/datasets/mnist/" )
 run. log_artifact(artifact)
 デフォルトでは、W&B はディレクトリへのリファレンスを追加する際に 10,000 ファイルの制限を課しています。この制限は、add_reference の呼び出しで max_objects= を指定することによって調整できます。
URL のトリプルスラッシュに注目してください。最初のコンポーネントは、ファイルシステムリファレンスの使用を示す file:// プレフィックスです。二番目は、データセットのパス /mount/datasets/mnist/ です。
結果として得られるアーティファクト mnist:latest は通常のアーティファクトのように見え、機能します。唯一の違いは、アーティファクトがファイルに関するメタデータ (サイズや MD5 チェックサムなど) のみを含んでいることです。ファイル自体はシステムから離れることはありません。
このアーティファクトを通常のアーティファクトのように操作できます。UI では、ファイルブラウザを使用してリファレンスアーティファクトの内容を閲覧したり、完全な依存関係グラフを探索したり、アーティファクトのバージョン履歴をスキャンしたりできます。ただし、アーティファクト自体にデータが含まれていないため、UI では画像、オーディオなどのリッチメディアをレンダリングできません。
リファレンスアーティファクトをダウンロードするのは簡単です:
import  wandb
 run =  wandb. init()
 artifact =  run. use_artifact("entity/project/mnist:latest" , type= "dataset" )
 artifact_dir =  artifact. download()
 ファイルシステムリファレンスの場合、download() 操作は参照されたパスからファイルをコピーして、アーティファクトディレクトリを構築します。上記の例では、/mount/datasets/mnist の内容がディレクトリ artifacts/mnist:v0/ にコピーされます。アーティファクトが上書きされたファイルへのリファレンスを含む場合、download() はエラーを投げます。アーティファクトがもはや再構築できないからです。
すべてをまとめると、ここにマウントされたファイルシステムの下のデータセットをトラッキングして、トレーニングジョブに供給するために使用できる簡単なワークフローがあります:
import  wandb
 run =  wandb. init()
 
 artifact =  wandb. Artifact("mnist" , type= "dataset" )
 artifact. add_reference("file:///mount/datasets/mnist/" )
 
 # アーティファクトをトラッキングし、それを 
# この run の入力としてマークします。ディレクトリ下の 
# ファイルが変更された場合にのみ、新しいアーティファクト 
# バージョンがログされます。 
run. use_artifact(artifact)
 
 artifact_dir =  artifact. download()
 
 # トレーニングをここで実行... 
モデルをトラッキングするために、トレーニングスクリプトがモデルファイルをマウントポイントに書き込んだ後に、モデルアーティファクトをログできます:
import  wandb
 run =  wandb. init()
 
 # トレーニングをここで実行... 
 # モデルをディスクに書き込む 
 model_artifact =  wandb. Artifact("cnn" , type= "model" )
 model_artifact. add_reference("file:///mount/cnn/my_model.h5" )
 run. log_artifact(model_artifact)
  
    
	
  
    
    
	
    
    
	
7 - データを管理する 
    
	
    
      
  
  
  
  
  
  
  
    
    
	
    
    
	7.1 - アーティファクトデータ保持の管理 
    存続期間 (TTL) ポリシー
	
W&B の Artifacts のタイム・トゥ・リブ(TTL)ポリシーを使用して、Artifacts が W&B から削除されるスケジュールを設定します。Artifact を削除すると、W&B はそのアーティファクトを ソフト削除  としてマークします。つまり、アーティファクトは削除対象としてマークされますが、ファイルはすぐにストレージから削除されるわけではありません。W&B がアーティファクトを削除する方法の詳細については、アーティファクトを削除 ページを参照してください。
W&B アプリで Artifacts TTL を使って データ保持を管理する方法を学ぶには、この  ビデオチュートリアルをご覧ください。
W&B は、モデルレジストリにリンクされたモデルアーティファクトの TTL ポリシーを設定するオプションを非アクティブ化します。これは、生産ワークフローで使用されるリンクされたモデルが誤って期限切れにならないようにするためです。
チームの設定](/ja/guides/models/app/settings-page/team-settings/)と、(1) TTL ポリシーを設定または編集できる人を許可するか、(2) チームのデフォルト TTL を設定するかなどのチームレベルの TTL 設定は、チーム管理者のみが表示およびアクセスできます。 
W&B アプリ UI のアーティファクトの詳細に TTL ポリシーを設定または編集するオプションが表示されない場合、またはプログラムで TTL を設定してもアーティファクトの TTL プロパティが正常に変更されない場合は、チーム管理者が権限を付与していません。 
 
自動生成された Artifacts 
ユーザー生成のアーティファクトのみが TTL ポリシーを使用できます。W&B によって自動生成されたアーティファクトには TTL ポリシーを設定することはできません。
自動生成されたアーティファクトを示すアーティファクトタイプは次のとおりです:
run_tablecodejobwandb-* で始まる種類のアーティファクト 
アーティファクトの種類は、W&B プラットフォーム またはプログラムで確認できます:
import  wandb
 run =  wandb. init(project= "<my-project-name>" )
 artifact =  run. use_artifact(artifact_or_name= "<my-artifact-name>" )
 print(artifact. type)
 含まれる <> で囲まれた値をあなたのものに置き換えてください。
TTL ポリシーを編集および設定できる人を定義する 
チーム内で TTL ポリシーを設定および編集できる人を定義します。TTL 許可をチーム管理者のみに与えることもできますし、チーム管理者とチームメンバーの両方に TTL 許可を与えることもできます。
TTL ポリシーを設定または編集できる人を定義できるのはチーム管理者だけです。
チームのプロフィールページに移動します。 
設定  タブを選択します。Artifacts のタイム・トゥ・リブ (TTL) セクション に移動します。TTL 許可のドロップダウン から、TTL ポリシーを設定および編集できる人を選択します。設定をレビューして保存 をクリックします。変更を確認し、設定を保存 を選択します。 
 
TTL ポリシーを作成する 
アーティファクトを作成するとき、または作成後に TTL ポリシーを設定します。
以下のコードスニペットすべてにおいて、 <> で包まれた内容をあなたの情報に置き換えてコードスニペットを使用してください。
アーティファクト作成時に TTL ポリシーを設定する 
W&B Python SDK を使用してアーティファクトを作成する際に TTL ポリシーを定義します。TTL ポリシーは通常日数で定義されます。
アーティファクト作成時に TTL ポリシーを定義することは、通常の
アーティファクトを作成 する方法に似ています。例外は、アーティファクトの 
ttl 属性に時間差を渡す点です。
手順は次のとおりです:
アーティファクトを作成 します。ファイル、ディレクトリ、または参照など、アーティファクトにコンテンツを追加 します。 
Python の標準ライブラリの一部である datetime.timedelta 
アーティファクトをログ します。 
以下のコードスニペットはアーティファクトを作成し、TTL ポリシーを設定する方法を示しています。
import  wandb
from  datetime import  timedelta
 run =  wandb. init(project= "<my-project-name>" , entity= "<my-entity>" )
 artifact =  wandb. Artifact(name= "<artifact-name>" , type= "<type>" )
 artifact. add_file("<my_file>" )
 
 artifact. ttl =  timedelta(days= 30 )  # TTL ポリシーを設定 
 run. log_artifact(artifact)
 上記のコードスニペットは、アーティファクトの TTL ポリシーを 30 日間に設定します。つまり、W&B は 30 日後にアーティファクトを削除します。
アーティファクト作成後に TTL ポリシーを設定または編集する 
存在するアーティファクトに対して W&B アプリの UI または W&B Python SDK を使用して TTL ポリシーを定義します。
アーティファクトの TTL を変更する場合、アーティファクトの期限切れまでの時間は、アーティファクトの作成時刻 (createdAt タイムスタンプ) を基に計算されます。
  
  
    
        
あなたのアーティファクトを取得 します。アーティファクトの ttl 属性に時間差を渡します。 
save 
以下のコードスニペットは、アーティファクトに TTL ポリシーを設定する方法を示しています:
import  wandb
from  datetime import  timedelta
 artifact =  run. use_artifact("<my-entity/my-project/my-artifact:alias>" )
 artifact. ttl =  timedelta(days= 365  *  2 )  # 2年後に削除 
 artifact. save()
 上記のコード例では、TTL ポリシーを2年間に設定します。
     
    
        
W&B アプリ UI の W&B プロジェクトに移動します。 
左のパネルでアーティファクトアイコンを選択します。 
アーティファクトの一覧からアーティファクトタイプを展開します。 
TTL ポリシーを編集したいアーティファクトバージョンを選択します。 
バージョン  タブをクリックします。ドロップダウンから TTL ポリシー編集  を選択します。 
表示されるモーダル内で、TTL ポリシードロップダウンから カスタム  を選択します。 
TTL 期間 フィールドで、日数単位で TTL ポリシーを設定します。TTL 更新  ボタンを選択して変更を保存します。 
 
 
チームのデフォルト TTL ポリシーを設定する 
チームのデフォルト TTL ポリシーを設定できるのはチーム管理者だけです。
チームのデフォルト TTL ポリシーを設定します。デフォルトの TTL ポリシーは、既存と今後のアーティファクトすべてに、その作成日を基に適用されます。バージョンレベルで既に TTL ポリシーが存在するアーティファクトは、チームのデフォルト TTL に影響を受けません。
チームのプロフィールページに移動します。 
設定  タブを選択します。Artifacts のタイム・トゥ・リブ (TTL) セクション に移動します。チームのデフォルト TTL ポリシー設定  をクリックします。期間 フィールドにおいて、日数単位で TTL ポリシーを設定します。設定をレビューして保存  をクリックします。変更を確認し、設定を保存  を選択します。 
 
run 外で TTL ポリシーを設定する 
公開 API を使って run を取得せずにアーティファクトを取得し、TTL ポリシーを設定します。TTL ポリシーは通常日数単位で定義されます。
以下のコードサンプルは、公開 API を使用してアーティファクトを取得し、TTL ポリシーを設定する方法を示しています。
api =  wandb. Api()
 
 artifact =  api. artifact("entity/project/artifact:alias" )
 
 artifact. ttl =  timedelta(days= 365 )  # 1年後削除 
 
 artifact. save()
 TTL ポリシーを非アクティブにする 
W&B Python SDK または W&B アプリ UI を使用して、特定のアーティファクトバージョンの TTL ポリシーを非アクティブにします。
  
  
    
        
あなたのアーティファクトを取得 します。アーティファクトの ttl 属性を None に設定します。 
save 
以下のコードスニペットは、アーティファクトに対する TTL ポリシーをオフにする方法を示しています:
artifact =  run. use_artifact("<my-entity/my-project/my-artifact:alias>" )
 artifact. ttl =  None 
 artifact. save()
  
    
        
W&B アプリ UI の W&B プロジェクトに移動します。 
左パネルでアーティファクトアイコンを選択します。 
アーティファクトのリストからアーティファクトタイプを展開します。 
TTL ポリシーを編集したいアーティファクトバージョンを選択します。 
バージョンタブをクリックします。 
リンク先レジストリ  ボタンの隣にある肉球 UI アイコンをクリックします。ドロップダウンから TTL ポリシー編集  を選択します。 
表示されるモーダル内で、TTL ポリシードロップダウンから 非アクティブ  を選択します。 
変更を保存するために TTL 更新  ボタンを選択します。 
 
 
 
TTL ポリシーを確認する 
W&B Python SDK または W&B アプリ UI を使用して、アーティファクトの TTL ポリシーを確認します。
  
  
    
        print 文を使用してアーティファクトの TTL ポリシーを表示します。以下の例では、アーティファクトを取得してその TTL ポリシーを表示する方法を示しています:
artifact =  run. use_artifact("<my-entity/my-project/my-artifact:alias>" )
 print(artifact. ttl)
  
    
        W&B アプリ UI を使用してアーティファクトの TTL ポリシーを表示します。
W&B アプリの https://wandb.ai  に移動します。 
あなたの W&B プロジェクトに移動します。 
プロジェクト内で、左のサイドバーの Artifacts タブを選択します。 
コレクションをクリックします。 
 
選択されたコレクション内のすべてのアーティファクトが表示されます。Time to Live 列にそのアーティファクトに割り当てられた TTL ポリシーが表示されます。
 
 
 
    
	
  
    
    
	
    
    
	7.2 - アーティファクトのストレージとメモリの割り当てを管理する 
    W&B アーティファクトのストレージやメモリ割り当てを管理します。
	W&B は、アーティファクトファイルを米国にある Google Cloud Storage のプライベートバケットにデフォルトで保存します。すべてのファイルは、静止時および転送中に暗号化されています。
機密性の高いファイルには、プライベートホスティング の設定や参照アーティファクト の使用をお勧めします。
トレーニング中、W&B はログ、アーティファクト、および設定ファイルを以下のローカルディレクトリーにローカル保存します:
  
      
          File 
          Default location 
          To change default location set: 
       
   
  
      
          logs 
          ./wandbwandb.init の dir または WANDB_DIR 環境変数を設定 
      
          artifacts 
          ~/.cache/wandbWANDB_CACHE_DIR 環境変数を設定 
      
          configs 
          ~/.config/wandbWANDB_CONFIG_DIR 環境変数を設定 
      
          ステージング用アーティファクトのアップロード 
          ~/.cache/wandb-data/WANDB_DATA_DIR 環境変数を設定 
      
          ダウンロードされたアーティファクト 
          ./artifactsWANDB_ARTIFACT_DIR 環境変数を設定 
   
W&B を設定するための環境変数の完全なガイドについては、環境変数リファレンス を参照してください。
wandb が初期化されたマシンによっては、これらのデフォルトフォルダーがファイルシステムの書き込み可能な部分にない場合があります。これによりエラーが発生する可能性があります。
ローカルのアーティファクトキャッシュをクリーンアップする 
W&B は、共通ファイルを共有するバージョン間でダウンロードを高速化するためにアーティファクトファイルをキャッシュします。時間の経過とともに、このキャッシュディレクトリーは大きくなる可能性があります。キャッシュを整理し、最近使用されていないファイルを削除するために、wandb artifact cache cleanup
以下のコードスニペットは、キャッシュサイズを1GBに制限する方法を示しています。コードスニペットをコピーしてターミナルに貼り付けてください:
$ wandb artifact cache cleanup 1GB
  
    
	
  
    
    
	
    
    
	7.3 - アーティファクトを削除する 
    アプリ UI を使って対話的に、または W&B SDK を使用してプログラムでアーティファクトを削除します。
	アーティファクトは、App UI でインタラクティブに削除するか、W&B SDK でプログラム的に削除できます。アーティファクトを削除すると、W&B はそのアーティファクトをソフト削除 としてマークします。つまり、そのアーティファクトは削除予定としてマークされますが、ファイルはすぐにはストレージから削除されません。
アーティファクトの内容は、定期的に実行されるガベージコレクション プロセスが削除対象としてマークされたすべてのアーティファクトをレビューするまで、ソフト削除または削除保留状態のままです。ガベージコレクションプロセスは、アーティファクトおよびその関連ファイルが以前または後のアーティファクトバージョンで使用されていない場合、関連ファイルをストレージから削除します。
このページのセクションでは、特定のアーティファクトバージョンの削除方法、アーティファクトコレクションの削除方法、エイリアスを持つアーティファクトの削除方法、エイリアスがないアーティファクトの削除方法などについて説明します。アーティファクトが W&B から削除される時間を TTL ポリシーでスケジュールできます。詳細については、Artifact TTL ポリシーによるデータ保持の管理 を参照してください。
TTL ポリシーで削除予定のアーティファクト、W&B SDK で削除されたアーティファクト、または W&B App UI で削除されたアーティファクトは、最初にソフト削除されます。ソフト削除されたアーティファクトは、最終的にハード削除される前にガベージコレクションを受けます。
アーティファクトバージョンの削除 
アーティファクトバージョンを削除するには:
アーティファクトの名前を選択します。これにより、アーティファクトビューが拡張され、そのアーティファクトに関連付けられたすべてのアーティファクトバージョンが一覧表示されます。 
アーティファクトのリストから、削除したいアーティファクトバージョンを選択します。 
ワークスペースの右側にあるケバブドロップダウンを選択します。 
「Delete」を選択します。 
 
アーティファクトバージョンは、delete()  メソッドを使用してプログラム的にも削除できます。以下の例を参照してください。
エイリアスを持つ複数のアーティファクトバージョンの削除 
次のコード例は、エイリアスを持つアーティファクトを削除する方法を示しています。アーティファクトを作成したエンティティ、プロジェクト名、および run ID を指定してください。
import  wandb
 run =  api. run("entity/project/run_id" )
 
 for  artifact in  run. logged_artifacts():
    artifact. delete()
 アーティファクトに 1 つ以上のエイリアスがある場合、delete_aliases パラメータをブール値 True に設定してエイリアスを削除します。
import  wandb
 run =  api. run("entity/project/run_id" )
 
 for  artifact in  run. logged_artifacts():
    # delete_aliases=True を設定して、 
     # エイリアスを 1 つ以上持つアーティファクトを削除します 
     artifact. delete(delete_aliases= True )
 特定のエイリアスを持つ複数のアーティファクトバージョンを削除 
以下のコードは、特定のエイリアスを持つ複数のアーティファクトバージョンを削除する方法を示しています。アーティファクトを作成したエンティティ、プロジェクト名、および run ID を指定します。削除ロジックは独自のものに置き換えてください:
import  wandb
 runs =  api. run("entity/project_name/run_id" )
 
 # 'v3' および 'v4' のエイリアスを持つアーティファクトを削除 
for  artifact_version in  runs. logged_artifacts():
    # 独自の削除ロジックに置き換えます。 
     if  artifact_version. name[- 2 :] ==  "v3"  or  artifact_version. name[- 2 :] ==  "v4" :
         artifact. delete(delete_aliases= True )
 エイリアスを持たないアーティファクトのすべてのバージョンを削除 
次のコードスニペットは、エイリアスを持たないアーティファクトのすべてのバージョンを削除する方法を示しています。wandb.Api の project および entity キーにプロジェクト名とエンティティの名前をそれぞれ指定してください。<> をアーティファクトの名前に置き換えてください:
import  wandb
 # wandb.Api メソッドを使用する際に、エンティティとプロジェクト名を指定してください。 
api =  wandb. Api(overrides= {"project" : "project" , "entity" : "entity" })
 
 artifact_type, artifact_name =  "<>"   # タイプと名前を指定 
 for  v in  api. artifact_versions(artifact_type, artifact_name):
    # 'latest' などのエイリアスを持たないバージョンをクリーンアップします。 
     # 注意: ここには任意の削除ロジックを置くことができます。 
     if  len(v. aliases) ==  0 :
         v. delete()
 アーティファクトコレクションの削除 
アーティファクトコレクションを削除するには:
削除したいアーティファクトコレクションに移動し、その上にカーソルを合わせます。 
アーティファクトコレクション名の横にあるケバブドロップダウンを選択します。 
「Delete」を選択します。 
 
アーティファクトコレクションは、delete()  メソッドを使用してプログラムで削除することもできます。wandb.Api の project および entity キーにプロジェクト名とエンティティの名前を指定してください:
import  wandb
 # wandb.Api メソッドを使用する際に、エンティティとプロジェクト名を指定してください。 
api =  wandb. Api(overrides= {"project" : "project" , "entity" : "entity" })
 collection =  api. artifact_collection(
     "<artifact_type>" , "entity/project/artifact_collection_name" 
 )
 collection. delete()
 W&B がホストされている方法に基づいたガベージコレクションの有効化方法 
W&B の共有クラウドを使用している場合、ガベージコレクションはデフォルトで有効です。W&B をホストする方法に基づいて、ガベージコレクションを有効にするために追加の手順が必要な場合があります。これには以下が含まれます:
以下の表は、デプロイメントタイプに基づいてガベージコレクションを有効にするための要件を満たす方法を説明しています。
X は要件を満たす必要があることを示します:
注意
セキュアストレージコネクタは現在、Google Cloud Platform および Amazon Web Services のみで利用可能です。
 
    
	
  
    
	
  
    
    
	
    
    
	8 - アーティファクトグラフの探索 
    W&B アーティファクト の自動生成された有向非巡回グラフを トラバース します。
	W&B は、特定の run がログしたアーティファクトや、その run が利用したアーティファクトを自動で追跡します。これらのアーティファクトには、データセットやモデル、評価結果、その他が含まれることがあります。機械学習ライフサイクル全体で生成されたさまざまなアーティファクトを追跡および管理するために、アーティファクトのリネージを探索できます。
リネージ 
アーティファクトのリネージを追跡することには、いくつかの主要な利点があります:
再現性: すべてのアーティファクトのリネージを追跡することで、チームは実験やモデル、結果を再現でき、デバッグ、実験、および機械学習モデルの検証に不可欠です。
 
バージョン管理: アーティファクトのリネージには、アーティファクトのバージョン管理とその変更の追跡が含まれます。必要に応じて、チームはデータやモデルの以前のバージョンに戻すことができます。
 
監査: アーティファクトとその変換の詳細な履歴を持つことで、組織は規制やガバナンスの要件に準拠できます。
 
コラボレーションと知識共有: アーティファクトのリネージは、試行された記録が明確に示されており、何がうまくいって何がうまくいかなかったかを提供することで、チームメンバー間のより良いコラボレーションを促進します。これにより、努力の重複を避け、開発プロセスを加速させます。
 
 
アーティファクトのリネージを見つける 
Artifacts  タブでアーティファクトを選択すると、アーティファクトのリネージを見ることができます。このグラフビューは、パイプラインの全体的な概要を示します。
アーティファクトグラフを見るには:
W&B App UI でプロジェクトに移動します。 
左のパネルでアーティファクトアイコンを選びます。 
Lineage  を選択します。 
リネージグラフのナビゲート 
指定したアーティファクトやジョブタイプは、その名前の前に表示され、アーティファクトは青のアイコン、Runs は緑のアイコンで表されます。矢印は、グラフ上での run またはアーティファクトの入力と出力を示します。
アーティファクトのタイプと名前は、左のサイドバーと Lineage  タブの両方で確認できます。
より詳細なビューを得るために、個別のアーティファクトまたは run をクリックして、特定のオブジェクトに関する詳細情報を取得します。
アーティファクトクラスター 
グラフのあるレベルに run またはアーティファクトが5つ以上ある場合、クラスターが作成されます。クラスターには、特定のバージョンの run またはアーティファクトを見つけるための検索バーがあり、クラスター内のノードを個別にプルしてそのリネージを調査することができます。
ノードをクリックすると、そのノードのプレビューが表示され、概要が示されます。矢印をクリックすると、個別の run またはアーティファクトが抽出され、抽出されたノードのリネージを調べることができます。
API を使用してリネージを追跡する 
W&B API  を使用してグラフをナビゲートすることもできます。
まず run を wandb.init で作成します。次に、wandb.Artifact で新しいアーティファクトを作成するか、既存のアーティファクトを取得します。次に、.add_file を使用してアーティファクトにファイルを追加します。最後に、.log_artifact でアーティファクトを run にログします。完成したコードは次のようになります:
with  wandb. init() as  run:
    artifact =  wandb. Artifact("artifact_name" , "artifact_type" )
 
     # `.add`, `.add_file`, `.add_dir`, `.add_reference` を使用して 
     # アーティファクトにファイルやアセットを追加します 
     artifact. add_file("image1.png" )
     run. log_artifact(artifact)
 アーティファクトオブジェクトの logged_byused_by
# アーティファクトからグラフを上下にたどります: 
producer_run =  artifact. logged_by()
 consumer_runs =  artifact. used_by()
 次のステップ 
 
    
	
  
    
    
	
    
    
	9 - アーティファクトのデータプライバシーとコンプライアンス 
    デフォルトで W&B ファイルが保存される場所を学びましょう。機密情報の保存方法について探索します。
	ファイルは、Artifacts をログするときに W&B が管理する Google Cloud バケットにアップロードされます。バケットの内容は、保存中および転送中の両方で暗号化されます。Artifact ファイルは、対応するプロジェクトへのアクセス権を持つユーザーにのみ表示されます。
アーティファクトのバージョンを削除すると、そのバージョンはデータベースでソフト削除としてマークされ、ストレージコストからも除外されます。アーティファクト全体を削除すると、それは完全削除のためにキューに入れられ、その内容はすべて W&B バケットから削除されます。ファイル削除に関する特定のニーズがある場合は、Customer Support  にお問い合わせください。
マルチテナント環境に存在できない機密データセットには、クラウドバケットに接続されたプライベート W&B サーバーまたは reference artifacts  を使用することができます。Reference artifacts は、ファイル内容を W&B に送信せずに、プライベートバケットへの参照を追跡します。Reference artifacts は、バケットやサーバー上のファイルへのリンクを維持します。つまり、W&B はファイルそのものではなく、ファイルに関連するメタデータのみを追跡します。
リファレンスアーティファクトは、通常のアーティファクトを作成する方法と似ています。
import  wandb
 run =  wandb. init()
 artifact =  wandb. Artifact("animals" , type= "dataset" )
 artifact. add_reference("s3://my-bucket/animals" )
 代替案については、contact@wandb.com  にお問い合わせいただき、プライベートクラウドおよびオンプレミスのインストールについてご相談ください。
 
    
	
  
    
    
	
    
    
	10 - チュートリアル: データセットアーティファクトを作成、追跡、利用する方法 
    アーティファクト クイックスタートでは、W&B でデータセット アーティファクトを作成、追跡、使用する方法を示します。
	このウォークスルーでは、W&B Runs からデータセットアーティファクトを作成、追跡、使用する方法を示します。
1. W&B にログイン 
W&B ライブラリをインポートし、W&B にログインします。まだアカウントをお持ちでない場合は、無料の W&B アカウントにサインアップする必要があります。
import  wandb
 wandb. login()
 2. Run を初期化 
wandb.init()
# W&B Run を作成します。この例ではデータセットアーティファクトを作成する方法を示しているので、 
# ジョブタイプとして 'dataset' を指定します。 
run =  wandb. init(project= "artifacts-example" , job_type= "upload-dataset" )
 3. アーティファクト オブジェクトを作成 
wandb.Artifact()name と type パラメータとして指定します。
例えば、次のコードスニペットは ‘bicycle-dataset’ という名前で、‘dataset’ というラベルのアーティファクトを作成する方法を示しています。
artifact =  wandb. Artifact(name= "bicycle-dataset" , type= "dataset" )
 アーティファクトの構築方法の詳細については、Construct artifacts を参照してください。
データセットをアーティファクトに追加 
ファイルをアーティファクトに追加します。一般的なファイルタイプには Models や Datasets が含まれます。次の例では、ローカルマシンに保存されている dataset.h5 というデータセットをアーティファクトに追加します。
# ファイルをアーティファクトのコンテンツに追加 
artifact. add_file(local_path= "dataset.h5" )
 上記のコードスニペットのファイル名 dataset.h5 は、アーティファクトに追加したいファイルのパスに置き換えてください。
4. データセットをログ 
W&B Run オブジェクトの log_artifact() メソッドを使用して、アーティファクトバージョンを保存し、アーティファクトを run の出力として宣言します。
# アーティファクトバージョンを W&B に保存し、 
# この run の出力としてマークします 
run. log_artifact(artifact)
 アーティファクトをログする際、’latest’ エイリアスがデフォルトで作成されます。アーティファクトのエイリアスとバージョンに関する詳細については、Create a custom alias  および Create new artifact versions  をそれぞれ参照してください。
5. アーティファクトをダウンロードして使用 
次のコード例では、ログされ保存されたアーティファクトを W&B サーバーで使用する手順を示します。
まず、wandb.init(). 
次に、run オブジェクトの use_artifact() 
最後に、アーティファクトの download() 
 
# W&B Run を作成します。ここでは 'training' を 'type' として指定します 
# この run をトレーニングの追跡に使用するためです。 
run =  wandb. init(project= "artifacts-example" , job_type= "training" )
 
 # W&B にアーティファクトを検索させ、この run の入力としてマークします 
artifact =  run. use_artifact("bicycle-dataset:latest" )
 
 # アーティファクトの内容をダウンロードします 
artifact_dir =  artifact. download()
 または、Public API (wandb.Api) を使用して、Run の外で W&B に既に保存されたデータをエクスポート(または更新)できます。詳細は Track external files  を参照してください。