W&B Models 완전 활용 가이드 2: Registry를 이용한 중앙 집중형 자산관리
Created on June 9|Last edited on July 10
Comment
인공지능 팀의 규모가 커지고 역할이 다양해질수록, 모델, 데이터, 평가 결과 등 인공지능 실험의 자산을 체계적으로 관리하는 일은 점점 더 중요해집니다. 특히 협업이 잦고 반복적인 실험이 일상화된 환경에서는, 중앙 집중형 자산관리를 통해 자산의 버전 관리, 재사용, 추적 가능성을 확보하는 것이 필수적입니다.
이 게시물에서는 '완전 활용 가이드 1'에 이어, 조직 내 머신러닝 자산 관리 및 워크플로우 혁신의 핵심 도구인 Weights & Biases의 Registry 을 중점적으로 소개합니다. Registry는 다양한 실험 결과물과 모델 버전을 일관되게 관리할 수 있는 구조를 제공하며, 팀 내 모든 구성원이 최신 자산을 신뢰하고 활용할 수 있는 기반을 마련해 줍니다.
💡

자산의 중앙관리를 위한 RegistryRegistry 를 통해 최적화된 자산관리를 할 수 있습니다.코드에서도 UI상에서도 Registry에 링크할 수 있습니다.컬렉션의 'Readme'를 작성합니다.사용자 정의 레지스트리는 자산 유형에 따른 관리의 유연성과 제어 기능을 제공합니다.Registry 역할 설정을 통해 Viewer, Member, Admin 으로 권한을 관리할 수 있습니다.MongoDB 스타일 쿼리로 registry 항목을 필터링할 수 있습니다.다운스트림 프로세스의 자동화를 위한 Automationscase1: 새로운 모델을 개발한 후 자동화된 평가를 실행합니다.case2: 새로운 평가데이터를 구성한 후 자동화된 평가를 실행합니다.case3: 모델 성능 기준 달성 시 자동으로 배포할 수 있습니다. 동시에 Slack 으로 알람을 받도록 합니다!Automation 기능은 프로 및 엔터프라이즈 플랜의 유저분들만 사용하실 수 있습니다!
자산의 중앙관리를 위한 Registry
Registry 를 통해 최적화된 자산관리를 할 수 있습니다.
- 조직내 자산의 중앙 관리
- Artifact의 버전 관리, 다운로드, 공유 및 공동 관리
- 실험 결과 재현과 협업 효율성 극대화
- 모델 stage management
- Alias를 이용한 staging, production, 등 다양한 단계로 운영
- 실험 -> 배포 전환시 명확한 운영 가이드 제공 가능
- CI/CD 파이프라인 통합
- 모델이 특정 스테이지에 도달하면 자동으로 배포
- Automation을 통한 다운스트림 프로세스 자동화로 실험에서 프로덕션까지 연결
- 자산 사용 이력 추적
- 조직 내 사용자 역할 구분을 통한 사용성 관리
- 민감한 자산에 대한 접근 통제 가
wandb의 실험은 엔티티 → 프로젝트 → 실행(run) 순으로 구성되어 관리됩니다. 엔티티는 팀 단위를 의미하며, 기본적으로는 개인 전용 엔티티가 생성되지만 팀용 엔티티를 만들어 여러 사람이 같은 프로젝트를 함께 관리할 수 있습니다. 이러한 엔티티가 모여있는 곳을 조직(org)라고 부릅니다. W&B Registry는 조직내에서 artifact 로 저장된 인공지능 자산들을 체계적으로 관리할 수 있도록 구성된 중앙 저장소입니다. 조직내에서 권한을 가진 사용자는 사용자가 속한 팀에 관계없이 모든 artifact의 라이프사이클을 관리할 수 있습니다.
각 조직에는 모델 및 데이터셋 artifact를 구성하는데 사용할 수 있는 Models, Datasets 라는 두 개의 registry 가 초기에 포함되어 있습니다. 조직의 요구 사항에 따라 다른 유형의 registry를 만들 수 있습니다. 각 registry는 하나 이상의 컬렉션으로 구성됩니다. 각 컬렉션은 고유한 작업 또는 유스 케이스를 나타냅니다.

