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