GPU для исследований в ML · Криптооплата без KYC
IteraGPU
Метод · Трассируемость экспериментов

Найти доказательство за каждым результатом.

ML-эксперимент является трассируемым, когда вы можете связать вывод с запусками, данными и файлами, которые его обосновывают. Присвойте идентификатор каждой попытке, сохраняйте фактический манифест и связывайте метрики с оценёнными предсказаниями. Цель не в том, чтобы накапливать журналы: другое прочтение дела должно позволить восстановить, что было сделано, что не удалось и почему был выбран тот или иной вариант.

01 /

Различать кампанию, конфигурацию и запуск

Кампания несёт вопрос, например сравнить базовый вариант с адаптацией. Конфигурация описывает технические решения. Запуск — это попытка выполнения этой конфигурации, с зерном, началом, концом и статусом. Таким образом, две одинаковые попытки сохраняют два идентификатора, даже если вторая заменяет прерванную попытку.

Добавьте идентификатор оценки, когда один и тот же артефакт оценивается на нескольких наборах или с новой метрикой. Это позволяет не путать новую модель с новым прочтением существующей модели. Свяжите попытку возобновления с той, что ей предшествовала, и с загруженным checkpoint.

MLflow также организует отслеживание вокруг запусков, параметров, метрик и артефактов. Это различие полезно даже в простой папке с файлами. Вы можете применить его с вашим привычным инструментом; для начала не требуется никакая特定ная платформа отслеживания.

Технические источники: MLflow — запуски, параметры, метрики и артефакты

02 /

Записывать фактически выполненный манифест

Сохраняйте разрешённые параметры после применения значений по умолчанию и аргументов запуска. Исходный файл конфигурации может опускать batch по умолчанию или опцию, изменённую во время выполнения. Записывайте то, что фактически использовалось, вместе с копией кода или неизменяемой ревизией и состоянием несохранённых изменений.

Манифест также связывает версии модели и tokenizer, программное окружение, фактически использованный GPU, точность, данные, seeds и определение метрик. Он описывает попытку, не превращаясь в руководство по установке. Указывайте единицы измерения: секунды, байты, tokens, баллы или доля от 0 до 1 в зависимости от измерения.

При запуске статус — «выполняется»; в конце он становится «завершён», «не удался» или «прерван» в зависимости от того, что вы установили. Не дополняйте задним числом забытую версию текущей установленной. Отмечайте неизвестную информацию и ограничивайте вывод, который от неё зависит.

Минимальный манифест пригодной к использованию попытки
БлокЭлементы для сохраненияРешаемый вопрос
Идентичностьcampaign_id, config_id, run_id, возможный parent_run_idКакая попытка даёт этот результат?
Код и модельТочные ревизии, локальные изменения, базовая модель и tokenizerКакое вычисление фактически было запущено?
ДанныеВерсия, split, предобработка, идентификаторы и релевантный порядокНа каких входах?
ПараметрыФактические значения, зёрна и единицы измеренияС какими настройками?
ОценкаОцениваемый артефакт, метрика/версия, порог и популяцияЧто означает оценка?
ЗакрытиеСтатус, ошибка, созданные файлы и решениеПригодна ли попытка к использованию?
03 /

Идентифицировать данные за пределами имени папки

Путь вроде donnees/final не обозначает стабильную версию. Сохраняйте инвентарь файлов или примеров, splits и процедуру преобразования. Если вы исправляете метки или фильтруете строки, создайте новую версию и сохраните связь с предыдущей. Старая оценка должна по-прежнему указывать на свои старые данные.

Hugging Face Datasets сопоставляет fingerprints с состоянием набора и его преобразованиями для управления кэшем. Этот механизм полезен, но нужно также сохранять происхождение данных и предобработку. В частности, нехешируемое преобразование может привести к случайному fingerprint: идентификатор кэша сам по себе не заменяет ваше досье о происхождении.

Для зафиксированных артефактов добавляйте размер и отпечаток файла. Дайджест SHA-256, вычисленный до и после копирования, позволяет проверить, что байты соответствуют сохранённому эталону. Он не доказывает ни качество меток, ни права на использование, ни отсутствие утечки между splits.

Технические источники: Hugging Face Datasets — fingerprints и преобразования · Python 3.14 — отпечатки файлов с помощью hashlib

04 /

Связывать метрики, предсказания и артефакты

Строка метрики должна идентифицировать run, оцениваемый артефакт, набор для оценки, версию метрики и её периметр. Укажите, относится ли значение к промежуточному checkpoint, финальной модели или подгруппе. Кривой недостаточно, если уже непонятно, какой файл соответствует выбранной точке.

Сохраняйте предсказания вместе с их идентификатором входа, статусом и информацией, необходимой для оценки. Ожидаемые эталоны могут оставаться в отдельном версионируемом файле. Для структурированного вывода различайте сырой результат, разобранный результат и вердикт: исправление парсинга не должно перезаписывать исходный вывод.

