Hidden Technical Debt in Machine Learning SystemsSculley et al., [Google], 2015
Несмотря на возраст, статья точно описывает кучу проблем в современных системах. В отличие от обычного софта, когда технический долг весь сидит в коде или документации, в ML есть много альтернативных способов накосячить. Вот некоторые примеры, которые авторы разбирают в статье на основе своего опыта в Google:
1.
Старые гиперпараметры, которые непонятно откуда взялись, и не меняются уже N лет, несмотря на то, что и данные и модель уже сильно другие
1. Частный случай предыдущего пункта —
трешхолды, которые были потюнены лишь один раз во время первичного деплоя. Это может быть особенно опасно, если ваша система принимает важные для бизнеса или безопасности окружающих решения.
1.
Feedback loops — данные для тренировки модели, которые вы коллектите с задеплоеной системы, зависят от модели. Про это нужно помнить и адресовать заранее.
1. Высокоуровневые абстракции над моделями, которые заставляют писать кучу
glue code (бывает так что > 90% всего вашего кода это glue code)
1.
Рipeline jungles, когда никто не понимает data flow и коммуникация между кусками системы превращается в макароны
1. Предыдущие два пункта зачастую появляются из-за того, что код модели написан рисечерами и его абстракции не подходят для реального мира. Чаще всего лучший способ этого избежать — переписать код модели с нуля.
1. Ещё одно следствие — куча
экспериментального кода внутри задеплоеного кода
1. Под конец касаются интересной вещи, которую называют cultural debt. Хорошие ML команды состоят из смеси исследователей и инжереров, которые активно взаимодействуют друг с другом, готовы выкидывать старые куски кода для упрощения системы, обращать столько же внимания на стабильность и мониторинг системы, сколько и на accuracy. Если в команде нету такой культуры, она может быть склонна быстро аккумулировать и преувеличивать существующий техдолг.
Советую почитать оригинальную статью. В ней очень много полезной информации, которую не сжать в пост в телеге.