Skip to main content
Jede Sequenz trägt zwei getrennte Arten von Metadaten:
  • Technische Gültigkeit. Ist die Aufnahme nutzbar? Avala meldet sie anhand von Akzeptanzkriterien und Qualitätszielen. Siehe den Abschnitt Technische Gültigkeit unten.
  • Verhaltensergebnis. Was hat die Person oder der Roboter getan, und war die Aufgabe erfolgreich? Avala speichert es als Ergebnis-Label der Sequenz.
Eine Sequenz kann technisch gültig sein und trotzdem einen Fehler zeigen. Eine fehlgeschlagene Sequenz ist oft die nützlichste. Weil die beiden Achsen getrennt bleiben, verwirft ein Filter für saubere Daten nie einen nützlichen Fehler, und ein Filter für Erfolg verbirgt nie einen defekten Sensor.

Das Ergebnis-Label

Jede Sequenz hat höchstens ein aktuelles Ergebnis-Label. Jeder Schreibvorgang erfasst eine neue Version. Frühere Versionen bleiben in der Label-Historie lesbar.

Beispiel

Dies ist das Label einer menschlichen Demonstration mit einem Abrutschen und einer Erholung, so wie GET .../sequences/<sequence-uid>/outcome/ es zurückgibt:
Die Werte veranschaulichen die Form des Labels. Sie beschreiben keine echte Lieferung.

Felder

Alle Zeitstempel sind Sekunden ab Beginn der Sequenz. mistake_type, recovery_type und failure_stage sind Freitext. Verwenden Sie die Tags aus der Fehlertaxonomie Ihres Programms, damit sich Sequenzen sauber gruppieren lassen.

Ergebniswerte

Jede Teilaufgabe kann ihr eigenes Ergebnis aus derselben Liste tragen.

Autonomiegrad

Teilaufgaben

Jede Teilaufgabe ist {label, start_ts, end_ts, outcome}. Ein Label enthält höchstens 256 Teilaufgaben. Die Liste muss nach start_ts sortiert sein. Zwei Teilaufgaben sind entweder disjunkt, oder eine enthält die andere vollständig, etwa eine Phase und ihre Schritte. Aneinanderstoßende Enden gelten als disjunkt. Eine teilweise Überlappung wird abgelehnt. Wenn zwei Teilaufgaben zur selben Zeit beginnen, führen Sie die umschließende zuerst auf.

Handaktionen

hand_actions enthält zwei unabhängige Ströme, left und right. Jedes Element beschreibt, was eine Hand über einen Zeitbereich tut.
  • Innerhalb einer Hand sind die Elemente nach start_ts sortiert und dürfen sich nicht überlappen. Ein Element beginnt am Ende des vorherigen oder danach. Aneinanderstoßen ist erlaubt.
  • Die beiden Hände dürfen sich beliebig überlappen.
  • Jede Hand enthält höchstens 3.600 Elemente. Das entspricht einer Stunde bei einem Label pro Sekunde.
  • left und right sind die einzigen Schlüssel. Sie können jeden davon weglassen. Eine weggelassene Hand wird als leere Liste gespeichert.
  • Ein leeres object oder verb wird als null gespeichert. Jedes gespeicherte Element hat alle sechs Felder.

Dauer der Sequenz

Wenn Avala die Dauer der Sequenz kennt, muss jedes end_ts einer Teilaufgabe und jedes end_ts einer Handaktion höchstens die Dauer plus 1 Sekunde betragen. Die zusätzliche Sekunde berücksichtigt Labels, die mit einem pro Sekunde geschrieben werden. Avala kennt die Dauer, wenn die Sequenz genau eine extrahierte MCAP-Datei mit erfasster Länge hat. Bei anderen Sequenzen entfällt die Prüfung.

Zugehörigkeit zur Evaluation

evaluation_membership ordnet die Sequenz einer Aufteilung zu: Avala setzt held_out_eval für die Sequenzen jeder Evaluationskohorte. Diese Sequenzen erscheinen nie in einem Trainings-Release. Siehe Evaluation.

Leakage-Gruppen

Leakage-Gruppen verhindern, dass Beinahe-Duplikate auf beiden Seiten einer Aufteilung in Training und Evaluation landen. leakage_groups akzeptiert diese Schlüssel, jeweils mit einer Gruppen-ID von bis zu 255 Zeichen: Jeder andere Schlüssel wird abgelehnt. Jeder Schlüssel ist optional. Avala stellt Evaluationskohorten so zusammen, dass kein Gruppenwert einer Kohorte in einem Trainings-Release vorkommt. Sie können Ihre eigenen Daten genauso aufteilen: Halten Sie nach Gruppe zurück, nie nach zufälliger Sequenz. Die Gruppen-IDs von Avala sind pseudonym, sodass Sie gruppieren und aufteilen können, ohne zu erfahren, wer oder wo.

Quell-Metadaten

source_metadata erfasst, woher ein importiertes Label stammt, zum Beispiel {"importer": "...", "run_id": "...", "task": "...", "log_path": "..."}.
  • Es ist ein flaches Objekt mit höchstens 20 Schlüsseln.
  • Jeder Schlüssel hat 1 bis 64 Zeichen.
  • Jeder Wert ist ein String mit bis zu 512 Zeichen, eine endliche Zahl oder ein Boolean.
  • Verschachtelte Objekte, Listen und null-Werte werden abgelehnt.

