TL; DR → Контроль версий для ваших данных не означает дерьмо, если вы не управляете версиями вплоть до того момента, когда вы их используете

Я уже писал о кризисе воспроизводимости машинного обучения. Не вдаваясь в кровавые подробности (просто прочтите вместо этого пост), поле представляет собой идеальный шторм, который возникает из-за объединения огромных - нет, массивных - наборов данных, заданий, выполнение которых требует бесконечного времени, конвейерных рабочих процессов внутри этих заданий, рабочих процессов, выполняемых в параллельный и плохой контроль версий.

«Плохой контроль версий → Это убийца. Хотя у вас может быть (возможно! Признайтесь, у вас нет!) Есть контроль версий для ваших индивидуальных моделей и наборов данных, но в конечном итоге вы неизбежно не выполняете управление версиями все ваши настройки на лету. В конце концов, проще просто настроить некоторые данные на серверах, чем заново копировать все ваши активы. Или просто быстрее создать кучу заданий в цикле со слегка измененными параметрами, чтобы увидеть, какой будет эффект.

Давайте предположим, что вы фактически все версируете - как и мы. Дело в том, даже если вы проверяете все версии, вы все равно можете испортить!

Недавно в большом массиве данных я гонялся за призраками, и я до сих пор злюсь на себя из-за этого. Рассматриваемый набор данных представлял собой общедоступную информацию о собственности в США, которая помимо обычных вещей, таких как изображения и тому подобное, включала в себя положительно огромный файл, содержащий имена, адреса и записи транзакций (дату продажи и цену) для каждое свойство. Хороший материал и полезен для всевозможных проектов глубокого обучения. Например

  • Тренируйтесь по случайному подмножеству объектов недвижимости в Коннектикуте и сравнивайте результаты с другими объектами в том же штате. (Конечно, используя ГПСЧ для выбора «случайного» подмножества, чтобы вы могли воспроизвести то же подмножество 😜)
  • Тренируйтесь по сравнению с недвижимостью в Коннектикуте и сравните с недвижимостью в Техасе. (Используйте только данные Коннектикута и Техаса)
  • Предскажите, будет ли недвижимость выставлена ​​на продажу, на основе оценок других недвижимости в том же районе. (Используйте идентификаторы и даты транзакций в качестве целей прогноза)

Это довольно простой материал. И все же, все же, мы упорно натыкались на Барьер воспроизводимости. Модели, которые хорошо работали для меня, повсюду использовали для моих коллег, и наоборот.
Мы прошли обычную процедуру - убедитесь, что мы используем одни и те же версии наборов данных, одни и те же начальные числа ГПСЧ, и т. д. и после множества ненужных мучений и страданий выяснили, что проблема была в Excel.

Excel?
Да, Excel. Видите ли, вышеупомянутый огромный файл на самом деле был не из тех вещей, с которыми можно возиться в vi. Итак, при тестировании наших моделей мы сравнивали результаты с тем, что мы видели в Excel, и это было даже не близко 😖.
Пока мы не поняли, что Excel, к счастью, отформатирует ваши даты за вас. И когда это произойдет, он переключит его на ваш язык. Например, когда вы увидите 3/8/1995, это будет 8 марта? Или 3 августа? (Наличие многонациональной команды действительно здесь не помогает…)

Вот и все. Только одна маленькая деталь - где Excel услужливо автоматически отформатировал наши даты за нас, успешно потратив около недели на отладку. И да, это была полностью наша вина.

Смысл всего этого в том, что этот шаг - открытие ваших наборов данных в Excel - такое поведение по умолчанию, что мы даже не задумываемся об этом. А пока Excel с радостью может делать следующее:

  1. Форматирование данных. И дело не только в свиданиях. Валюты, форматирование чисел, о, список можно продолжить
  2. Преобразование данных. Вы знаете, когда Excel решает, что это дата, и внезапно 3.2 становится 2 марта ?
  3. Кодирование данных. В каком наборе символов по умолчанию хранятся ваши данные? UTF-8? UTF-16? Excel обычно незаметно преобразует это в фоновом режиме. Ура!

Если вы не обращаете внимания, это как раз проблема, которая вызывает кошмар воспроизводимости, потому что это происходит после извлечения данных из системы управления версиями. И да, если вы обрабатываете данные в Excel и возвращаете их обратно, теперь у вас есть другие люди, пытающиеся выяснить, как это работает (например, у них другие системные настройки по умолчанию, в результате чего их шаг «Excel» дают разные результаты!)

Так что да, будьте осторожны. Будьте очень-очень осторожны. В общем, воспроизводимость - это достаточно сложно - не усложняйте! Убедитесь, что ваши данные имеют версии прямо на момент их использования.

(Эта статья также есть в моем блоге)