코드에서도 UI상에서도 Registry에 링크할 수 있습니다.
사용자의 다양한 사용환경을 반영하여 registry는 코드를 이용해서도 UI상에서도 모두 링크할 수 있습니다.
다음 예시 코드는 "my_model.txt"라는 모델 artifact를 "first-collection"이라는 컬렉션에 기록하고 '링크'하는 방법을 보여줍니다. 여기서 지정한 컬렉션이 존재하지 않는 경우 자동으로 해당 이름의 컬렉션을 생성합니다. 이 때, 터미널에 출력되는 URL은 W&B가 artifact를 저장하는 프로젝트로 연결됩니다.
import wandbimport random# 1. W&B run을 초기화합니다.run = wandb.init(project="registry_quickstart")# 기록할 수 있도록 시뮬레이션된 모델 파일을 만듭니다.with open("my_model.txt", "w") as f:f.write("Model: " + str(random.random()))# 2. artifact를 W&B에 기록합니다.logged_artifact = run.log_artifact(artifact_or_path="./my_model.txt",name="gemma-finetuned",type="model" # artifact 유형을 지정합니다.)# 3. artifact를 registry에 연결합니다.REGISTRY_NAME = "model"COLLECTION_NAME = "first-collection"run.link_artifact(artifact=logged_artifact,target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}")
“링크"라는 용어는 W&B가 artifact를 저장하는 위치와 registry에서 artifact에 엑세스할 수 있는 위치를 연결하는 포인터를 나타냅니다. W&B는 artifact를 컬렉션에 연결할 때 artifact를 복제하지 않습니다.
💡
3번 `run.link_artifact`를 코드에서 실행하지 않고 UI 상에서 실행할 수 있습니다. 아래 스크린샷과 같이 아티팩트의 페이지에서 'Link to registry' 를 눌러 링크하고자 하는 registry와 collection을 설정하면 손쉽게 연결할 수 있습니다.

W&B Models의 탑 페이지의 왼쪽 사이드바에 있는 Registry를 선택하면 Registry App으로 이동하게 되고, 이 곳에서 위의 과정을 통해 링크한 아티팩트를 확인할 수 있습니다. Artifact를 registry 내의 컬렉션에 연결하면 조직 구성원은 artifact 내용물을 확인하고, 다운로드하고, 관리하고, 이 블로그의 후반부에 말씀드릴 다운스트림 태스크의 자동화를 할 수 있습니다. 이 과정은 적절한 권한관리를 통해 중앙집권화된 자산관리를 가능하게 합니다.

컬렉션의 'Readme'를 작성합니다.

컬렉션에 'human-readable' 한 텍스트를 추가하여 컬렉션의 목적을 이해하는데 도움이 되도록 할 수 있습니다. 마치 Readme.md 처럼 말이죠. W&B는 최소한 다음 정보를 포함할 것을 권장합니다.
- 요약: 컬렉션의 목적. 실험에 사용된 머신러닝 프레임워크.
- 라이선스: 인공지능 모델 사용과 관련된 법적 조건 및 권한. 일반적인 라이선스에는 Apache 2.0, MIT 및 GPL등이 있습니다.
- 참조: 관련 연구 논문, 데이터셋 또는 외부 리소스에 대한 인용 또는 참조.
컬렉션에 학습 데이터가 포함된 경우 다음 추가 정보를 포함하는 것을 고려하세요.
- 학습 데이터: 사용된 학습 데이터에 대해 설명합니다.
- 전처리: 학습 데이터셋에서 수행된 전처리
- 데이터 저장소: 해당 데이터가 저장된 위치 및 엑세스 방법
컬렉션에 모델이 포함된 경우 다음 추가 정보를 포함하는 것을 고려하세요.
- 아키텍쳐: 모델 아키텍쳐, 레이어 및 특정 설계 선택에 대한 정보
- 태스크: 모델이 해결하도록 설계된 태스크.
- Deserialize the model: 팀의 누군가가 모델을 메모리에 로드할 수 있도록 정보를 제공합니다.
- 배포: 모델이 배포되는 방식 및 위치에 대한 세부 정보와 모델을 워크플로우 오케스트레이션 플랫폼 등 다른 시스템에 통합하는 방법에 대한 정보를 제공합니다.
사용자 정의 레지스트리는 자산 유형에 따른 관리의 유연성과 제어 기능을 제공합니다.
Registry는 기본적으로 Model과 Dataset을 제공하지만 사용자 정의 레지스트리를 만들 수 있습니다. 아래 이미지에서는 사용자가 Fine_Tuned_Models라는 사용자 정의 레지스트리를 생성합니다.
- https://wandb.ai/registry/ 의 Registry 앱으로 이동합니다.
- Custom registry 내에서 Create registry 버튼을 글릭합니다.
- Name 필드에 registry 이름을 입력합니다.
- 필요에 따라 registry에 대한 설명을 제공합니다.
- Registry visibility 항목에서 registry를 볼 수 있는 사용자를 선택합니다.
- Accepted artifacts types 항목에서 All types 또는 Specify types를 선택합니다.
- Specify types를 선택한 경우, 해당 registry에 링크할 수 있는 아티팩트의 타입을 하나 이상 추가합니다.
- Create registry 버튼을 클릭합니다.
아티팩트 타입은 레지스트리 설정에 저장된 이후에는 제거할 수 없습니다.
💡

