Обзор практического машинного обучения с помощью Scikit-Learn, Keras и Tensorflow Орельена Жерона

Резюме

Итак, вы воспользовались методами, которые мы изучили в первых 18 главах, и создали уродливую модель машинного обучения, которая изменит мир. Но как вы берете его из модели на своей машине или множестве машин и выпускаете в мир, чтобы другие люди могли его использовать? Итак, в этой главе представлен краткий обзор всего этого. По сути, это учебник по MLops, который сам по себе является целой карьерой. Но в этой главе вы узнаете о локальной, облачной и мобильной разработке, а также о различных архитектурах для оптимизации процесса обучения.

Модели TensorFlow

Сохранение моделей TensorFlow относительно просто с помощью встроенных функций TensorFlow. Самый простой способ сделать это — запустить:

tf.saved_model.save(<model name>, <model path>)

А затем снова открыть в keras через:

model = keras.models.load_model(<path to saved model>)

Теперь, когда ваша модель сохранена с помощью TensorFlow, вы можете запустить ее через контейнер TensorFlow Docker или загрузить в облако, где вы сможете разместить ее без использования локальных ресурсов.

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

GPU и TPU для скорости

GPU и TPU — это процессоры, которые гораздо лучше оптимизированы для обучения моделей машинного обучения, чем CPU. Хотя я не уверен на 100%, как они работают, я знаю, что они распределяют вычисления на более мелкие фрагменты и процессы, чем процессоры (которые могут запускать только один процесс на ядро ​​с типичным максимумом около 16 ядер). Если вы не хотите тратить несколько тысяч долларов в обычное время и гораздо больше во время текущей нехватки чипов, я рекомендую вам использовать Kaggle, Google Colabs или облачного провайдера, такого как Azure, GCP или AWS, чтобы получить доступ к дешевым или бесплатным графические процессоры. Бесплатные сервисы, такие как Kaggle и Google Colabs, будут ограничивать возможности их графических процессоров (и даже TPU в Colabs), но они должны быть в состоянии удержать вас на некоторое время, прежде чем вы захотите инвестировать в свои собственные графические процессоры.

Мобильное машинное обучение и TFLite

Машинное обучение на вашем мобильном или встроенном устройстве? Как это возможно после того, как мы говорили о том, что нам нужно использовать специализированные процессоры только для эффективного обучения и хранения наших данных. Ну, вы можете использовать TFLite. TFLite — это удобная для мобильных устройств и облегченная версия TensorFlow, которая позволит вам развертывать модели на небольших машинах. Для этого TFLite облегчит ваши обычные модели TensorFlow и уменьшит объем вычислений и оперативной памяти, необходимых для запуска вашей модели. TFLite — это отдельная тема, и мне нужно узнать о ней гораздо больше!

Несколько устройств

Итак, теперь у вас есть сложная и трудная для обучения модель глубокого обучения с использованием TensorFlow, которая потребует от вашего ноутбука трех недель для обучения максимальному использованию процессора и графического процессора. Итак, что вам следует делать?
Один из способов решить эту проблему — искать более мощные процессоры, такие как современный графический процессор, а не встроенный (если у вас вообще есть встроенный графический процессор). Как правило, один действительно мощный графический процессор лучше, чем использование двух графических процессоров средней мощности. Или, если это неприемлемый вариант, вы можете обратиться к облаку, чтобы получить вычислительную мощность специально для этого проекта.

Но что, если просто максимизировать работу графического процессора недостаточно? Тогда вам, вероятно, следует обратить внимание на параллельные вычисления либо с несколькими машинами, либо с несколькими графическими процессорами на одной машине. Для этого вам придется реализовать некоторую форму параллелизма моделей или данных, чтобы несколько используемых вами машин хорошо работали друг с другом. Это еще одна тема, по которой вы могли бы (и многие так и сделали) написать целые книги или пройти целые курсы, немного выйдя за рамки этого проекта. Итак, до тех пор, пока это не понадобится, я собираюсь сосредоточиться на имеющихся у меня ресурсах и создании лучших моделей машинного обучения.

* Любая ссылка на графические процессоры в этом разделе может также заменить TPU.

Мои мысли

Эта последняя глава была на самом деле больше в моей рулевой рубке, чем большинство других глав, появившихся на фоне devops. Хотя это было в значительной степени учебником по развертыванию приложений в рабочей среде, я думаю, что это дало хороший общий подход к нескольким методам. Хотя я в основном являюсь пользователем Azure (с небольшим опытом работы с AWS и GCP), я подумал, что было бы неплохо увидеть, каково это — развертывание в GCP, а также некоторые преимущества развертывания и обучения в облаке. Единственное, чего мне хотелось бы, чтобы в этой главе было немного подробнее рассмотрено то, как работают TPU, потому что, хотя я много слышал о них, я на самом деле не знаю, чем они отличаются от процессоров и графических процессоров. Хорошая диаграмма, описывающая разницу между тремя типами процессоров, была бы полезна для моего понимания, но это то, что я изучу самостоятельно. Если вам, как и мне, любопытно, вот несколько начальных ресурсов:

Пост сервера

Кагл Форум

Это была последняя глава «Руководства по машинному обучению», и я искренне рад, что ее закончили. Последние 19 дней временами были немного утомительны, но я счастлив, что прочитал всю книгу и улучшил свои знания в области машинного обучения. Я определенно знаю намного больше, чем когда начинал, и я думаю, что эта книга настроила меня на дальнейшее обучение! Позже я сделаю более подробный обзор (я хочу выходной, ха-ха) и расскажу больше об этой книге. Я еще раз подниму этот вопрос в этом обзоре, но НЕ рекомендую вам делать то, что сделал я с этой книгой. Если вы сильный новичок или средний уровень, как я, я рекомендую вам читать эту книгу медленнее, чем я, и выполнять каждое упражнение по мере чтения. Я считаю, что это будет гораздо более полезной стратегией для вашего долгосрочного обучения.

Спасибо за чтение!

Если у вас есть какие-либо вопросы или отзывы, пожалуйста, свяжитесь со мной в твиттере @wtothdev или оставьте комментарий!

Кроме того, я хотел бы выразить огромную благодарность Орельен Жерон за написание такой прекрасной книги. Вы можете приобрести указанную книгу здесь (не партнерская).

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