Обучение падает на первой испорченной записи и обычно находит её, когда вы уже ушли домой. Проверки, которые стоит сделать заранее, невзрачны и быстры: каждая запись — объект с массивом messages; в каждом сообщении есть роль и содержимое; разговор начинается там, где должен; и — это упускают чаще всего — заканчивается сообщением ассистента, потому что именно этот ход запись и учит. Два пользовательских сообщения подряд тоже отмечаются: обычно это признак того, что две записи слиплись. Рядом с ошибками распределение размеров показывает тот хвост, который не поместится, — до того как он станет причиной остановки.
Возможности
Каждое замечание привязано к строке, откуда оно взялось
Проверяет разбор каждой записи и идёт дальше за теми, что не разобрались
Роли сверяются с известным набором, необычные отмечаются
Ловит запись, не оканчивающуюся сообщением ассистента
Ловит два подряд хода одной стороны
Ловит пустое содержимое: проверку проходит, но ничему не учит
Распределение размеров: медиана, 90-й процентиль и максимум
Настраиваемый ключ messages для форматов с другим названием
Как использовать Проверка датасета
Перетащите датасет .jsonl или вставьте его
Поправьте ключ messages, если формат отличается
Исправьте ошибки, затем посмотрите предупреждения
Сверьте распределение размеров с вашим пределом контекста
Пример
Ввод
line 3: two user messages in a row
Результат
Records: 3 · Errors: 0 · Warnings: 1
Обычно признак того, что две записи случайно слиплись.
Частые ошибки и устранение неполадок
Запись не оканчивается сообщением ассистента. — Такой записи нечему учить: цель — последний ход ассистента. Поэтому это ошибка, а не предупреждение.
Массив messages не найден. — Укажите ключ messages так, как он называется в вашем формате. Conversation и turns оба встречаются часто.
Отмечены два пользовательских сообщения подряд. — Обычно это две случайно склеенные записи. Если сдвоенный ход намеренный, это предупреждение, а не ошибка.
Некоторые записи огромны. — Процентили показывают хвост. Всё, что за пределом контекста, упадёт, и узнать об этом здесь намного дешевле, чем посреди прогона.
Часто задаваемые вопросы
Какой формат ожидается?
Формат чата: по объекту JSON на строку, в каждом массив messages из пар «роль — содержимое». Имя ключа настраивается, поскольку соглашения различаются, но форма внутри везде одна.
Почему запись должна оканчиваться сообщением ассистента?
Потому что именно этот ход запись и учит. Разговор, оканчивающийся сообщением пользователя, содержит вопрос без ответа, и учиться там нечему.
Точны ли счётчики токенов?
Нет, это оценки по символам. Они нужны, чтобы заметить выброс, который не поместится, а для этого точность не требуется: точное число даёт токенизатор поставщика.
Значит ли чистый результат, что данные хороши?
Он значит, что файл корректно оформлен. Учат ли примеры правильному — вопрос о ваших данных, и ни один валидатор на него не отвечает.
Отправляется ли мой датасет?
Нет. Обучающие данные обычно самый чувствительный файл команды, и всё это работает в браузере.