Прежде чем перейти к практике, обсудим, что нам понадобится для работы.

Что, где, откуда?

Первый вопрос, который может возникнуть - на чем писать? На данный момент самым популярным языком в сфере машинного обучения и нейросетей в частности является 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 аккаунт. И никакой предварительной регистрации, никаких долгих настроек.

  1. Удобный доступ к данным на Google-диске.
  2. Независим от платформы: не важно, какая ОС стоит на вашем ноутбуке.
  3. Интуитивно понятный интерфейс.

Какие минусы у Colab-а я заметила:

  1. Горячие клавиши немного отличаются от тех, которые в Jupyter-е. Это не проблема, в большинстве случаев надо просто добавить еще Ctrl+M, но сначала может быть непривычно.
  2. При попытке использования voila (о том, что это такое, будет в одной из следующих статей) у меня возникли проблемы, которые я так и не смогла решить. Кажется, Google Colab не поддерживает voila :( (но я могу ошибаться!)

Несмотря на небольшие недостатки, я предпочитаю пользоваться именно этой платформой.

Paperspace Gradient - платформа, которая предоставляет как платные, так и бесплатные GPU и CPU для машинного обучения.

Как и Colab, Gradient работает с jupyter notebook-ами. Бесплатный сервер предоставляется только на 6 часов, затем надо будет переподключаться. Возможна ситуация, когда все бесплатные машины заняты, и в таком случае придется немного подождать.

Вообще, у меня Gradient очень сильно тормозил, когда я работала на нем, поэтому я предпочитаю Colab. Но у Gradient тоже есть свои преимущества, например:

  1. Один раз установив все библиотеки в проекте, вам больше не придется их переустанавливать.
  2. Платные варианты машин в Gradient-е гарантируют, что обучение вашей модели не прервется за шаг до окончания, в то время как в Colabe сервер предоставляется всегда только на 12 часов.

А что еще?

А в общем-то все. Можно приступать к обучению! Но я хочу еще рассказать вот о чем:
Существуют разные библиотеки для глубокого обучения, одна из самых популярных сейчас - это, наверное, PyTorch. Я уже говорила, что прохожу сейчас курс Practical Deep Learning for Coders от создателей библиотеки fastai, поэтому в моих постах часто будут встречаться примеры с использованием этой библиотеки.

fastai - библиотека, упрощающая жизнь разработчикам в области глубокого обучения. Она предоставляет многие базовые методы и классы, позволяющие значительно сократить объем кода; многие вещи уже заточены под выполнение на GPU; удобная и продуманная визуализация результатов и многое другое, что делает разработку приятнее и проще на всех уровнях разработки.

На самом деле, fast.ai - это не только библиотека. Это сообщество, развивающее область глубокого обучения. Они не только разрабатывают свои библиотеки, но и ведут курсы, пишут книги, проводят научные исследования и публикуют разные интересные материалы. В общем, классные ребята, увлеченные своим делом.

Ну а вот теперь точно всё. Это была статья, в которой я рассказала о приборах и материалах, которые вам понадобятся, если вы решили познакомиться с машинным обучением поближе. Вопросы и замечания приветствуются! До новых встреч!

Фото автора cottonbro: Pexels