Registry 역할 설정을 통해 Viewer, Member, Admin 으로 권한을 관리할 수 있습니다.
- Registry 오른쪽 상단 모서리에 있는 톱니바퀴 아이콘을 클릭합니다.
- Registry members and roles 섹션으로 스크롤합니다.
- Member 필드 내에서 권한을 편집할 user 또는 Team을 검색합니다.
- Registry role 열에서 user의 역할을 클릭합니다.
- 드롭다운에서 user에게 할당할 역할을 선택합니다.
각 역할에 따른 권한은 아래와 같습니다. 요약하자면:
- Viewer 는 읽기만 가능합니다.
- Member 는 읽기, 생성하기, 업데이트하기, 삭제하기가 가능합니다.
- Admin 은 읽기, 생성학, 업데이트하기, 삭제하기 이외의 유저관리와 관련된 권한이 추가됩니다.
권한 | 카테고리 | Viewer | Member | Admin |
---|---|---|---|---|
컬렉션의 세부 정보 보기 | 읽기 | ✔ | ✔ | ✔ |
연결된 아티팩트의 세부 정보 보기 | 읽기 | ✔ | ✔ | ✔ |
사용량: use_artifact를 사용하여 레지스트리에서 아티팩트 사용 | 읽기 | ✔ | ✔ | ✔ |
연결된 아티팩트 다운로드 | 읽기 | ✔ | ✔ | ✔ |
아티팩트의 파일 뷰어에서 파일 다운로드 | 읽기 | ✔ | ✔ | ✔ |
레지스트리 검색 | 읽기 | ✔ | ✔ | ✔ |
레지스트리의 설정 및 user 목록 보기 | 읽기 | ✔ | ✔ | ✔ |
컬렉션에 대한 새 자동화 생성 | 생성 | ✔ | ✔ | |
새 버전이 추가될 때 Slack 알림 켜기 | 생성 | ✔ | ✔ | |
새 컬렉션 생성 | 생성 | ✔ | ✔ | |
새 사용자 지정 레지스트리 생성 | 생성 | ✔ | ✔ | |
컬렉션 카드 편집(설명) | 업데이트 | ✔ | ✔ | |
연결된 아티팩트 설명 편집 | 업데이트 | ✔ | ✔ | |
컬렉션의 태그 추가 또는 삭제 | 업데이트 | ✔ | ✔ | |
연결된 아티팩트에서 에일리어스 추가 또는 삭제 | 업데이트 | ✔ | ✔ | |
새 아티팩트 연결 | 업데이트 | ✔ | ✔ | |
레지스트리에 허용된 유형 목록 편집 | 업데이트 | ✔ | ✔ | |
사용자 지정 레지스트리 이름 편집 | 업데이트 | ✔ | ✔ | |
컬렉션 삭제 | 삭제 | ✔ | ✔ | |
자동화 삭제 | 삭제 | ✔ | ✔ | |
레지스트리에서 아티팩트 연결 해제 | 삭제 | ✔ | ✔ | |
레지스트리에 대해 허용된 아티팩트 유형 편집 | Admin | ✔ | ||
레지스트리 가시성 변경(Organization 또는 Restricted) | Admin | ✔ | ||
레지스트리에 user 추가 | Admin | ✔ | ||
레지스트리에서 user의 역할 할당 또는 변경 | Admin | ✔ |
Registry에서 user의 권한은 개별적으로 또는 Team 에의해 할당된 권한을 따릅니다. 여기서 만약 팀에 할당한 권한이 더 높을 경우 그 권한을 따르게 됩니다. 예를들어 A팀의 a에게 viewer를 설정한 후, A팀에게 member 권한을 부여한 경우, a는 member 권한을 지니게 됩니다.
MongoDB 스타일 쿼리로 registry 항목을 필터링할 수 있습니다.
wandb.Api().registries() 및 쿼리 predicates를 사용하여 MongoDB 스타일 쿼리를 기반으로 registries, collections 및 artifact versions를 필터링할 수 있습니다.
아래 예시는 세가지 간단한 검색 시나리오를 보여줍니다.
import wandb# (선택 사항) 가독성을 위해 wandb.Api() 클래스의 인스턴스를 생성합니다.api = wandb.Api()# 1. 문자열 `model`을 포함하는 모든 registries를 필터링합니다.registry_filters = {"name": {"$regex": "model"}}# 필터와 일치하는 모든 registries의 iterable을 반환합니다.registries = api.registries(filter=registry_filters)# 2. collection 이름에 문자열 `yolo`를 포함하는 registry에 관계없이 모든 collections을 필터링합니다.collection_filters = {"name": {"$regex": "yolo"}}# 필터와 일치하는 모든 collections의 iterable을 반환합니다.collections = api.registries().collections(filter=collection_filters)# 3. 문자열 `model`을 포함하고 태그 `image-classification` 또는 `latest` 에일리어스를 갖는 모든 artifact versions을 찾습니다.registry_filters = {"name": {"$regex": "model"}}# 논리적 $or 연산자를 사용하여 artifact versions을 필터링합니다.version_filters = {"$or": [{"tag": "image-classification"},{"alias": "production"}]}# 필터와 일치하는 모든 artifact versions의 iterable을 반환합니다.artifacts = api.registries(filter=registry_filters).collections().versions(filter=version_filters)
다운스트림 프로세스의 자동화를 위한 Automations
Automations 기능은 Pro 또는 Enterprise 플랜유저만을 위한 특별한 기능입니다. Automation 생성을 통해 registry 에 새로운 아티팩트가 등록될 때, 새로운 alias가 등록될 때, 등 W&B 의 이벤트에 따라 자동 모델 테스트 및 배포와 같은 워크플로우 단계들을 트리거할 수 있습니다. 예를 들어, 새로운 버전이 생성될 때 Slack 채널에 게시하거나, candidate alias가 아티팩트에 추가될 때 모델의 평가를 실행시키도록 webhook을 이용한 트리거를 보내 작업을 자동화할 수 있습니다.
- W&B가 Slack에 게시하거나 사용자를 대신하여 webhook을 실행할 수 있도록 알림을 구성합니다.
- Registry 또는 프로젝트에서 automation을 생성합니다.
이어서 간단한 사용 시나리오를 설명드리겠습니다.
case1: 새로운 모델을 개발한 후 자동화된 평가를 실행합니다.
- Registry에 모델을 관리할 Collection을 생성한 후, automation을 구성합니다.
- 예시의 automation은 'candidate' 이라는 alias를 붙이면 평가를 수행하는 webhook을 트리거합니다.
- Sweeps를 이용하여 하이퍼파라미터 튜닝을 수행합니다.
- 최고 성능을 보인 모델을 해당 컬렉션에 링크 합니다.
- 이 때, Aliases에 candidate을 작성합니다.
- 컬렉션에 모델이 추가되었고 이제 automation으로 인해 github action이 수행됩니다.
case2: 새로운 평가데이터를 구성한 후 자동화된 평가를 실행합니다.
- Registry에 평가 데이터를 관리할 Collection을 생성한 후, automation을 구성합니다.
- 새로 만든 데이터 아티팩트를 해당 컬렉션에 링크합니다.
- 컬렉션에 새 데이터가 추가되었고, 평가를 진행하는 github action이 트리거됩니다.
case3: 모델 성능 기준 달성 시 자동으로 배포할 수 있습니다. 동시에 Slack 으로 알람을 받도록 합니다!
Automation 기능은 프로 및 엔터프라이즈 플랜의 유저분들만 사용하실 수 있습니다!
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.