메인 콘텐츠로 건너뛰기
W&B Registry의 전역 검색 바를 사용하여 레지스트리, 컬렉션, 아티팩트 버전 태그, 컬렉션 태그 또는 별칭을 찾을 수 있습니다. W&B Python SDK를 사용해 특정 기준에 따라 레지스트리, 컬렉션, 아티팩트 버전을 필터링하는 쿼리를 작성할 수 있습니다.
W&B Registry를 쿼리할 때 사용할 수 있는 문법과 연산자는 MongoDB 쿼리와 유사하지만, 완전히 동일하지는 않습니다.
검색 결과에는 사용 권한이 있는 항목만 표시됩니다.

레지스트리 항목 검색

W&B 앱을 사용해 레지스트리 항목을 검색합니다:
  1. W&B Registry로 이동합니다.
  2. 페이지 상단의 검색 창에 검색어를 입력합니다. Enter 키를 눌러 검색합니다.
입력한 검색어가 기존 레지스트리, 컬렉션 이름, 아티팩트 버전 태그, 컬렉션 태그 또는 별칭과 일치하면 검색 결과가 검색 창 아래에 표시됩니다.
Registry 내에서 검색하기

레지스트리 항목 쿼리하기

wandb.Api().registries()와 *쿼리 프레디킷(query predicate)*을 사용해 레지스트리, 컬렉션, 아티팩트 버전을 필터링할 수 있습니다. 쿼리 프레디킷은 반환되는 항목이 충족해야 하는 기준을 지정하는 조건입니다. 쿼리 프레디킷을 생성하려면 query name, 하나 이상의 operators, 그리고 값들로 구성된 JSON 유사 형태의 사전을 사용합니다. 다음 코드 스니펫은 쿼리 프레디킷의 일반적인 구조를 보여줍니다:
{
    "query_name": {
        "operator": value
    }
}
다음 섹션에서는 레지스트리에서 사용할 수 있는 쿼리 이름, 지원되는 연산자, 그리고 쿼리 예시를 설명합니다.

필터 가능한 필드

다음 표는 필터링하려는 항목 유형에 따라 사용할 수 있는 쿼리 이름을 나열합니다:
쿼리 이름
registriesname, description, created_at, updated_at
collectionsname, tag, description, created_at, updated_at
versionstag, alias, created_at, updated_at, metadata

지원되는 연산자

W&B에서는 레지스트리 항목을 필터링할 때 다음과 같은 비교 연산자와 논리 연산자를 지원합니다:

비교 연산자

Operator설명
$eq같음
$ne같지 않음
$gt보다 큼
$gte크거나 같음
$lt보다 작음
$lte작거나 같음

논리 연산자

OperatorDescription
$and하나 이상의 조건에 AND 논리를 적용합니다
$or하나 이상의 조건에 OR 논리를 적용합니다
$nor하나 이상의 조건에 NOR 논리를 적용합니다
$not한 조건에 NOT 논리를 적용합니다

기타 연산자

OperatorDescription
$regex정규 표현식 패턴 매칭
$exists필드의 존재 여부
$contains문자열이 값을 포함하는지 여부

예시 쿼리

다음 코드 예제는 몇 가지 일반적인 검색 시나리오를 보여줍니다. wandb.Api().registries() 메서드를 사용하려면 먼저 W&B Python SDK(wandb) 라이브러리를 임포트해야 합니다:
import wandb

# (선택 사항) 가독성을 위해 wandb.Api() 클래스의 인스턴스를 생성합니다
api = wandb.Api()
model 문자열을 포함하는 모든 레지스트리를 필터링합니다:
# 문자열 `model`을 포함하는 모든 레지스트리 필터링
registry_filters = {
    "name": {"$regex": "model"}
}

# 필터와 일치하는 모든 레지스트리의 이터러블을 반환
registries = api.registries(filter=registry_filters)
레지스트리와 상관없이, 컬렉션 이름에 문자열 yolo가 포함된 모든 컬렉션을 필터링합니다:
# 레지스트리에 관계없이 컬렉션 이름에 문자열 `yolo`를 포함하는
# 모든 컬렉션을 필터링합니다
collection_filters = {
    "name": {"$regex": "yolo"}
}

# 필터와 일치하는 모든 컬렉션의 이터러블을 반환합니다
collections = api.registries().collections(filter=collection_filters)
레지스트리와 상관없이 컬렉션 이름에 문자열 yolo가 포함되고 태그 cnn을 가진 모든 컬렉션을 필터링합니다:
# 레지스트리에 관계없이 컬렉션 이름에 `yolo` 문자열이 포함되고
# `cnn` 태그를 가진 모든 컬렉션 필터링
collection_filters = {
    "name": {"$regex": "yolo"},
    "tag": "cnn"
}

# 필터와 일치하는 모든 컬렉션의 이터러블 반환
collections = api.registries().collections(filter=collection_filters)
문자열 model을 포함하고, 태그 image-classification 또는 별칭 latest 중 하나가 있는 모든 아티팩트 버전을 찾습니다:
# 문자열 `model`을 포함하고 태그 `image-classification` 또는 `latest` 별칭을 가진
# 모든 아티팩트 버전을 찾습니다
registry_filters = {
    "name": {"$regex": "model"}
}

# 논리 연산자 $or를 사용하여 아티팩트 버전을 필터링합니다
version_filters = {
    "$or": [
        {"tag": "image-classification"},
        {"alias": "production"}
    ]
}

# 필터와 일치하는 모든 아티팩트 버전의 이터러블을 반환합니다
artifacts = api.registries(filter=registry_filters).collections().versions(filter=version_filters)
이전 코드 스니펫에서 artifacts 이터러블의 각 항목은 Artifact 클래스의 인스턴스입니다. 즉, 각 아티팩트의 name, collection, aliases, tags, created_at 등의 속성에 접근할 수 있습니다.
for art in artifacts:
    print(f"아티팩트 이름: {art.name}")
    print(f"아티팩트가 속한 컬렉션: { art.collection.name}")
    print(f"아티팩트 별칭: {art.aliases}")
    print(f"아티팩트에 연결된 태그: {art.tags}")
    print(f"아티팩트 생성 시각: {art.created_at}\n")
아티팩트 객체의 전체 속성 목록은 API Reference 문서의 Artifacts Class에서 확인할 수 있습니다. 다음은 레지스트리나 컬렉션과 관계없이 2024-01-08부터 2025-03-04 13:10 UTC 사이에 생성된 모든 아티팩트 버전을 필터링하는 예입니다:
# 2024-01-08부터 2025-03-04 13:10 UTC 사이에 생성된 모든 아티팩트 버전을 찾습니다. 

artifact_filters = {
    "alias": "latest",
    "created_at" : {"$gte": "2024-01-08", "$lte": "2025-03-04 13:10:00"},
}

# 필터와 일치하는 모든 아티팩트 버전의 이터러블을 반환합니다
artifacts = api.registries().collections().versions(filter=artifact_filters)
created_atupdated_at 쿼리에는 날짜와 시간을 YYYY-MM-DD HH:MM:SS 형식으로 지정하세요. 날짜만으로 필터링하려면 시, 분, 초는 생략할 수 있습니다.