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

run 컨텍스트 내에서 아티팩트 버전 연결하기

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

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

# run 초기화
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)

run 컨텍스트 외부에서 아티팩트 버전 연결하기

wandb.Artifact.link()를 사용하면 run 컨텍스트 외부에서 기존 아티팩트 버전을 컬렉션에 연결할 수 있습니다. 이 방법을 사용하면 wandb.init()으로 run을 초기화할 필요가 없습니다. 즉, W&B 프로젝트에 run이 생성되지 않으며, 아티팩트 버전은 run과 연결되지 않은 상태로 컬렉션에 연결됩니다.먼저 아티팩트 객체를 생성하고 파일을 추가합니다. 그런 다음 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 App에서 링크된 아티팩트의 메타데이터, 버전 데이터, 사용 내역, 계보(lineage) 정보 등을 확인할 수 있습니다.

레지스트리에서 링크된 아티팩트 보기

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

문제 해결

아티팩트를 연결할 수 없다면 아래의 일반적인 사항들을 한 번 더 확인하세요.

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

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

팀 엔티티 찾기

W&B에서는 팀 이름을 해당 팀의 entity 이름으로 사용합니다. 예를 들어, 팀 이름이 team-awesome이면 팀 엔티티는 team-awesome입니다. 다음과 같이 팀 이름을 확인할 수 있습니다:
  1. 팀의 W&B 프로필 페이지로 이동합니다.
  2. 사이트의 URL을 복사합니다. URL 형식은 https://wandb.ai/<team>입니다. 여기서 <team>은 팀 이름이자 팀 엔티티입니다.

팀 entity에서 로그 남기기

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

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

UI에서 레지스트리 경로를 확인하는 방법은 두 가지입니다. 하나는 비어 있는 컬렉션을 만들어 컬렉션 세부 정보를 확인하는 것이고, 다른 하나는 컬렉션 홈 페이지에 표시된 자동 생성 코드를 복사해 붙여넣는 것입니다.

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

  1. https://wandb.ai/registry/ 에서 W&B Registry로 이동합니다.
  2. 아티팩트를 연결하려는 레지스트리를 클릭합니다.
  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"
임시 컬렉션의 이름을 아티팩트를 연결하려는 컬렉션 이름으로 반드시 변경하십시오.