Passer au contenu principal
Utilisez la barre de recherche globale dans W&B Registry pour trouver un registre, une collection, un tag de version d’artifact, un tag de collection ou un alias. Vous pouvez utiliser des requêtes pour filtrer les registres, les collections et les versions d’artifact selon des critères spécifiques via le W&B Python SDK.
La syntaxe et les opérateurs disponibles pour interroger W&B Registry sont similaires à ceux des requêtes MongoDB, sans toutefois être identiques.
Seuls les éléments que vous êtes autorisé à consulter apparaissent dans les résultats de recherche.

Rechercher des éléments du registre

Utilisez la W&B App pour rechercher un élément du registre :
  1. Accédez au W&B Registry.
  2. Saisissez le terme à rechercher dans la barre de recherche en haut de la page, puis appuyez sur Entrée pour lancer la recherche.
Les résultats de recherche s’affichent sous la barre de recherche si le terme saisi correspond à un registre existant, à un nom de collection, à un tag de version d’artifact, à un tag de collection ou à un alias.
Recherche dans un registre

Interroger les éléments du registre

Utilisez wandb.Api().registries() ainsi que des prédicats de requête pour filtrer les registres, les collections et les versions d’artifact. Un prédicat de requête est une condition qui précise les critères auxquels les éléments renvoyés doivent satisfaire. Pour créer un prédicat de requête, utilisez un dictionnaire au format JSON composé d’un nom de requête, d’un ou plusieurs opérateurs et de valeurs. L’extrait de code suivant montre la structure générale d’un prédicat de requête :
{
    "query_name": {
        "operator": value
    }
}
Les sections suivantes décrivent les noms de requête disponibles pour le registre, les opérateurs pris en charge et des exemples de requêtes.

Champs pouvant être filtrés

Le tableau suivant répertorie les noms de requête que vous pouvez utiliser selon le type d’élément que vous souhaitez filtrer :
nom de requête
registresname, description, created_at, updated_at
collectionsname, tag, description, created_at, updated_at
versionstag, alias, created_at, updated_at, metadata

Opérateurs pris en charge

W&B prend en charge les opérateurs de comparaison et les opérateurs logiques suivants pour filtrer les éléments du registre :

Opérateurs de comparaison

OpérateurDescription
$eqÉgal à
$neDifférent de
$gtSupérieur à
$gteSupérieur ou égal à
$ltInférieur à
$lteInférieur ou égal à

Opérateurs logiques

OpérateurDescription
$andEffectue une opération logique AND sur une ou plusieurs conditions
$orEffectue une opération logique OR sur une ou plusieurs conditions
$norEffectue une opération logique NOR sur une ou plusieurs conditions
$notEffectue une opération logique NOT sur une condition

Autres opérateurs

OpérateurDescription
$regexCorrespondance à un motif d’expression régulière
$existsLe champ existe ou n’existe pas
$containsLa chaîne contient une valeur

Exemples de requêtes

Les exemples de code suivants illustrent quelques cas courants de recherche. Pour utiliser la méthode wandb.Api().registries(), importez d’abord la bibliothèque du SDK Python W&B (wandb) :
import wandb

# (Facultatif) Créer une instance de la classe wandb.Api() pour plus de lisibilité
api = wandb.Api()
Filtrez tous les registres contenant la chaîne model :
# Filtre tous les registres contenant la chaîne `model`
registry_filters = {
    "name": {"$regex": "model"}
}

# Renvoie un itérable de tous les registres correspondant aux filtres
registries = api.registries(filter=registry_filters)
Filtrez toutes les collections, quel que soit le registre, dont le nom contient la chaîne yolo :
# Filtre toutes les collections, indépendamment du registre, qui
# contiennent la chaîne `yolo` dans le nom de la collection
collection_filters = {
    "name": {"$regex": "yolo"}
}

# Renvoie un itérable de toutes les collections correspondant aux filtres
collections = api.registries().collections(filter=collection_filters)
Filtrez toutes les collections, quel que soit le registre, qui contiennent la chaîne yolo dans le nom de la collection et portent le tag cnn :
# Filtre toutes les collections, quel que soit le registre, qui contiennent
# la chaîne `yolo` dans le nom de la collection et possèdent `cnn` comme tag
collection_filters = {
    "name": {"$regex": "yolo"},
    "tag": "cnn"
}

# Renvoie un itérable de toutes les collections correspondant aux filtres
collections = api.registries().collections(filter=collection_filters)
Trouvez toutes les versions d’artifact contenant la chaîne model et ayant soit le tag image-classification, soit l’alias latest :
# Trouve toutes les versions d'artifact contenant la chaîne `model` et 
# possédant soit le tag `image-classification`, soit un alias `latest`
registry_filters = {
    "name": {"$regex": "model"}
}

# Utilise l'opérateur logique $or pour filtrer les versions d'artifact
version_filters = {
    "$or": [
        {"tag": "image-classification"},
        {"alias": "production"}
    ]
}

# Renvoie un itérable de toutes les versions d'artifact correspondant aux filtres
artifacts = api.registries(filter=registry_filters).collections().versions(filter=version_filters)
Chaque élément de l’itérable artifacts dans l’extrait de code précédent est une instance de la classe Artifact. Cela signifie que vous pouvez accéder aux attributs de chaque artifact, tels que name, collection, aliases, tags, created_at, et plus encore :
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")
Pour obtenir la liste complète des attributs d’un objet artifact, voir la classe Artifacts dans la documentation de référence de l’API. Filtrez toutes les versions d’un artifact, indépendamment du registre ou de la collection, créées entre 2024-01-08 et 2025-03-04 à 13:10 UTC :
# Trouver toutes les versions d'artifact créées entre le 2024-01-08 et le 2025-03-04 à 13:10 UTC. 

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

# Renvoie un itérable de toutes les versions d'artifact correspondant aux filtres
artifacts = api.registries().collections().versions(filter=artifact_filters)
Indiquez la date et l’heure au format YYYY-MM-DD HH:MM:SS pour les requêtes created_at et updated_at. Vous pouvez omettre les heures, les minutes et les secondes si vous souhaitez filtrer uniquement par date.