Глава 12. Тестирование, оптимизация и развертывание моделей
477
Эта глава посвящена практической стороне применения TensorFlow.js для ма
шинного обучения как части общего стека ПО. В разделе 12.1 мы обсудим жизненно
важный, хотя часто игнорируемый вопрос тестирования и мониторинга кода и мо
делей машинного обучения. В разделе 12.2 приведены утилиты и уловки для сниже
ния размера обученных моделей и объема потребляемых ими ресурсов, ускорения
их скачивания и выполнения, критически важных для развертывания моделей на
стороне как клиента, так и сервера. В завершающем разделе мы пройдемся по раз
личным средам, в которых можно развернуть созданные с помощью TensorFlow.js
модели, и обсудим в ходе этого характерные преимущества, ограничения и стратегии
каждого из вариантов развертывания.
К концу данной главы вы познакомитесь с рекомендуемыми практиками тестиро
вания, оптимизации и развертывания моделей глубокого обучения в TensorFlow.js.
12.1. Тестирование моделей TensorFlow.js
До сих пор мы говорили о проектировании, создании и обучении моделей МО.
Теперь же мы собираемся заняться некоторыми вопросами, возникающими при раз
вертывании уже обученных моделей, начиная с тестирования — как кода машинного
обучения, так и сопутствующего ему кода, не относящегося к машинному обучению.
Основные проблемы, с которыми вы столкнетесь, если захотите охватить модель
и процесс ее обучения тестами, — размер модели, время обучения и недетерминиро
ванное поведение во время обучения (например, инициализация весовых коэффици
ентов случайными значениями и некоторые операции нейронных сетей наподобие
дропаута). По мере перехода от отдельной модели к полноценному приложению
вы также столкнетесь с разнообразными асимметриями и расхождениями ветвей
кода для обучения и выполнения вывода, проблемами контроля версий моделей
и расхождениями в данных для разных аудиторий пользователей. Вам предстоит
увидеть, что для общей надежности системы машинного обучения и уверенности
в ней тестирование должно сопровождаться продуманным мониторингом.
Один из ключевых вопросов: «Как происходит управление версиями вашей мо
дели?» В большинстве случаев модель настраивается и обучается до тех пор, пока
не будет достигнута удовлетворительная степень безошибочности на проверочном
наборе данных, после чего никакой дальнейшей подстройки не требует. В ходе
обычного процесса создания модели она не пересоздается и не обучается заново.
Вместо этого можно внести топологию и усвоенные весовые коэффициенты моде
ли в систему контроля версий в виде скорее большого двоичного объекта (BLOB),
а не артефакта текста/кода. Изменение окружающего модель кода не должно при
водить к изменению номера версии модели. Аналогично обучение модели заново
и внесение ее в репозиторий не должно требовать изменения исходного кода, не от
носящегося к модели.
Какие аспекты системы машинного обучения необходимо охватить тестами?
По нашему мнению, ответ: все. Рисунок 12.1 поясняет почему. Типовая система,
простирающаяся от входных данных до готовой к развертыванию обученной модели,
478
Do'stlaringiz bilan baham: |