Приборы и материалы
Прежде чем перейти к практике, обсудим, что нам понадобится для работы.
Первый вопрос, который может возникнуть - на чем писать? На данный момент самым популярным языком в сфере машинного обучения и нейросетей в частности является Python. У Python-а много достоинств, среди которых довольно простой синтаксис и большое количество всевозможных библиотек и пакетов. Он используется во многих крупных компаниях (Google, Intel, Microsoft и многие другие), а еще частично на нем написаны YouTube, Instagram, Facebook и др.
Определили язык, теперь встает второй вопрос - где писать? Для python существуют различные IDE, например PyCharm или Spyder, но для задач машинного обучения, по моему наблюдению, обычно используется Jupyter Notebook. Jupyter Notebook - часть проекта Jupyter.
Jupyter Project - некоммерческий проект с открытым исходным кодом, выросший из более раннего проекта IPython Project в 2014 году и созданный для поддержки разработок в области data science (науки о данных). Jupyter предоставляет разные штуки, но главное, что нас интересует, это Jupyter Notebook. Jupyter Notebook - веб-приложение с открытым исходным кодом, которое позволяет создавать и делиться документами, содержащими код, изображения, графики и просто текст на естественном языке. А так же делает возможной и комфортной работу с данными, числовыми моделями, статистическими моделями, визуализацией данных, машинным обучением и прочее, и прочее. Так что это очень классная среда разработки, предоставляющая для машинного обучения удобные инструменты. Работа ведется в режиме REPL, что может казаться не очень привычным, но в реальности очень удобным.
Кстати, этот пост тоже написан в jupyter notebook-е)
Между прочим, чтобы если у вас уже установлена Anaconda, то Jupyter Notebook у вас уже есть. В двух словах про Anaconda:
Anaconda — это дистрибутивы Python и R. Он предоставляет все необходимое для решения задач по анализу и обработке данных (с применимостью к Python).
(Определение взято отсюда) Так что вместо отдельной установки Jupyter Notebook и кучи разных библиотек можно просто поставить Anaconda. Кажется, довольно удобно.
Jupyter Notebook установили, готовы обучать нейросеть. Но вот проблема: для обучения нам нужно мощное ГПУ, а где ж его взять? Да и с настройками возиться неохота. Вот и третий вопрос - откуда взять ГПУ?
Здесь есть несколько вариантов. Расскажу про два: Colaboratory(Colab) и Paperspace Gradient.
Google Colab - сервис, позволяющий работать с jupyter notebook-ами и предоставляющий бесплатный доступ к мощному GPU на 12 часов.
За что мне нравится Colab:1. Возможность загружать jupyter notebook-и с диска, с локального компьютера, с GitHub-а и создавать новые.2. Единственное, что нужно для того, чтобы начать работу с Colab-ом - Google аккаунт. И никакой предварительной регистрации, никаких долгих настроек.
- Удобный доступ к данным на Google-диске.
- Независим от платформы: не важно, какая ОС стоит на вашем ноутбуке.
- Интуитивно понятный интерфейс.
Какие минусы у Colab-а я заметила:
- Горячие клавиши немного отличаются от тех, которые в Jupyter-е. Это не проблема, в большинстве случаев надо просто добавить еще Ctrl+M, но сначала может быть непривычно.
- При попытке использования voila (о том, что это такое, будет в одной из следующих статей) у меня возникли проблемы, которые я так и не смогла решить. Кажется, Google Colab не поддерживает voila :( (но я могу ошибаться!)
Несмотря на небольшие недостатки, я предпочитаю пользоваться именно этой платформой.
Paperspace Gradient - платформа, которая предоставляет как платные, так и бесплатные GPU и CPU для машинного обучения.
Как и Colab, Gradient работает с jupyter notebook-ами. Бесплатный сервер предоставляется только на 6 часов, затем надо будет переподключаться. Возможна ситуация, когда все бесплатные машины заняты, и в таком случае придется немного подождать.
Вообще, у меня Gradient очень сильно тормозил, когда я работала на нем, поэтому я предпочитаю Colab. Но у Gradient тоже есть свои преимущества, например:
- Один раз установив все библиотеки в проекте, вам больше не придется их переустанавливать.
- Платные варианты машин в Gradient-е гарантируют, что обучение вашей модели не прервется за шаг до окончания, в то время как в Colabe сервер предоставляется всегда только на 12 часов.
А в общем-то все. Можно приступать к обучению! Но я хочу еще рассказать вот о чем:
Существуют разные библиотеки для глубокого обучения, одна из самых популярных сейчас - это, наверное, PyTorch. Я уже говорила, что прохожу сейчас курс Practical Deep Learning for Coders от создателей библиотеки fastai, поэтому в моих постах часто будут встречаться примеры с использованием этой библиотеки.
fastai - библиотека, упрощающая жизнь разработчикам в области глубокого обучения. Она предоставляет многие базовые методы и классы, позволяющие значительно сократить объем кода; многие вещи уже заточены под выполнение на GPU; удобная и продуманная визуализация результатов и многое другое, что делает разработку приятнее и проще на всех уровнях разработки.
На самом деле, fast.ai - это не только библиотека. Это сообщество, развивающее область глубокого обучения. Они не только разрабатывают свои библиотеки, но и ведут курсы, пишут книги, проводят научные исследования и публикуют разные интересные материалы. В общем, классные ребята, увлеченные своим делом.
Ну а вот теперь точно всё. Это была статья, в которой я рассказала о приборах и материалах, которые вам понадобятся, если вы решили познакомиться с машинным обучением поближе. Вопросы и замечания приветствуются! До новых встреч!
Фото автора cottonbro: Pexels