Wie Schreibvorgänge funktionieren

  • Ein Schreibvorgang ersetzt das aktuelle Label vollständig und erfasst eine neue Version. Jedes optionale Feld, das Sie weglassen, wird als nicht gesetzt gespeichert. Es wird nicht aus der vorherigen Version übernommen.
  • Schreiben erfordert Bearbeitungszugriff auf den Datensatz. Lesen erfordert denselben Zugriff wie das Lesen der Sequenz, auch bei öffentlichen Datensätzen.
  • confidence wird abgelehnt, sofern source nicht model ist.
  • Das Lesen einer Sequenz ohne Label gibt 404 zurück.

Technische Gültigkeit

Technische Gültigkeit ist nicht Teil des Ergebnis-Labels. Avala meldet sie aus der Akzeptanz-Engine und aus Qualitätszielen, und sie hat kein eigenes JSON-Schema. Akzeptanzkriterien. Jede Aufnahme in einer Erfassungskampagne erhält ein maschinelles Urteil: accept, quarantine oder reject. Das Urteil ergibt sich aus diesen Kriterien: Jedes Kriterium meldet pass, fail, insufficient_evidence oder skipped. Ein fehlgeschlagenes Kriterium erfasst einen Grundcode, etwa acceptance_frame_rate_drop oder hands_not_visible. Ein Reviewer bestätigt oder überstimmt dann das Urteil. Die Grundcodes sind unter Akzeptierte Stunde aufgeführt. Lesen Sie die Akzeptanz mit den MCP-Tools get_result_acceptance für eine Aufnahme und get_campaign_acceptance_summary für eine Kampagne. list_capture_submissions enthält die maschinelle Akzeptanzzusammenfassung jeder Aufnahme. Qualitätsziele. Ein Projekt kann Schwellenwerte für Qualitätsmetriken festlegen, etwa Akzeptanzrate, Ablehnungsrate und Problemrate. Avala alarmiert, wenn eine Metrik ihren Schwellenwert überschreitet. Lesen Sie sie mit dem MCP-Tool list_quality_targets. Programmprüfungen, die keine maschinellen Kriterien sind, etwa Kalibrierung, Einwilligung und Zeitstempel-Synchronisierung, werden als Ablehnungsgründe im Abdeckungsbericht gemeldet. Siehe Akzeptierte Stunde.

Ergebnis-Labels lesen und schreiben

Die REST-Endpunkte liegen unter https://api.avala.ai/api/v1: Die Datensatzliste akzeptiert die Filter outcome, evaluation_membership, source und autonomy_level. Jeder nimmt einen Wert oder eine kommagetrennte Liste, und eine Sequenz passt, wenn sie einem beliebigen Wert der Liste entspricht. model_version passt auf genau eine Version. Ein unbekannter Filterwert gibt 400 zurück. Die Sequenzliste, GET /datasets/{owner}/{slug}/sequences/, akzeptiert outcome und evaluation_membership in derselben Form. Sie gibt die Sequenzen zurück, deren aktuelles Label passt.

Ein Label schreiben

Das TypeScript-SDK nimmt Optionsnamen in camelCase und sendet die snake_case-Felder der API. Schlüssel innerhalb von sourceMetadata werden so gesendet, wie sie geschrieben sind. In der CLI nimmt --hand-actions-file eine JSON-Datei mit {"left": [...], "right": [...]}, und --leakage-group KEY=ID kann wiederholt werden.

Labels lesen

Die Datensatzliste gibt bis zu 100 Labels pro Seite zurück. Übergeben Sie den cursor der vorherigen Seite, um fortzufahren.

Labels mit dem MCP-Server lesen

Der MCP-Server liest Ergebnis-Labels. Er schreibt sie nicht.
  • get_sequence_outcome nimmt owner, slug und sequenceUid. Es gibt das aktuelle Label zurück.
  • list_sequence_outcomes nimmt owner und slug, dazu die Filter outcome, evaluationMembership, source, autonomyLevel und modelVersion sowie limit und cursor.
Beide Tools geben standardmäßig eine Kurzform zurück. Übergeben Sie detail: "full", um Teilaufgaben, Handaktionen, die Fehler- und Erholungs-Tags, Leakage-Gruppen, Quell-Metadaten und den Labeler einzuschließen. Siehe Avala mit KI nutzen für die Verbindung.

Ergebnis-Labels mit LeRobot exportieren

Der LeRobot-Exporter kann das aktuelle Ergebnis-Label jeder Sequenz neben den Datensatz schreiben. Eine Avala-Sequenz wird zu einer LeRobot-Episode.
Die Labels werden nach meta/avala_sequence_outcomes.jsonl geschrieben, ein JSON-Objekt pro Zeile und eine Zeile pro gespeicherter LeRobot-Episode. Die Episodentabelle von LeRobot selbst hat keinen Platz für diese Metadaten, deshalb ist es eine separate Datei. Jede Zeile hat diese Schlüssel: Eine Sequenz ohne Label erhält eine Zeile mit nur episode_index, avala_sequence_uid und "outcome": null.

Die Fehler-und-Erholungs-Spur

Behebbare Fehler werden als eigene Spur geliefert: Sequenzen, deren Ergebnis mistake_and_recovery oder intervention ist. Die Teilaufgaben und Handaktionen jeder Sequenz markieren, wo der Fehler und die Erholung stattfinden. Die Spur wird als separater Slice im Release ausgeliefert. Sie können darauf trainieren, sie gewichten oder weglassen. Sie können dieselbe Menge auch selbst mit ?outcome=mistake_and_recovery,intervention zusammenstellen. Unsichere Sequenzen gehören nicht zur Spur.