W&B Registry のグローバル検索バーを使用して、レジストリ、コレクション、アーティファクトバージョンタグ、コレクションタグ、またはエイリアスを検索できます。W&B Python SDK を使用して、特定の条件に基づいてレジストリ、コレクション、およびアーティファクトバージョンをフィルタするクエリを実行できます。
W&B Registry をクエリする際に使用できる構文と利用可能なオペレーターは、MongoDB のクエリと似ていますが、完全に同一ではありません。
検索結果には、閲覧権限があるアイテムのみが表示されます。
W&B App を使用してレジストリ項目を検索します。
- W&B Registry に移動します。
- ページ上部の検索バーに検索語句を入力し、Enter キーを押して検索します。
指定した語句が既存のレジストリ、コレクション名、アーティファクトのバージョンタグ、コレクションタグ、またはエイリアスに一致する場合、検索結果が検索バーの下に表示されます。
wandb.Api().registries() と クエリ述語 を使用して、レジストリ、コレクション、およびアーティファクトバージョンを絞り込みます。クエリ述語は、返される項目が満たす必要のある条件を指定するものです。
クエリ述語を作成するには、クエリ名、1 つ以上の演算子、および値から構成される JSON 風の辞書を使用します。次のコードスニペットは、クエリ述語の一般的な構造を示しています。
{
"query_name": {
"operator": value
}
}
次のセクションでは、レジストリのクエリで使用できるクエリ名、サポートされている演算子、およびクエリ例について説明します。
次の表は、フィルター対象とするアイテムの種類に応じて使用できるクエリ名を示します。
| クエリ名 |
|---|
| registries | name, description, created_at, updated_at |
| collections | name, tag, description, created_at, updated_at |
| versions | tag, alias, created_at, updated_at, metadata |
W&B は、レジストリ内のアイテムをフィルタリングするために、次の比較演算子および論理演算子をサポートしています。
| 演算子 | 説明 |
|---|
$eq | 等しい |
$ne | 等しくない |
$gt | より大きい |
$gte | 以上 |
$lt | より小さい |
$lte | 以下 |
| Operator | 説明 |
|---|
$and | 1つ以上の条件に対して AND ロジックを適用します |
$or | 1つ以上の条件に対して OR ロジックを適用します |
$nor | 1つ以上の条件に対して NOR ロジックを適用します |
$not | 条件に対して NOT ロジックを適用します |
| Operator | Description |
|---|
$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 リファレンスドキュメントの 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_at および updated_at を指定するクエリでは、日時を YYYY-MM-DD HH:MM:SS 形式で指定してください。日付のみでフィルタリングしたい場合は、時・分・秒を省略できます。