MLflow позволяет связывать метрики с моделями и данными. При работе с файлами применяйте тот же принцип через явные идентификаторы. Ведите читаемый инвентарь артефактов: веса или адаптер, параметры генерации, выводы, отчёт об оценке и заметку о решении. Не предполагайте, что скриншот заменяет эти файлы.

Технические источники: MLflow — связываем метрики, модели и наборы данных

05 /

Пример: шесть runs и дубликат, скрывающий пробел

Рассмотрим пример классификации с двумя конфигурациями и тремя зёрнами. Он даёт шесть запланированных runs. Каждый должен предсказать одни и те же 300 идентификаторов для оценки: полный набор ожидает, таким образом, 6 × 300 = 1 800 уникальных пар (run_id, input_id). Этот расчёт описывает ожидаемый инвентарь, а не реально выполненный эксперимент.

Предположим, что файл содержит 300 строк, но идентификатор doc-042 присутствует дважды, а doc-117 отсутствует. Общее число строк выглядит правильным; однако уникальных идентификаторов всего 299. Этот run не проходит проверку покрытия, пока аномалия не будет объяснена и исправлена.

Если затем каждый run оценивается на полном корпусе и на его подгруппе длинных текстов, вы получаете двенадцать строк метрики для данной метрики. Это по-прежнему шесть runs, а не двенадцать независимых обучений. Ключ оценки должен включать периметр, чтобы сохранить это различие.

Иллюстративный пример проверки инвентаря — числа рассчитаны, а не наблюдались
ПроверкаОжидаетсяИллюстративная аномалия
Runs2 конфигурации × 3 зерна = 6При повторном запуске присваивается новый идентификатор
Предсказания на runОжидается 300 уникальных ID300 строк, но только 299 уникальных ID
Пары run/вход6 × 300 = 1 800Только общий подсчёт не выявляет все дубликаты
Оценки6 runs × 2 периметра = 12Двенадцать оценок не создают двенадцать runs
06 /

Закрыть дело читаемым решением

Прежде чем объявить run завершённым, проверьте наличие и открытие файлов, соответствие идентификаторов, пересчитываемость метрик и статус каждой ошибки. Технически завершённая попытка может остаться отклонённой из-за недостаточного качества. Держите эти два состояния раздельно.

Заметка о решении объединяет вопрос, сравниваемые варианты, заявленный критерий, принятые результаты и причины исключения. Указывайте run_id и пути к артефактам, а не «последняя модель». Добавьте ограничения: мало повторов, недостаточная подгруппа, не найденная версия или ставшее невозможным сравнение.

Последующее исправление должно оставить след: новая оценка, новый отчёт и причина изменения. Сохраните прежний вывод как идентифицированную историческую версию, не позволяя ему выглядеть как текущее решение. Наконец, проверьте, что экспортированная копия открывается из своей папки назначения.

07 /

Избегать бесполезного сбора и обещаний воспроизведения

Собирайте поля, необходимые для доказательства, а не все переменные окружения и не историю терминала. Конфигурация или URL может содержать токен; подготовьте версию для передачи без секретов и храните данные, которые должны оставаться приватными, в разрешённом для них месте. Техническим идентификаторам испытаний не нужно включать имя человека.

Полный набор повышает возможность повторить и понять эксперимент. Он не гарантирует числового равенства между платформами или версиями: PyTorch документирует эти ограничения воспроизводимости. Различайте восстановление протокола, повторную загрузку артефакта и точное воспроизведение чисел.

Блокнот IteraGPU может хранить ваши цели, параметры и решения вместе с полезными ссылками. Он не запускает runs и не собирает автоматически файлы или телеметрию. Используйте его как указатель ваших рассуждений, а набор артефактов держите в собственных резервных копиях.

Технические источники: PyTorch 2.14 — границы воспроизводимости между средами

Практические вопросы

Достаточно ли Git-коммита, чтобы восстановить эксперимент?

Коммит идентифицирует версию кода, но не обязательно данные, веса, фактические параметры или незафиксированные изменения. Свяжите его с манифестом и полученными артефактами. Без этих связей два запуска одного коммита могут соответствовать разным экспериментам.

Нужно ли сохранять все предсказания?

Сохраняйте выходные данные, необходимые для проверки выводов и пересчёта оценки, в пределах ваших прав и ограничений по хранению. Для ограниченного корпуса сравнения идентификаторы и полные предсказания делают ошибки проверяемыми. Один лишь агрегированный показатель обычно не позволяет найти пропущенные примеры.

Должен ли перезапуск использовать тот же run_id?

Предлагаемая схема присваивает новый идентификатор каждой попытке и связывает перезапуск с предыдущим запуском и загруженным checkpoint. Вы можете объединить эти попытки в один логический эксперимент. Такое разделение делает видимыми прерывание, затраты и файлы, фактически созданные на каждом этапе.