- Техническая валидность. Пригодна ли запись к использованию? Avala сообщает её на основе критериев приёмки и целевых показателей качества. См. раздел «Техническая валидность» ниже.
- Поведенческий результат. Что сделал человек или робот и успешно ли выполнена задача? Avala хранит его как метку результата последовательности.
Метка результата
У каждой последовательности не более одной текущей метки результата. Каждая запись создаёт новую версию. Более ранние версии остаются доступными в истории метки.Пример
Так выглядит метка демонстрации человеком с соскальзыванием и восстановлением в ответеGET .../sequences/<sequence-uid>/outcome/:
Поля
Все временные метки указаны в секундах от начала последовательности.mistake_type, recovery_type и failure_stage задаются свободным текстом. Используйте теги из таксономии сбоев вашей программы, чтобы последовательности чисто группировались.
Значения результата
Каждая подзадача может нести собственный результат из того же списка.
Уровень автономии
Подзадачи
Каждая подзадача имеет вид{label, start_ts, end_ts, outcome}.
Метка содержит не более 256 подзадач. Список должен быть упорядочен по
start_ts. Любые две подзадачи либо не пересекаются, либо одна полностью содержит другую, как этап и его шаги. Соприкасающиеся концы считаются непересекающимися. Частичное перекрытие отклоняется. Когда две подзадачи начинаются в один момент, первой указывайте охватывающую.
Действия рук
hand_actions содержит два независимых потока, left и right. Каждый элемент описывает, что делает одна рука на временном диапазоне.
- В пределах одной руки элементы упорядочены по
start_tsи не должны перекрываться. Элемент начинается в момент окончания предыдущего или позже. Соприкосновение допустимо. - Потоки двух рук могут свободно перекрываться.
- Для каждой руки допускается не более 3600 элементов. Это один час при одной метке в секунду.
leftиrightявляются единственными ключами. Любой из них можно опустить. Опущенная рука сохраняется как пустой список.- Пустые
objectилиverbсохраняются какnull. Каждый сохранённый элемент содержит все шесть полей.
Длительность последовательности
Когда Avala знает длительность последовательности, каждыйend_ts подзадачи и каждый end_ts действия руки должен быть не больше длительности плюс 1 секунда. Дополнительная секунда учитывает метки, записанные раз в секунду. Avala знает длительность, когда у последовательности ровно один извлечённый файл MCAP с записанной длиной. Для остальных последовательностей проверка пропускается.
Принадлежность к оценке
evaluation_membership относит последовательность к одному из разбиений:
Avala задаёт
held_out_eval для последовательностей каждой оценочной когорты. Такие последовательности никогда не попадают в релиз для обучения. См. Оценка.
Группы утечки
Группы утечки не дают почти одинаковым последовательностям попасть по обе стороны разбиения на обучение и оценку.leakage_groups принимает следующие ключи, каждый с идентификатором группы длиной до 255 символов:
Любой другой ключ отклоняется. Каждый ключ необязателен.
Avala формирует оценочные когорты так, чтобы ни одно значение группы из когорты не встречалось ни в одном релизе для обучения. Вы можете разбивать собственные данные тем же способом: откладывайте данные по группам, никогда по случайным последовательностям. Идентификаторы групп Avala псевдонимны, поэтому вы можете группировать и разбивать данные, не узнавая, кто и где записывал.
Метаданные источника
source_metadata фиксирует, откуда пришла импортированная метка, например {"importer": "...", "run_id": "...", "task": "...", "log_path": "..."}.
- Это плоский объект, не более 20 ключей.
- Длина каждого ключа от 1 до 64 символов.
- Каждое значение является строкой до 512 символов, конечным числом или булевым значением.
- Вложенные объекты, списки и значения
nullотклоняются.
Как работает запись
- Запись заменяет текущую метку целиком и создаёт новую версию. Любое необязательное поле, которое вы не передали, сохраняется как незаданное. Оно не копируется из предыдущей версии.
- Для записи нужен доступ на редактирование набора данных. Для чтения нужен тот же доступ, что и для чтения последовательности, в том числе для публичных наборов данных.
confidenceотклоняется, еслиsourceне равенmodel.- Чтение последовательности без метки возвращает
404.
Техническая валидность
Техническая валидность не входит в метку результата. Avala сообщает её на основе механизма приёмки и целевых показателей качества, и собственной JSON-схемы у неё нет. Критерии приёмки. Каждая запись в кампании сбора получает машинный вердикт:accept, quarantine или reject. Вердикт выносится по следующим критериям:
Каждый критерий сообщает
pass, fail, insufficient_evidence или skipped. Непройденный критерий записывает код причины, например acceptance_frame_rate_drop или hands_not_visible. Затем рецензент подтверждает или переопределяет вердикт. Коды причин перечислены на странице Принятый час.
Читайте результаты приёмки через MCP-инструменты: get_result_acceptance для одной записи и get_campaign_acceptance_summary для кампании. list_capture_submissions включает машинную сводку приёмки для каждой записи.
Целевые показатели качества. Проект может задавать пороги для метрик качества, например для доли принятых, доли отклонённых и доли проблем. Avala оповещает, когда метрика пересекает свой порог. Читайте их через MCP-инструмент list_quality_targets.
Проверки программы, которые не являются машинными критериями, например калибровка, согласие и синхронизация временных меток, отражаются как причины отклонения в отчёте о покрытии. См. Принятый час.
Чтение и запись меток результата
REST-эндпоинты расположены подhttps://api.avala.ai/api/v1:
Список по набору данных принимает фильтры
outcome, evaluation_membership, source и autonomy_level. Каждый принимает одно значение или список через запятую, и последовательность подходит, если совпадает с любым значением из списка. model_version совпадает с одной точной версией. Неизвестное значение фильтра возвращает 400.
Список последовательностей, GET /datasets/{owner}/{slug}/sequences/, принимает outcome и evaluation_membership в том же виде. Он возвращает последовательности, текущая метка которых подходит под фильтр.
Запись метки
sourceMetadata отправляются в том виде, в каком они записаны. В CLI --hand-actions-file принимает JSON-файл с {"left": [...], "right": [...]}, а --leakage-group KEY=ID можно указывать несколько раз.
Чтение меток
cursor из предыдущей страницы.
Чтение меток через MCP-сервер
MCP-сервер читает метки результата. Записывать их он не может.get_sequence_outcomeпринимаетowner,slugиsequenceUid. Он возвращает текущую метку.list_sequence_outcomesпринимаетownerиslug, фильтрыoutcome,evaluationMembership,source,autonomyLevelиmodelVersion, а такжеlimitиcursor.
detail: "full", чтобы включить подзадачи, действия рук, теги ошибки и восстановления, группы утечки, метаданные источника и автора метки. См. Использование Avala с ИИ, чтобы подключиться.
Экспорт меток результата вместе с LeRobot
Экспортёр LeRobot может записать текущую метку результата каждой последовательности рядом с набором данных. Одна последовательность Avala становится одним эпизодом LeRobot.meta/avala_sequence_outcomes.jsonl: один JSON-объект на строку и одна строка на каждый сохранённый эпизод LeRobot. В собственной таблице эпизодов LeRobot нет места для этих метаданных, поэтому они вынесены в отдельный файл. Каждая строка содержит следующие ключи:
Последовательность без метки получает строку только с
episode_index, avala_sequence_uid и "outcome": null.
Линия сбоев и восстановления
Сбои с восстановлением поставляются отдельной линией: это последовательности с результатомmistake_and_recovery или intervention. Подзадачи и действия рук каждой последовательности отмечают, где происходят сбой и восстановление.
Линия поставляется в релизе отдельным срезом. Вы можете обучать на ней модель, задавать ей вес или исключить её. Вы также можете сами собрать такой же набор с помощью ?outcome=mistake_and_recovery,intervention. Небезопасные последовательности в линию не входят.