![image](https://habrastorage.org/getpro/habr/post_images/533/863/efb/533863efbf88a862d1dbff83427adfdb.png)
В начале мая я решил получить сертификат TensorFlow-разработчика. Для этого я разработал программу обучения для совершенствования своих навыков и выполнил задания сертификационного экзамена пару дней назад (3 июня). Оказалось, что я сдал экзамен успешно.
Позвольте мне рассказать вам как я это сделал, и как вам сделать то же самое.
Погодите. Что вообще такое TensorFlow?
TensorFlow — это система численных вычислений с открытым исходным кодом, которая позволяет вам осуществлять предварительную обработку и моделирование данных (находить в них закономерности, как правило, с помощью глубокого обучения), а также разворачивать свои решения для всего мира.
Google использует TensorFlow для поддержки всех своих сервисов машинного обучения. Скорее всего, устройство, на котором вы это читаете, раньше использовало TensorFlow в том или ином виде.
Обычно вы пишете код с использованием TensorFlow на очень понятном Python (именно это требуется для экзамена) или JavaScript (tensorflow.js), и он запускает ряд базовых функций, написанных на C. Эти функции выполняют описанные вами ранее команды (производят множество численных вычислений).
Итак, теперь мы знаем, что такое TensorFlow, но что такое сертификация TensorFlow-разработчика? И почему вас это может заинтересовать?
Что такое сертификация TensorFlow-разработчиков?
Сертификация TensorFlow-разработчиков, как вы могли догадаться, является способом продемонстрировать вашу способность работать с TensorFlow.
В частности, вашу способность использовать TensorFlow (версию для Python) при построении моделей глубокого обучения для ряда различных задач: регрессионного анализа, компьютерного зрения (нахождения паттернов в изображениях), обработки естественного языка (нахождения паттернов в тексте) и прогнозирования временных рядов (прогнозирования будущих тенденций с учетом ряда событий в прошлом).
Зачем вам нужен cертификат TensorFlow-разработчика?
Первой причиной для было веселье. Мне захотелось дать себе небольшой вызов в работе и найти повод прочитать новую книгу, которую я купил (подробнее об этом позже).
Но есть и еще две веские причины:
- Приобрести основополагающие навыки, необходимые для создания приложений, использующих технологии машинного обучения.
- Продемонстрировать свою компетенцию будущему работодателю.
Говоря о будущих работодателях: исходя из данных страницы Hacker News's Who's Hiring (страница, на которой перечислены ежемесячные подборки вакансий разработчиков программного обеспечения), похоже, что TensorFlow опережает другие фреймворки для глубокого обучения.
![image](https://habrastorage.org/getpro/habr/post_images/7af/a95/7b8/7afa957b860834fe6ae0b6abda29d164.png)
Сравнение различных фреймворков для глубокого обучения на основе частоты их упоминания в различных публикациях о работе на странице Hacker News's Who's Hiring. Примечание: Начиная с TensorFlow 2.x, Keras по сути является частью TensorFlow. Примечание 2: В связи с текущими глобальными обстоятельствами, общий уровень найма любых разработчиков программного обеспечения снижается.
Хочу уточнить, что оплаченный сертификат не является гарантией получения работы. Тем не менее, в мире онлайн-обучения, где навыки превращаются в товар, это еще один способ показать, на что вы способны.
Я считаю это приятным дополнением к существующему списку личных проектов, над которыми вы работали — курсы формируют фундаментальные знания, проекты формируют конкретные знания.
Так как же все это делается?
Как подготовиться к экзамену
Когда я решил, что мне это интересно, я посетил сайт программы сертификации и прочитал Справочник по сертификации разработчиков TensorFlow.
Из этих двух ресурсов я построил учебный план.
Учебный план отражает то, что я изучал для формирования навыков, необходимых для сдачи экзамена
Следует отметить, что до того, как я начал готовиться к экзамену, у меня был некоторый практический опыт построения нескольких проектов с TensorFlow.
Опытный TensorFlow-специалист или практикующий специалист по глубокому изучению, скорее всего, сможет пройти следующую учебную программу примерно в том же темпе (всего 3 недели), что и я (возможно, быстрее).
Новичок может потратить столько времени, сколько потребуется. Помните: приобретение любого стоящего навыка требует времени.
Я перечислил сроки, стоимость (в долларах США) и уровень полезности (для сдачи экзамена) для каждого ресурса. Сроки основаны на моем опыте.
Если вы хотите создать учебную программу для себя, я бы порекомендовал что-то вроде перечня, приведенного ниже.
Примечание: Для платных ресурсов были использованы партнерские ссылки. Это не изменит цену ресурса для вас, но если вы приобретете доступ к одному из материалов, я получу часть от этой суммы: я использую эти деньги для создания подобных материалов.
1. Справочник по сертификации разработчиков TensorFlow
Время: 1 час.
Стоимость: Бесплатно.
Уровень полезности: Обязательно.
Этот ресурс должен быть вашей первой остановкой. Он описывает темы, которые будут рассматриваться на экзамене. Прочтите его, а затем прочтите еще раз.
Если вы новичок в TensorFlow и машинном обучении, вы, скорее всего, прочтете его и будете напуганы самыми разными аспектами. Не волнуйтесь. Ресурсы ниже помогут вам с ними ознакомиться.
2. Практическая специализация по TensorFlow на Coursera
Время: от 3 недель (продвинутый пользователь) до 3 месяцев (новичок).
Стоимость: $59 в месяц после 7-дневного бесплатного пробного периода, имеется возможность запросить финансовую поддержку. Если вы не можете получить доступ к Coursera, см. эквивалентную бесплатную версию на YouTube.
Уровень полезности: 10/10.
Это наиболее релевантный ресурс для экзамена (и начала работы с TensorFlow в целом). Внимательный слушатель заметит руководство по сертификации TensorFlow, а контуры этой специализации практически идентичны.
Его преподают Лоренс Морони и Эндрю Нг, два титана TensorFlow и машинного обучения, и если бы мне пришлось выбирать только один ресурс для подготовки к экзамену, то это был бы именно этот курс.
Я по достоинству оценил формат коротких видеороликов и как можно скорее сосредоточился на практических примерах. Многочисленные файлы с кодом в конце каждого раздела будут очень полезны для любого студента, учащегося на практике.
Подсказка для упражнений по программированию: не просто заполняйте пробелы в коде, а пишите все сами.
3. Практическое машинное обучение с помощью Scikit-Learn, Keras и TensorFlow 2-е издание.
Время: от 3 недель (чтение от корки до корки, без упражнений) до 3 месяцев (чтение от корки до корки и выполнение упражнений).
Стоимость: Цена на Amazon варьируется, но я купил бумажную версию за $55. Весь код можно посмотреть бесплатно на GitHub.
Уровень полезности: 7/10 (только потому, что некоторые главы не относятся к экзамену).
Книга объемом более 700 страниц охватывает практически все аспекты компьютерного обучения и, следовательно, некоторые темы, не относящиеся к экзамену. Но она обязательна для прочтения всем, кто заинтересован в том, чтобы заложить прочный фундамент для будущего изучения машинного обучения, а не только для сдачи экзамена.
Если вы новичок в машинном обучении, то, скорее всего, вам будет трудно прочитать эту книгу (в начале пути). Опять же, не волнуйтесь, вам некуда спешить, обучение полезным навыкам требует времени.
Скажем так: если вы хотите получить представление о качестве книги, я прочитал первое издание утром, когда ездил на работу, будучи инженером машинного обучения. И я могу сказать, что чаще всего по ходу рабочего дня мне пригождалось то, что я прочитал в книге.
Второе издание ничем не отличается, за исключением того, что оно было обновлено, чтобы охватить новейшие инструменты и методики, а именно TensorFlow 2.x — на чем и основан экзамен.
Если вам нужны только главы, соответствующие экзамену, вы захотите прочитать следующие:
- Глава 10: Введение в искусственные нейронные сети с помощью Keras
- Глава 11: Обучение глубоких нейронных сетей
- Глава 12: Пользовательские модели и обучение с помощью TensorFlow
- Глава 13: Загрузка и предварительная обработка данных с помощью TensorFlow
- Глава 14: Глубокое компьютерное зрение с использованием сверточных нейронных сетей
- Глава 15: Обработка последовательностей с использованием рекуррентных и сверточных нейронных сетей
- Глава 16: Обработка текста на естественном языке с использованием рекуррентных нейронных сетей и внимания
Но серьезному студенту я бы предложил прочитать всю книгу и выполнить упражнения (может быть, не все, а те, которые больше всего отвечают вашим интересам).
4. Введение в глубокое обучение от MIT
Время: от 3 часов (я смотрел только 3 лекции) до одного дня (1 час на каждую лекцию, плюс по часу на обзор).
Стоимость: Бесплатно.
Уровень полезности: 8/10.
Курс по глубокому обучению мирового уровня от университета мирового уровня. Я не забыл упомянуть, что это бесплатно?
Первые 3 лекции, разделы про глубокое обучение (обзорно), сверточные нейронные сети (обычно используются для компьютерного зрения) и рекуррентные нейронные сети (обычно используются для обработки текста) наиболее важны для экзамена.
Но, опять-таки, для усердного слушателя было бы полезно прохождение всего курса.
Обязательно ознакомьтесь с лабораториями и кодом, которые они предлагают на GitHub, особенно с Введением в TensorFlow. И опять же, я не могу в полной мере обозначить важность самостоятельного написания кода.
5. Начало работы с PyCharm
Время: 3 часа (в зависимости от того, насколько быстр ваш компьютер).
Стоимость: Бесплатно.
Уровень полезности: 10/10 (обязательно использование PyCharm).
Экзамен проводится в PyCharm (инструмент для разработки на Python). До экзамена я никогда не пользовался PyCharm, и перед началом предлагается хотя бы немного с ним ознакомиться.
Чтобы познакомиться с PyCharm, я просмотрел серию вводных роликов на YouTube, и они были весьма прямолинейны: «Вот что делает эта кнопка».
Но основными испытаниями были проверка того, что TensorFlow 2.x работает без проблем, а также возможность работы с глубокими нейронными сетями за разумное время (в моем MacBook Pro нет графического процессора Nvidia).
Для проверки этих аспектов я скопировал следующие два руководства по TensorFlow на свою локальную машину:
Однако, как мы увидим ниже, как только я начал сдавать экзамен, я столкнулся с проблемой.
Дополнительно
Видео от deeplearning.ai на Coursera/YouTube — экзамен подразумевает выполнение задач по программированию (необходимо писать код на Python), но если вы хотите знать, что происходит за кулисами кода, который вы пишете (линейная алгебра, математический анализ), я бы посмотрел эти видео по мере возможности. Например, если вы не знаете, что такое градиентный спуск с мини-пакетами, поищите «deeplearning.ai mini-batch gradient descent»
Документация TensorFlow — если вы собираетесь стать практикующим специалистом TensorFlow, вам необходимо иметь возможность прочитать документацию. Если вы чего-то не понимаете, напишите код и прокомментируйте его самостоятельно.
Программирование с помощью TensorFlow на YouTube (плейлист) — Большая часть специализации по TensorFlow с Coursera в видеороликах на YouTube, преподается тем же самым лектором.
Как я готовился к экзамену
Вооружившись вышеперечисленными ресурсами, я составил план в Notion.
![image](https://habrastorage.org/getpro/habr/post_images/4ba/40f/e8c/4ba40fe8cfe6506eebbf017a48deacb2.gif)
Моя программа подготовки к прохождению сертификации TensorFlow-разработчика в Notion. Для отслеживания того, что нужно сделать, я использовал методику канбан, а также различные ресурсы и заметки. Если вы перейдете по ссылке, вы можете сделать свою собственную копию, нажав на кнопку «duplicate» в правом верхнем углу.
Каждое утро в течение мая я вставал, писал, гулял, 1 час читал книгу «Практическое машинное обучение», 2-3 часа работал с TensorFlow на практике (сначала смотрел лекции, а затем выполнял все упражнения по кодированию в Google Colab), а в конце каждого модуля смотрел соответствующую лекцию «Введение в глубокое обучение» от MIT.
Например, как только я закончил секцию компьютерного зрения в рамках практической специализации по TensorFlow, я посмотрел лекцию по сверточным нейронным сетям (тип алгоритма компьютерного зрения) от MIT.
Такой тройной подход оказался особенно эффективным.
Концепция, изученная в книге, была закреплена примерами кода из специализации Coursera и, в конечном счете, подытожена видеоматериалом от MIT.
Чтобы составить представление о сроках, я начал готовиться к экзамену 11 мая и сдал его 3 июня.
По моим наблюдениям (в Notion) и по моим рукописным закладкам, я в среднем изучал 20 страниц в час и проходил около 1 недели содержания курса за 2-3 часа изучения (без отвлекающих факторов).
Наконец, за пару дней до экзамена я скачал PyCharm и убедился, что несколько примеров кода, которые я изучил, работают на моей локальной машине.
Детали – что происходит во время самого экзамена
Итак, вы закончили обучение? Что теперь?
Ну, давайте начнем с двух важных факторов.
Стоимость экзамена: 100 долларов США (после неудачной попытки вам придется ждать 2 недели, чтобы попробовать еще раз, с каждой неудачной попыткой время ожидания будет увеличиваться).
Время: 5 часов. Если бы не ошибка в начале экзамена, я бы сказал, что я бы спокойно сдал его за 3 часа. Тем не менее, увеличенный лимит времени должен давать вам время, достаточное для тренировки моделей глубокого обучения на компьютере (поэтому убедитесь, что все работает до начала экзамена).
Как устроен экзамен
Я не собираюсь раскрывать здесь многого, потому что это будет нечестно. Все, что я скажу – прочитайте Справочник TensorFlow-разработчика, и вы получите четкое представление об основных разделах экзамена.
Потренируйтесь в каждой из технологий, упомянутых в руководстве (используя ресурсы, упомянутые выше), и вы будете готовы.
Нюансы экзамена
Обучение моделей — Если ваш компьютер не может достаточно быстро обучать модели глубокого обучения (частью критериев оценки является представление обученных моделей), вы можете обучить их в Google Colab с помощью бесплатного облачного графического процессора, а затем загрузить их, поместив в соответствующие каталоги для экзамена и отправить через PyCharm.
Мой сломанный интерпретатор Python — В материале по подготовке к экзамену подчеркивается, что для сдачи экзамена требуется Python 3.7. Когда я начинал, у меня был Python 3.7.3. И по каким-то причинам, несмотря на то, что TensorFlow работал накануне на моей локальной машине с использованием PyCharm, после начала экзамена (который автоматически создает для вас среду TensorFlow), все сломалось.
А именно, каждый раз, когда я прогонял хотя бы одну строку кода TensorFlow, я получал ошибку:
RuntimeError: dictionary changed size during iteration
Сейчас я не уверен, дело в версии TensorFlow, которую установил экзамен (2.0.0), или в конкретной версии Python, которая у меня была (3.7.3).
Тем не менее, после нескольких проклятий и бурного поиска в глубинах старого треда о проблемах на GitHub, я обнаружил странное исправление, которое означало, что мне придется изменить исходный код той версии Python, которую я использовал (в частности, строку 48 lincache.py).
# Previous line 48 of lincache.py
for mod in sys.modules.values():
# Updated line 48 of linecache.py
for mod in list(sys.modules.values()): # added list()
Примечание: это быстрое решение, так как оно было использовано только на время экзамена, поэтому я не уверен, имеет ли оно какую-либо долгосрочную выгоду или приводит ли к каким-либо последствиям.
Во время бешеного поиска я также прочитал, что альтернативой является обновление/переустановка версии TensorFlow, которую вы используете в PyCharm (например, 2.0.0 -> 2.2.x). Я попробовал, и это не сработало, однако, будучи новичком в PyCharm, я допускаю, что ошибся в чем-то как пользователь.
После исправления я смог закончить экзамен без проблем.
Что будет после того, как вы закончите экзамен
Вы получите уведомление по электронной почте, когда/если вы сдадите экзамен. Отзывов не будет, за исключением «Поздравляем, вы сдали» или «К сожалению, на этот раз вы не сдали».
Без каких-либо негативных последствий, во время сдачи экзамена вы будете получать довольно четкие указания – сдадите вы или нет (каждый раз, когда вы представляете модель, она получает отметку).
Если вы все-таки сдадите – поздравляю!
Обязательно заполните форму в электронном письме, чтобы удостовериться, что вы добавлены в сеть сертифицированных TensorFlow-разработчиков.
После того, как вы сдадите экзамен и заполните форму в электронном письме с подтверждением, через пару недель вы сможете получить доступ к Google Developers Certification Network.
![image](https://habrastorage.org/getpro/habr/post_images/cc9/bfd/44e/cc9bfd44ee99151507225cfd48bafab0.png)
Примечание: На момент написания статьи меня там еще не было. Это займет 1-2 недели.
Регистрация означает, что любой, кто ищет опытных TensorFlow-разработчиков, сможет найти вас, основываясь на вашем типе сертификации, опыте и регионе.
Наконец, в течение пары недель вы получите по электронной почте официальный сертификат и бейдж разработчика TensorFlow (я свои еще не получил). Вы сможете добавлять их к проектам, над которыми вы работали.
Вопросы
Могу ли я просто пройти курсы, почитать книгу и самостоятельно попрактиковаться, действительно ли мне нужен сертификат?
Конечно вы можете. В конце концов, вы должны стремиться к получению навыков, а не сертификатов. Иметь сертификаты хорошо, но не обязательно.
Если ты говоришь, что сертификат не обязателен – зачем ты его получил?
Мне нравится иметь вызов и работать для того, чтобы с ним справиться. Назначение даты (например, «Я сдаю экзамен 3 июня») не оставило мне иного выбора, кроме как учиться.
Могу ли я сделать это с помощью бесплатных ресурсов?
Конечно можете. Вы можете пойти и приобрести все необходимые навыки, изучив документацию TensorFlow. На самом деле, когда мне нужно в чем-то попрактиковаться, я копирую примеры из документации (каждую строку кода), отрабатываю понимание каждой строчки, а затем пытаюсь повторить увиденное самостоятельно.
Почему не PyTorch?
Я люблю PyTorch. Но они не предлагают сертификации, а если бы предлагали, я бы, наверное, прошел и ее (ради забавы). К тому же, опытный пользователь обоих фреймворков (PyTorch и TensorFlow) заметит, что последние обновления привели к тому, что эти два фреймворка стали очень похожи. Кроме того, TensorFlow имеет преимущество в корпоративном мире (см. график выше).
Я ничего не знаю о машинном обучении, с чего я могу начать?
Читайте статью «5 Шагов в машинном обучении для начинающих».
Я сдал экзамен и зарегистрировался в Google Developers Certification Network, что делать дальше?
Пора творить! Используйте полученные навыки, чтобы создать то, что вы хотели бы видеть в мире. И не забывайте делиться своими работами, никогда не знаете, кто их увидит.
Что-то не упомянул? Не стесняйтесь оставлять комментарии или задавать вопросы по электронной почте. И я отвечу.
PS, если вы предпочитаете смотреть ролики, я сделал видео-версию этой статьи.
![image](https://habrastorage.org/webt/rd/kl/lr/rdkllrbtrth_kdpceb-vxzrxl1o.jpeg)
Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя платные онлайн-курсы SkillFactory:
- Курс по Machine Learning (12 недель)
- Обучение профессии Data Science с нуля (12 месяцев)
- Профессия аналитика с любым стартовым уровнем (9 месяцев)
- Курс «Python для веб-разработки» (9 месяцев)