メインコンテンツへスキップ
W&B Registry のグローバル検索バーを使用して、レジストリ、コレクション、アーティファクトバージョンタグ、コレクションタグ、またはエイリアスを検索できます。W&B Python SDK では、クエリを使用して、特定の条件に基づいてレジストリ、コレクション、アーティファクトバージョンを絞り込むこともできます。
W&B Registry のクエリに使用できる構文と演算子は MongoDB のクエリに似ていますが、同一ではありません。
検索結果には、表示権限のある項目のみが表示されます。

レジストリ内の項目を検索する

W&B App を使用して Registry 項目を検索します。
  1. W&B Registry にアクセスします。
  2. ページ上部の検索バーに検索語を入力します。Enter キーを押して検索します。
入力した語が既存の レジストリ、コレクション 名、アーティファクト バージョンタグ、コレクション タグ、または alias と一致する場合、検索結果が検索バーの下に表示されます。
Registry 内を検索

レジストリ項目をクエリする

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以下

論理演算子

演算子説明
$and1 つ以上の条件に対して AND 演算を行います
$or1 つ以上の条件に対して OR 演算を行います
$nor1 つ以上の条件に対して 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 クラスのインスタンスです。つまり、各 アーティファクト の namecollectionaliasestagscreated_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 形式で指定します。日付のみでフィルターする場合は、時・分・秒を省略できます。