> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> 複数のプロジェクトからArtifactsをダウンロードして使用します。

# Artifactsをダウンロードして使用する

W\&B Server にすでに保存されている artifact をダウンロードして使用するか、必要に応じて重複排除のために アーティファクト オブジェクト を作成して渡します。

<Note>
  Models **Viewer** seat のチームメンバーは Artifacts をダウンロードできません。
</Note>

<div id="download-and-use-an-artifact-stored-on-wb">
  ### W\&B に保存されているアーティファクトをダウンロードして使用する
</div>

アーティファクトが run の依存関係である場合は、追跡対象の run 入力としてダウンロードします。リネージのトラッキングが不要なワークフローでは、直接取得します。

<Info>
  W\&B が処理できるスキームを持つ参照は、アーティファクト内のファイルと同様にダウンロードされます。詳細は、[外部ファイルをトラッキングする](/ja/models/artifacts/track-external-files/)を参照してください。
</Info>

アーティファクト内のすべてのファイルをダウンロードすることも、個別のファイルをダウンロードすることもできます。

* すべてのファイルをダウンロードするには、[`Artifact.download()`](/ja/models/ref/python/experiments/artifact#download) を使用します。
* 特定のエントリを取得するには、[`Artifact.get_entry()`](/ja/models/ref/python/experiments/artifact#get_entry) を使用し、その後 `.download()` を呼び出してダウンロードします。

<Tabs>
  <Tab title="run 入力をトラッキングする">
    W\&B Run の一部としてアーティファクトをダウンロードするには、`wandb.Run.use_artifact()` を使用します。W\&B はそのアーティファクトを run への入力として記録します。

    1. W\&B Python SDK をインポートし、W\&B [Run](/ja/models/ref/python/experiments/run) を初期化します。
    2. `wandb.Run.use_artifact()` を使用してアーティファクトのバージョンを取得します。
    3. 返された `Artifact` オブジェクトから、すべてのファイルまたは特定のファイルをダウンロードします。

    ```python theme={null}
    import wandb    

    with wandb.init(project="<example>", job_type="<job-type>") as run:
        # 使用するアーティファクトを指定します。形式は "name:alias" です
        artifact = run.use_artifact("bike-dataset:latest")

        # アーティファクト全体をダウンロードします
        datadir = artifact.download()

        # 特定のファイルをダウンロードします
        entry = artifact.get_entry("bike.png")
        file_path = entry.download() # bike.png のみをダウンロードします
    ```
  </Tab>

  <Tab title="直接取得">
    run を作成したり、run 入力との関係を記録したりせずにアーティファクトをダウンロードするには、Public API を使用します。

    1. W\&B Python SDK をインポートし、`wandb.Api()` でクライアントオブジェクトを作成します。
    2. `wandb.Api.artifact()` を使用してアーティファクトのバージョンを取得します。
    3. 返された `Artifact` オブジェクトから、すべてのファイルまたは特定のファイルをダウンロードします。

    アーティファクトのパスは `entity/project/artifact:alias` 形式で指定します。

    ```python theme={null}
    import wandb

    api = wandb.Api()
    artifact = api.artifact("entity/project/artifact:alias")
    artifact.download()
    ```
  </Tab>

  <Tab title="W&B CLI">
    W\&B サーバーからアーティファクトをダウンロードするには、`wandb artifact get` コマンドを使用します。

    ```
    $ wandb artifact get project/artifact:alias --root mnist/
    ```
  </Tab>
</Tabs>

<div id="partially-download-an-artifact">
  ### artifact を部分的にダウンロードする
</div>

プレフィックスを指定して、artifact の一部だけを必要に応じてダウンロードできます。単一のファイルまたはサブフォルダーの内容をダウンロードするには、`path_prefix=` (`wandb.Artifact.download(path_prefix=)`) パラメーターを使用します。

```python theme={null}
with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 使用する artifact を指定します。形式は "name:alias"
    artifact = run.use_artifact("bike-dataset:latest")

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

また、特定のディレクトリからファイルをダウンロードすることもできます。その場合は、`path_prefix=` パラメーターにディレクトリを指定します。前のコードスニペットに続けて、次のように記述します。

```python theme={null}
# images/bikes ディレクトリ内のファイルをダウンロードする
artifact.download(path_prefix="images/bikes/") 
```

<div id="use-an-artifact-from-a-different-project">
  ### 別のプロジェクトのartifactを使用する
</div>

artifactを参照するには、そのartifactの名をプロジェクト名とあわせて指定します。artifactの名にentity名も指定すると、entityをまたいでartifactを参照することもできます。

以下のコード例は、現在のW\&B runへの入力として別のプロジェクトのartifactをクエリする方法を示しています。

```python theme={null}
with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 別のプロジェクトのartifactをW&BにクエリしてこのrunへのInputとしてマークする
    #
    artifact = run.use_artifact("my-project/artifact:alias")

    # 別のentityのartifactを使用してこのrunへのInputとしてマークする
    #
    artifact = run.use_artifact("my-entity/my-project/artifact:alias")

```

<div id="construct-and-use-an-artifact-simultaneously">
  ### artifact を作成して同時に使用する
</div>

artifact を作成すると同時に使用できます。artifact オブジェクトを作成し、`use_artifact` に渡します。これにより、まだ存在していない場合は W\&B に artifact が作成されます。[`wandb.Run.use_artifact()`](/ja/models/ref/python/experiments/run#use_artifact) API は冪等であるため、何度呼び出しても問題ありません。

```python theme={null}
import wandb

with wandb.init(project="<example>", job_type="<job-type>") as run:
    artifact = wandb.Artifact("reference model")
    artifact.add_file("model.h5")
    run.use_artifact(artifact)
```

artifact の作成について詳しくは、[artifact を作成する](/ja/models/artifacts/construct-an-artifact/)を参照してください。
