컬렉션은 레지스트리 내에서 서로 연결된 아티팩트 버전들의 집합입니다. 각 컬렉션은 고유한 작업 또는 사용 사례를 나타냅니다.
예를 들어 하나의 레지스트리 안에 여러 개의 컬렉션이 있을 수 있습니다. 각 컬렉션은 MNIST, CIFAR-10, ImageNet과 같이 서로 다른 데이터셋을 포함합니다.
또 다른 예로, “chatbot”이라는 이름의 레지스트리가 있다고 가정해 보겠습니다. 이 레지스트리에는 모델 아티팩트를 위한 컬렉션 하나, 데이터셋 아티팩트를 위한 컬렉션 하나, 그리고 파인튜닝된 모델 아티팩트를 위한 컬렉션 하나가 있을 수 있습니다.
레지스트리와 그 안의 컬렉션을 어떻게 구성할지는 전적으로 여러분에게 달려 있습니다.
W&B Model Registry에 익숙하다면 Registered Models에 대해 알고 있을 것입니다. Model Registry의 Registered Models는 이제 W&B Registry에서 컬렉션이라고 부릅니다.
각 컬렉션은 하나의 타입의 아티팩트만 허용합니다. 지정한 타입에 따라, 컬렉션에 어떤 종류의 아티팩트를 연결할 수 있는지가 조직 전체에 걸쳐 제한됩니다.
아티팩트 타입은 Python과 같은 프로그래밍 언어의 데이터 타입과 비슷하게 생각할 수 있습니다. 이 비유에서 컬렉션은 문자열, 정수, 실수 중 하나의 데이터 타입만 저장할 수 있고, 서로 다른 데이터 타입을 섞어서 저장할 수는 없습니다.
예를 들어 “dataset” 아티팩트 타입을 허용하는 컬렉션을 만든다고 가정해 봅시다. 이는 앞으로 이 컬렉션에 타입이 “dataset”인 아티팩트 버전만 연결할 수 있다는 뜻입니다. 마찬가지로, 모델 아티팩트 타입만 허용하는 컬렉션에는 “model” 타입의 아티팩트만 연결할 수 있습니다.
아티팩트 객체를 생성할 때 아티팩트의 타입을 지정합니다. wandb.Artifact()의 type 필드를 확인하세요:import wandb
# run 초기화
with wandb.init(
entity = "<team_entity>",
project = "<project>"
) as run:
# 아티팩트 객체 생성
artifact = wandb.Artifact(
name="<artifact_name>",
type="<artifact_type>"
)
컬렉션을 생성할 때 미리 정의된 아티팩트 타입 목록에서 선택할 수 있습니다. 선택할 수 있는 아티팩트 타입은 컬렉션이 속한 레지스트리에 따라 달라집니다.
아티팩트를 컬렉션에 연결하거나 새 컬렉션을 만들기 전에, 해당 컬렉션이 허용하는 아티팩트 타입을 확인하세요.
컬렉션에 링크하기 전에 해당 컬렉션이 허용하는 아티팩트 타입을 확인하십시오. 컬렉션이 허용하는 아티팩트 타입은 W&B Python SDK를 사용해 프로그래밍 방식으로, 또는 W&B App에서 직접 확인할 수 있습니다.
컬렉션이 허용하지 않는 아티팩트 타입의 아티팩트를 컬렉션에 링크하려고 하면 오류 메시지가 표시됩니다.
W&B App
Python SDK (Beta)
홈페이지의 레지스트리 카드나 레지스트리 설정 페이지에서 허용된 아티팩트 타입을 확인할 수 있습니다.두 방법 모두 먼저 W&B Registry로 이동하십시오.W&B Registry의 홈페이지에서 해당 레지스트리의 카드까지 스크롤하면 허용된 아티팩트 타입을 볼 수 있습니다. 레지스트리 카드 안의 회색 가로 타원에는 해당 레지스트리가 허용하는 아티팩트 타입이 나열됩니다.예를 들어, 아래 이미지는 W&B Registry 홈페이지에 여러 레지스트리 카드가 있는 모습을 보여줍니다. Model 레지스트리 카드 안에서 두 가지 아티팩트 타입 model과 model-new를 확인할 수 있습니다.레지스트리 설정 페이지에서 허용된 아티팩트 타입을 보려면:
- 설정을 확인하려는 레지스트리 카드를 클릭합니다.
- 오른쪽 상단의 톱니바퀴 아이콘을 클릭합니다.
- Accepted artifact types 필드까지 스크롤합니다.
W&B Python SDK를 사용해 프로그래밍 방식으로 레지스트리가 허용하는 아티팩트 타입을 확인할 수 있습니다:import wandb
registry_name = "<registry_name>"
artifact_types = wandb.Api().project(name=f"wandb-registry-{registry_name}").artifact_types()
print(artifact_type.name for artifact_type in artifact_types)
아래 코드 스니펫에서는 run을 초기화하지 않는다는 점에 유의하십시오. 이는 W&B API를 쿼리만 하고 실험, 아티팩트 등을 추적하지 않을 때는 run을 생성할 필요가 없기 때문입니다.
컬렉션이 허용하는 아티팩트 타입을 확인했으면 이제 컬렉션을 생성할 수 있습니다.
레지스트리 내에서 컬렉션을 대화형 또는 프로그래밍 방식으로 생성합니다. 컬렉션을 생성한 이후에는 컬렉션에서 허용하는 아티팩트 유형을 변경할 수 없습니다.
wandb.Run.link_artifact() 메서드를 사용해 아티팩트를 컬렉션에 연결하세요. target_path 필드에는 컬렉션과 레지스트리를 모두 포함한 경로를 다음 형식으로 지정합니다:
f"wandb-registry-{registry_name}/{collection_name}"
여기서 registry_name은 레지스트리 이름이고 collection_name은 컬렉션 이름입니다. 레지스트리 이름 앞에 wandb-registry- 접두사를 반드시 붙이세요.
존재하지 않는 컬렉션에 아티팩트를 연결하려고 하면, W&B가 자동으로 컬렉션을 생성합니다. 이미 존재하는 컬렉션을 지정하면, W&B는 해당 아티팩트를 기존 컬렉션에 연결합니다.
다음 코드 스니펫은 프로그래밍 방식으로 컬렉션을 생성하는 방법을 보여줍니다. <>로 둘러싸인 다른 값들을 모두 사용자 환경에 맞게 교체하세요:
import wandb
# run 초기화
with wandb.init(entity = "<team_entity>", project = "<project>") as run:
# 아티팩트 객체 생성
artifact = wandb.Artifact(
name = "<artifact_name>",
type = "<artifact_type>"
)
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)
다음 단계는 W&B Registry를 사용해 컬렉션을 대화형으로 생성하는 방법을 설명합니다:
- https://wandb.ai/registry/에서 W&B Registry로 이동합니다.
- 레지스트리를 선택합니다.
- 오른쪽 상단에 있는 Create collection 버튼을 클릭합니다.
- Name 필드에 컬렉션 이름을 입력합니다.
- Type 드롭다운에서 타입을 선택합니다. 또는 레지스트리에서 사용자 정의 아티팩트 타입을 사용할 수 있는 경우, 이 컬렉션에서 허용할 하나 이상의 아티팩트 타입을 입력합니다.
- 필요하다면 Description 필드에 컬렉션에 대한 설명을 입력합니다.
- 필요하다면 Tags 필드에 하나 이상의 태그를 추가합니다.
- Link version을 클릭합니다.
- Project 드롭다운에서 아티팩트가 저장된 프로젝트를 선택합니다.
- Artifact 드롭다운에서 아티팩트를 선택합니다.
- Version 드롭다운에서 컬렉션에 연결할 아티팩트 버전을 선택합니다.
- Create collection 버튼을 클릭합니다.