메인 콘텐츠로 건너뛰기
조직에서 아티팩트 버전을 사용할 수 있도록 하려면 해당 버전을 W&B Registry의 컬렉션연결합니다. 버전을 연결하면 비공개 프로젝트 수준 범위에서 공유 조직 수준 범위로 이동합니다. 아티팩트 버전은 W&B Python SDK를 사용해 프로그래밍 방식으로 또는 W&B App에서 인터랙티브하게 연결할 수 있습니다. 아티팩트를 연결하면 W&B는 소스 아티팩트와 컬렉션 항목 사이에 참조를 생성합니다. 연결된 버전은 프로젝트 내 실행에 로깅된 소스 아티팩트 버전을 가리킵니다. 컬렉션에 있는 연결된 버전과 해당 버전이 로깅된 프로젝트의 소스 버전 둘 다를 확인할 수 있습니다. 사용 사례에 따라 아래 탭에 설명된 지침을 따라 아티팩트 버전을 연결하세요.
시작하기 전에 다음을 확인하세요:
  • 해당 컬렉션에서 허용하는 아티팩트 유형. 컬렉션 유형에 대한 자세한 내용은 컬렉션 생성의 “Collection types”를 참조하세요.
  • 컬렉션이 속한 레지스트리가 이미 존재하는지 여부. 레지스트리가 존재하는지 확인하려면 Registry App에서 레지스트리 검색하기를 사용해 레지스트리 이름을 검색하세요.
