W&B Registry のグローバル検索バーを使用して、レジストリ、コレクション、アーティファクトバージョンタグ、コレクションタグ、またはエイリアスを検索できます。W&B Python SDK では、クエリを使用して、特定の条件に基づいてレジストリ、コレクション、アーティファクトバージョンを絞り込むこともできます。
W&B Registry のクエリに使用できる構文と演算子は MongoDB のクエリに似ていますが、同一ではありません。
検索結果には、表示権限のある項目のみが表示されます。
W&B App を使用して Registry 項目を検索します。
- W&B Registry にアクセスします。
- ページ上部の検索バーに検索語を入力します。Enter キーを押して検索します。
入力した語が既存の レジストリ、コレクション 名、アーティファクト バージョンタグ、コレクション タグ、または alias と一致する場合、検索結果が検索バーの下に表示されます。
wandb.Api().registries() と クエリ述語 を使用して、レジストリ、コレクション、アーティファクト バージョンをフィルターします。クエリ述語は、返される項目が満たすべき条件を指定するものです。
クエリ述語を作成するには、クエリ名、1 つ以上の 演算子、および値で構成される JSON 形式に似た辞書を使用します。次のコードスニペットは、クエリ述語の一般的な構造を示しています。
{
"query_name": {
"operator": value
}
}
以下のセクションでは、レジストリで使用可能なクエリ名、サポートされる演算子、およびクエリの例について説明します。
次の表は、フィルターする項目のタイプに応じて使用できるクエリ名を示しています。
| クエリ名 |
|---|
| レジストリ | name, description, created_at, updated_at |
| コレクション | name, tag, description, created_at, updated_at |
| バージョン | tag, alias, created_at, updated_at, metadata |
W&B は、レジストリ項目を絞り込むために、次の比較演算子および論理演算子をサポートしています。
| 演算子 | 説明 |
|---|
$eq | 等しい |
$ne | 等しくない |
$gt | より大きい |
$gte | 以上 |
$lt | より小さい |
$lte | 以下 |
| 演算子 | 説明 |
|---|
$and | 1 つ以上の条件に対して AND 演算を行います |
$or | 1 つ以上の条件に対して OR 演算を行います |
$nor | 1 つ以上の条件に対して NOR 演算を行います |
$not | 条件に対して NOT 演算を行います |
| 演算子 | 説明 |
|---|
$regex | 正規表現パターンに一致 |
$exists | フィールドの有無 |
$contains | 文字列に値を含む |
以下のコード例では、一般的な検索パターンをいくつか示します。
wandb.Api().registries() methodを使用するには、まずW&B Python SDK (wandb) ライブラリをインポートします。
import wandb
# (省略可) 可読性のために wandb.Api() クラスのインスタンスを作成する
api = wandb.Api()
model という文字列を含むすべてのレジストリを絞り込みます:
# 文字列 `model` を含むすべての Registry をフィルターする
registry_filters = {
"name": {"$regex": "model"}
}
# フィルターに一致するすべての Registry のイテラブルを返す
registries = api.registries(filter=registry_filters)
レジストリに関係なく、コレクション名に文字列 yolo を含むすべてのコレクションをフィルターするには、次のようにします:
# レジストリに関係なく、コレクション名に文字列 `yolo` を含む
# すべてのコレクションをフィルターする
collection_filters = {
"name": {"$regex": "yolo"}
}
# フィルターに一致するすべてのコレクションのイテラブルを返す
collections = api.registries().collections(filter=collection_filters)
コレクション名に文字列 yolo を含み、タグに cnn を持つ、レジストリに関係なくすべてのコレクションをフィルターします:
# Registryに関係なく、collection名に文字列`yolo`を含み、
# タグとして`cnn`を持つすべてのcollectionをフィルターする
collection_filters = {
"name": {"$regex": "yolo"},
"tag": "cnn"
}
# フィルターに一致するすべてのcollectionのイテラブルを返す
collections = api.registries().collections(filter=collection_filters)
文字列 model を含み、タグ image-classification またはエイリアス latest のいずれかを持つアーティファクト のすべてのバージョンを検索します:
# 文字列 `model` を含み、タグ `image-classification` またはエイリアス `latest` を持つ
# すべての artifact バージョンを検索する
registry_filters = {
"name": {"$regex": "model"}
}
# 論理演算子 $or を使用して artifact バージョンをフィルターする
version_filters = {
"$or": [
{"tag": "image-classification"},
{"alias": "production"}
]
}
# フィルターに一致するすべての artifact バージョンのイテラブルを返す
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"artifact name: {art.name}")
print(f"collection artifact belongs to: { art.collection.name}")
print(f"artifact aliases: {art.aliases}")
print(f"tags attached to artifact: {art.tags}")
print(f"artifact created at: {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バージョンを検索する。
artifact_filters = {
"alias": "latest",
"created_at" : {"$gte": "2024-01-08", "$lte": "2025-03-04 13:10:00"},
}
# フィルターに一致するすべてのartifactバージョンのイテラブルを返す
artifacts = api.registries().collections().versions(filter=artifact_filters)
created_at および updated_at のクエリでは、日時を YYYY-MM-DD HH:MM:SS 形式で指定します。日付のみでフィルターする場合は、時・分・秒を省略できます。