- Validité technique. L’enregistrement est-il exploitable ? Avala la rapporte à partir des critères d’acceptation et des objectifs de qualité. Consultez la section Validité technique.
- Résultat comportemental. Qu’a fait la personne ou le robot, et la tâche a-t-elle réussi ? Avala le stocke comme étiquette de résultat de la séquence.
L’étiquette de résultat
Chaque séquence a au plus une étiquette de résultat courante. Chaque écriture enregistre une nouvelle version. Les versions précédentes restent lisibles dans l’historique de l’étiquette.Exemple
Voici l’étiquette d’une démonstration humaine avec un glissement et une récupération, telle queGET .../sequences/<sequence-uid>/outcome/ la renvoie :
Champs
Tous les horodatages sont exprimés en secondes depuis le début de la séquence.mistake_type, recovery_type et failure_stage sont du texte libre. Utilisez les libellés de la taxonomie des défaillances de votre programme pour que les séquences se regroupent proprement.
Valeurs de résultat
Chaque sous-tâche peut porter son propre résultat, tiré de la même liste.
Niveau d’autonomie
Sous-tâches
Chaque sous-tâche a la forme{label, start_ts, end_ts, outcome}.
Une étiquette contient au plus 256 sous-tâches. La liste doit être triée par
start_ts. Deux sous-tâches sont soit disjointes, soit l’une contient entièrement l’autre, comme une phase et ses étapes. Des extrémités qui se touchent comptent comme disjointes. Un chevauchement partiel est rejeté. Lorsque deux sous-tâches commencent au même instant, placez d’abord celle qui englobe l’autre.
Actions des mains
hand_actions contient deux flux indépendants, left et right. Chaque élément décrit ce que fait une main sur une plage temporelle.
- Pour une même main, les éléments sont triés par
start_tset ne doivent pas se chevaucher. Un élément commence à la fin du précédent ou après. Ils peuvent se toucher. - Les deux mains peuvent se chevaucher librement.
- Chaque main contient au plus 3 600 éléments. Cela représente une heure à raison d’une étiquette par seconde.
leftetrightsont les seules clés. Vous pouvez omettre l’une ou l’autre. Une main omise est stockée comme une liste vide.- Un
objectou unverbvide est stocké commenull. Chaque élément stocké possède les six champs.
Durée de la séquence
Lorsqu’Avala connaît la durée de la séquence, chaqueend_ts de sous-tâche et chaque end_ts d’action de main doit être au plus égal à la durée plus 1 seconde. Cette seconde supplémentaire tient compte des étiquettes écrites à raison d’une par seconde. Avala connaît la durée lorsque la séquence a exactement un fichier MCAP extrait dont la durée est enregistrée. Pour les autres séquences, la vérification n’a pas lieu.
Appartenance à l’évaluation
evaluation_membership place la séquence dans une partition :
Avala définit
held_out_eval sur les séquences de chaque cohorte d’évaluation. Ces séquences n’apparaissent jamais dans une release d’entraînement. Consultez Évaluation.
Groupes de fuite
Les groupes de fuite empêchent des quasi-doublons de se retrouver des deux côtés d’une séparation entre entraînement et évaluation.leakage_groups accepte ces clés, chacune avec un identifiant de groupe de 255 caractères au plus :
Toute autre clé est rejetée. Chaque clé est facultative.
Avala construit les cohortes d’évaluation de sorte qu’aucune valeur de groupe d’une cohorte n’apparaisse dans une release d’entraînement. Vous pouvez séparer vos propres données de la même façon : mettez de côté par groupe, jamais par séquence aléatoire. Les identifiants de groupe d’Avala sont pseudonymes : vous pouvez regrouper et séparer les séquences sans savoir qui ni où.
Métadonnées de source
source_metadata indique d’où vient une étiquette importée, par exemple {"importer": "...", "run_id": "...", "task": "...", "log_path": "..."}.
- C’est un objet plat d’au plus 20 clés.
- Chaque clé compte de 1 à 64 caractères.
- Chaque valeur est une chaîne de 512 caractères au plus, un nombre fini ou un booléen.
- Les objets imbriqués, les listes et les valeurs
nullsont rejetés.
Fonctionnement des écritures
- Une écriture remplace l’étiquette courante dans son ensemble et enregistre une nouvelle version. Tout champ facultatif que vous omettez est stocké comme non défini. Il n’est pas repris de la version précédente.
- L’écriture nécessite un accès en modification au jeu de données. La lecture nécessite le même accès que la lecture de la séquence, y compris pour les jeux de données publics.
confidenceest rejeté sauf sisourcevautmodel.- La lecture d’une séquence sans étiquette renvoie
404.
Validité technique
La validité technique ne fait pas partie de l’étiquette de résultat. Avala la rapporte à partir du moteur d’acceptation et des objectifs de qualité. Elle n’a pas de schéma JSON propre. Critères d’acceptation. Chaque capture d’une campagne de capture reçoit un verdict automatique :accept, quarantine ou reject. Le verdict découle de ces critères :
Chaque critère rapporte
pass, fail, insufficient_evidence ou skipped. Un critère en échec enregistre un code de motif, comme acceptance_frame_rate_drop ou hands_not_visible. Un réviseur confirme ensuite le verdict ou le remplace. Les codes de motif sont listés dans Heure acceptée.
Lisez l’acceptation avec les outils MCP get_result_acceptance pour une capture et get_campaign_acceptance_summary pour une campagne. list_capture_submissions inclut la synthèse d’acceptation automatique de chaque capture.
Objectifs de qualité. Un projet peut fixer des seuils sur des métriques de qualité, comme le taux d’acceptation, le taux de rejet et le taux de problèmes. Avala émet une alerte lorsqu’une métrique franchit son seuil. Lisez-les avec l’outil MCP list_quality_targets.
Les vérifications du programme qui ne sont pas des critères automatiques, comme la calibration, le consentement et la synchronisation des horodatages, sont rapportées comme motifs de rejet dans le rapport de couverture. Consultez Heure acceptée.
Lire et écrire les étiquettes de résultat
Les endpoints REST se trouvent soushttps://api.avala.ai/api/v1 :
La liste du jeu de données accepte les filtres
outcome, evaluation_membership, source et autonomy_level. Chacun prend une valeur ou une liste séparée par des virgules, et une séquence correspond si elle a l’une des valeurs de la liste. model_version correspond à une seule version exacte. Une valeur de filtre inconnue renvoie 400.
La liste des séquences, GET /datasets/{owner}/{slug}/sequences/, accepte outcome et evaluation_membership sous la même forme. Elle renvoie les séquences dont l’étiquette courante correspond.
Écrire une étiquette
sourceMetadata sont envoyées telles quelles. Dans la CLI, --hand-actions-file prend un fichier JSON de la forme {"left": [...], "right": [...]}, et --leakage-group KEY=ID peut être répété.
Lire les étiquettes
cursor de la page précédente pour continuer.
Lire les étiquettes avec le serveur MCP
Le serveur MCP lit les étiquettes de résultat. Il ne les écrit pas.get_sequence_outcomeprendowner,slugetsequenceUid. Il renvoie l’étiquette courante.list_sequence_outcomesprendowneretslug, plus les filtresoutcome,evaluationMembership,source,autonomyLeveletmodelVersion, ainsi quelimitetcursor.
detail: "full" pour inclure les sous-tâches, les actions des mains, les libellés d’erreur et de récupération, les groupes de fuite, les métadonnées de source et l’auteur de l’étiquette. Consultez Utiliser Avala avec l’IA pour vous connecter.
Exporter les étiquettes de résultat avec LeRobot
L’exportateur LeRobot peut écrire l’étiquette de résultat courante de chaque séquence à côté du jeu de données. Une séquence Avala devient un épisode LeRobot.meta/avala_sequence_outcomes.jsonl, avec un objet JSON par ligne et une ligne par épisode LeRobot enregistré. La table des épisodes de LeRobot n’a pas de place pour ces métadonnées, d’où ce fichier séparé. Chaque ligne contient ces clés :
Une séquence sans étiquette reçoit une ligne avec seulement
episode_index, avala_sequence_uid et "outcome": null.
La voie défaillance et récupération
Les défaillances récupérables sont livrées dans leur propre voie : les séquences dont le résultat estmistake_and_recovery ou intervention. Les sous-tâches et les actions des mains de chaque séquence indiquent où se produisent la défaillance et la récupération.
La voie est livrée comme une slice distincte dans la release. Vous pouvez l’utiliser pour l’entraînement, la pondérer ou l’exclure. Vous pouvez aussi construire vous-même le même ensemble avec ?outcome=mistake_and_recovery,intervention. Les séquences dangereuses ne font pas partie de la voie.