W&B 서버에 이미 저장된 아티팩트를 다운로드하여 사용하거나, 아티팩트 객체를 생성해 필요에 따라 중복 제거(de-duplication)에 사용하도록 전달할 수 있습니다.
보기 전용 시트를 가진 팀원은 아티팩트를 다운로드할 수 없습니다.
W&B에 저장된 아티팩트를 W&B 실행 내부 또는 외부에서 다운로드하고 사용할 수 있습니다. Public API(wandb.Api)를 사용해 W&B에 이미 저장된 데이터를 내보내거나(또는 업데이트)할 수 있습니다.
먼저 W&B Python SDK를 import 합니다. 그런 다음 W&B 실행을 생성합니다:import wandb
with wandb.init(project="<example>", job_type="<job-type>") as run:
# See next step
wandb.Run.use_artifact() 메서드를 사용해 사용하려는 아티팩트를 지정합니다. 이 메서드는 실행 객체를 반환합니다. 다음 코드 스니펫에서는 'bike-dataset'이라는 아티팩트와 'latest'라는 alias를 지정합니다:# 사용할 아티팩트를 지정합니다. 형식은 "name:alias" 입니다
artifact = run.use_artifact("bike-dataset:latest")
반환된 객체를 사용해 아티팩트의 모든 콘텐츠를 다운로드합니다:# 전체 아티팩트 다운로드
datadir = artifact.download()
선택적으로 root 매개변수에 경로를 전달해, 아티팩트의 콘텐츠를 특정 디렉토리로 다운로드할 수 있습니다.wandb.Artifact.get_entry() 메서드를 사용해 파일의 일부만 다운로드합니다:# 특정 파일 다운로드
entry = artifact.get_entry(name)
이를 모두 합치면 전체 코드 예시는 다음과 같습니다: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")
이 코드는 경로 name에 있는 파일만 가져옵니다. Entry 객체를 반환하며, 다음 메서드를 포함합니다:
Entry.download: 경로 name에 있는 아티팩트의 파일을 다운로드합니다
Entry.ref: add_reference로 엔트리를 reference로 저장한 경우, 해당 URI를 반환합니다
먼저 W&B SDK를 import 합니다. 그런 다음 Public API 클래스에서 아티팩트 객체를 생성합니다. 해당 아티팩트와 연결된 엔터티, 프로젝트, 아티팩트, alias를 지정합니다:import wandb
api = wandb.Api()
artifact = api.artifact("entity/project/artifact:alias")
반환된 객체를 사용해 아티팩트의 콘텐츠를 다운로드합니다:선택적으로 root 매개변수에 경로를 전달해 아티팩트의 콘텐츠를 특정 디렉토리로 다운로드할 수 있습니다. 자세한 내용은 Python SDK Reference Guide를 참조하십시오. wandb artifact get 명령을 사용해 W&B 서버에서 아티팩트를 다운로드합니다.$ wandb artifact get project/artifact:alias --root mnist/
접두사를 기준으로 아티팩트의 일부만 선택적으로 다운로드할 수 있습니다. path_prefix=(wandb.Artifact.download(path_prefix=)) 파라미터를 사용하여 단일 파일이나 하위 폴더의 내용을 다운로드하세요.
with wandb.init(project="<example>", job_type="<job-type>") as run:
# 사용할 아티팩트를 지정합니다. 형식은 "name:alias"입니다
artifact = run.use_artifact("bike-dataset:latest")
# 특정 파일 또는 하위 폴더 다운로드
artifact.download(path_prefix="bike.png") # bike.png만 다운로드
또는 특정 디렉터리의 파일만 다운로드할 수도 있습니다. 그렇게 하려면 path_prefix= 매개변수에 해당 디렉터리를 지정합니다. 이전 코드 스니펫에 이어서:
# images/bikes 디렉토리의 파일을 다운로드합니다
artifact.download(path_prefix="images/bikes/")
아티팩트를 참조하려면 아티팩트 이름과 함께 해당 프로젝트 이름을 지정합니다. 또한 아티팩트 이름과 함께 엔터티 이름을 지정하여 엔터티 간에 아티팩트를 참조할 수도 있습니다.
다음 코드 예제는 다른 프로젝트의 아티팩트를 현재 W&B 실행의 입력으로 가져오는 방법을 보여줍니다.
with wandb.init(project="<example>", job_type="<job-type>") as run:
# 다른 프로젝트의 아티팩트를 W&B에서 조회하고 이 실행의
# 입력으로 표시합니다.
artifact = run.use_artifact("my-project/artifact:alias")
# 다른 엔터티의 아티팩트를 사용하고 이 실행의 입력으로
# 표시합니다.
artifact = run.use_artifact("my-entity/my-project/artifact:alias")
아티팩트를 동시에 생성하고 사용할 수 있습니다. 아티팩트 객체를 생성한 다음 use_artifact에 전달하세요. 아직 존재하지 않는 경우 W&B에 아티팩트가 생성됩니다. wandb.Run.use_artifact() API는 멱등성이 있으므로 원하는 만큼 여러 번 호출할 수 있습니다.
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)
아티팩트 구성에 대해 더 자세히 알아보려면 아티팩트 구성하기를 참조하세요.