wandb.Run.link_artifact() 또는 wandb.Artifact.link()를 사용하여 프로그래밍 방식으로 아티팩트 버전을 컬렉션에 연결합니다.
실행 컨텍스트 내에서 아티팩트 버전을 연결하려면 wandb.Run.link_artifact()를 사용하고, 실행 컨텍스트 외부에서 기존 아티팩트 버전을 연결하려면 wandb.Artifact.link()를 사용합니다.
두 가지 방법 모두 아티팩트 이름(wandb.Artifact(name="<name>"), 아티팩트 유형(wandb.Artifact(type="<type>"), 그리고 아티팩트 버전을 연결할 컬렉션 및 레지스트리의 target_path(wandb.Artifact(target_path="<target_path>"))를 지정하세요.대상 경로는 접두사 "wandb-registry", 레지스트리 이름, 컬렉션 이름을 슬래시(/)로 구분하여 구성됩니다:
wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}

실행 컨텍스트 내에서 아티팩트 버전 연결

실행 컨텍스트 내에서 아티팩트 버전을 연결하려면 wandb.Run.link_artifact()를 사용하세요. 이를 위해 먼저 wandb.init()으로 실행을 초기화합니다. 다음으로 아티팩트 객체를 생성하고 파일을 추가합니다. 마지막으로 wandb.Run.link_artifact() 메서드를 사용하여 아티팩트 버전을 컬렉션에 연결합니다.이 방법을 사용하면 W&B 프로젝트에 실행이 생성됩니다. 아티팩트 버전은 컬렉션에 연결되며 해당 실행과 연관됩니다.아래 코드 스니펫을 복사하여 붙여넣으세요. <>로 묶인 값을 실제 값으로 교체하세요:
import wandb

entity = "<team_entity>"          # 팀 엔터티
project = "<project_name>"        # 아티팩트가 포함된 프로젝트 이름

# 실행 초기화
with wandb.init(entity = entity, project = project) as run:

  # 아티팩트 객체 생성
  # type 파라미터는 아티팩트 객체의 타입과
  # 컬렉션 타입을 모두 지정합니다
  artifact = wandb.Artifact(name = "<name>", type = "<type>")

  # 아티팩트 객체에 파일을 추가합니다.
  # 로컬 머신의 파일 경로를 지정하세요.
  artifact.add_file(local_path = "<local_path_to_artifact>")

  # 아티팩트를 연결할 컬렉션과 레지스트리를 지정합니다
  REGISTRY_NAME = "<registry_name>"  
  COLLECTION_NAME = "<collection_name>"
  target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"

  # 아티팩트를 컬렉션에 연결합니다
  run.link_artifact(artifact = artifact, target_path = target_path)

실행 컨텍스트 외부에서 아티팩트 버전 연결

wandb.Artifact.link()를 사용하면 실행 컨텍스트 외부에서 기존 아티팩트 버전을 컬렉션에 연결할 수 있습니다. 이 방법을 사용하면 wandb.init()으로 실행을 초기화할 필요가 없습니다. 즉, W&B 프로젝트에 실행이 생성되지 않으며, 아티팩트 버전은 실행과 연결되지 않은 상태로 컬렉션에 연결됩니다.먼저 아티팩트 오브젝트를 생성하고 파일을 추가합니다. 그런 다음 wandb.Artifact.link() 메서드를 사용하여 아티팩트 버전을 컬렉션에 연결합니다.아래 코드 스니펫을 복사하여 붙여넣으세요. <>로 묶인 값을 실제 값으로 교체하세요:
import wandb

# 아티팩트 객체 생성
# type 파라미터는 아티팩트 객체의 타입과
# 컬렉션 타입을 모두 지정합니다
artifact = wandb.Artifact(name = "<name>", type = "<type>")

# 아티팩트 객체에 파일을 추가합니다.
# 로컬 머신의 파일 경로를 지정하세요.
artifact.add_file(local_path = "<local_path_to_artifact>")

# 아티팩트를 연결할 컬렉션과 레지스트리를 지정합니다
REGISTRY_NAME = "<registry_name>"  
COLLECTION_NAME = "<collection_name>"
target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"

# 아티팩트를 컬렉션에 연결합니다
artifact.link(target_path = target_path)
Registry 앱에서 연결된 아티팩트의 메타데이터, 버전 정보, 사용 현황, 리니지 정보 등을 확인할 수 있습니다.

레지스트리에서 연결된 아티팩트 보기

W&B 레지스트리에서 메타데이터, 라인리지(lineage), 사용 정보 등 연결된 아티팩트에 대한 정보를 확인할 수 있습니다.
  1. W&B 레지스트리로 이동합니다.
  2. 아티팩트를 연결한 레지스트리 이름을 선택합니다.
  3. 컬렉션 이름을 선택합니다.
  4. 컬렉션의 아티팩트가 메트릭을 기록하는 경우 Show metrics를 클릭하여 버전 간 메트릭을 비교합니다.
  5. 아티팩트 버전 목록에서 확인하려는 버전을 선택합니다. 버전 번호는 v0부터 시작하여 연결된 아티팩트 버전마다 순차적으로 할당됩니다.
  6. 아티팩트 버전에 대한 자세한 내용을 보려면 해당 버전을 클릭합니다. 이 페이지의 탭에서 해당 버전의 메타데이터(기록된 메트릭 포함), 라인리지(lineage), 사용 정보를 확인할 수 있습니다.
Version 탭의 Full Name 필드를 확인합니다. 연결된 아티팩트의 전체 이름은 레지스트리 이름, 컬렉션 이름, 그리고 아티팩트 버전의 별칭(alias) 또는 인덱스로 구성됩니다.
Full name of a linked artifact
wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{INTEGER}
프로그램적으로 아티팩트 버전에 접근하려면 연결된 아티팩트의 전체 이름이 필요합니다.

문제 해결

아티팩트를 연결할 수 없을 때는 아래의 일반적인 항목들을 다시 한 번 확인하세요.

개인 계정에서 아티팩트 로깅하기

개인 엔터티로 W&B에 로깅한 아티팩트는 레지스트리에 연결할 수 없습니다. 반드시 조직 내 팀 엔터티를 사용해 아티팩트를 로깅하세요. 조직의 팀 엔터티로 로깅된 아티팩트만 해당 조직의 레지스트리에 연결할 수 있습니다.
아티팩트를 레지스트리에 연결하려면 반드시 팀 엔터티로 해당 아티팩트를 로깅해야 합니다.

팀 엔터티 찾기

W&B에서는 팀 이름을 팀 엔터티로 사용합니다. 예를 들어 팀 이름이 team-awesome이면, 팀 엔터티는 team-awesome입니다. 팀 이름을 확인하려면 다음 단계를 따르세요:
  1. 팀의 W&B 프로필 페이지로 이동합니다.
  2. 사이트의 URL을 복사합니다. URL 형식은 https://wandb.ai/<team>입니다. 여기서 <team>은 팀 이름이자 팀 엔터티입니다.

팀 엔터티에서 로그 기록하기

  1. wandb.init()으로 실행을 초기화할 때 엔터티로 팀을 지정합니다. 실행을 초기화할 때 entity를 지정하지 않으면 실행은 기본 엔터티를 사용하며, 이 기본 엔터티가 팀 엔터티일 수도 있고 아닐 수도 있습니다.
    import wandb   
    
    with wandb.init(entity='<team_entity>', project='<project_name>') as run:
        # 여기에서 아티팩트를 로깅합니다
    
  2. wandb.Run.log_artifact()를 사용하거나, Artifact 객체를 생성한 뒤 다음과 같이 파일을 추가하여 실행에 아티팩트를 로깅합니다:
    artifact = wandb.Artifact(name="<artifact_name>", type="<type>")
    
    아티팩트를 로깅하는 방법은 Construct artifacts를 참조하세요.
  3. 아티팩트가 개인 엔터티에 로깅된 경우, 조직 내의 엔터티로 다시 로깅해야 합니다.

W&B 앱 UI에서 레지스트리 경로 확인하기

UI에서 레지스트리 경로를 확인하는 방법은 두 가지입니다. 빈 컬렉션을 생성한 뒤 컬렉션 상세 정보를 확인하거나, 컬렉션 홈 페이지에 표시되는 자동 생성 코드를 복사해 붙여넣는 방법입니다.

자동 생성된 코드 복사 및 붙여넣기

  1. https://wandb.ai/registry/ 에서 W&B Registry로 이동합니다.
  2. 아티팩트를 연결할 Registry를 클릭합니다.
  3. 페이지 상단에 자동 생성된 코드 블록이 표시됩니다.
  4. 이 코드를 복사해 자신의 코드에 붙여넣고, 경로의 마지막 부분을 컬렉션 이름으로 반드시 바꿉니다.
자동 생성된 코드 스니펫

빈 컬렉션 만들기

  1. https://wandb.ai/registry/ 에서 W&B Registry 페이지로 이동합니다.
  2. 아티팩트를 연결하려는 레지스트리를 클릭합니다.
  3. 비어 있는 컬렉션을 클릭합니다. 비어 있는 컬렉션이 없다면 새 컬렉션을 생성합니다.
  4. 표시되는 코드 스니펫에서 .link_artifact() 내의 target_path 필드를 찾습니다.
  5. (선택 사항) 컬렉션을 삭제합니다.
빈 컬렉션 만들기
예를 들어, 위 단계를 완료한 후 target_path 매개변수가 포함된 코드 블록을 확인할 수 있습니다:
target_path = 
      "smle-registries-bug-bash/wandb-registry-Golden Datasets/raw_images"
구성 요소로 나누어 보면, 아티팩트를 프로그래밍 방식으로 연결할 경로를 만들 때 무엇을 사용해야 하는지 알 수 있습니다.
ORG_ENTITY_NAME = "smle-registries-bug-bash"
REGISTRY_NAME = "Golden Datasets"
COLLECTION_NAME = "raw_images"
임시 컬렉션 이름을, 아티팩트를 연결하려는 컬렉션의 실제 이름으로 반드시 바꾸십시오.