Сегодня наш собеседник - Хамель Хусейн. Хамель - штатный инженер по машинному обучению в GitHub, создающий системы и проводящий исследования, которые позволяют использовать код обучения представлению, проблемы GitHub и его пользователей. Он руководил проектом CodeSearchNet, который позволяет пользователям искать кодовые базы семантически.

Hamel также проявляет большой интерес к объединению практик DevOps для создания продуктов машинного обучения, и некоторые направления в этом направлении доступны здесь. Он один из первых, кто продемонстрировал использование глубокого обучения с данными GitHub и создал решения с открытым исходным кодом, такие как обобщение проблем GitHub с использованием последовательностей для моделей последовательности (это мой абсолютный фаворит), выполнение операций машинного обучения с помощью GitHub Actions и Kubeflow и так далее.

Все вышеперечисленные решения с открытым исходным кодом (и другие) доступны здесь: http://hamel.io/. Если вы хотите узнать больше о Hamel, обязательно проверьте упомянутый сайт.

Интервью с Хамелем Хусейном, штатным инженером по машинному обучению в GitHub

Саяк: Привет, Хамель! Спасибо за интервью. Рад видеть вас здесь сегодня.

Хамель: Спасибо, рада быть с вами!

Саяк: Может быть, вы могли бы начать с того, чтобы представиться - какова ваша нынешняя работа и каковы ваши обязанности там?

Хэмел: я инженер по машинному обучению в GitHub. Я начал работать над информационными продуктами, основанными на НЛП, и совсем недавно над поиском семантического кода. В настоящее время я работаю над созданием инструментов с открытым исходным кодом для специалистов по данным, использующих GitHub, таких как CI / CD для машинного обучения и fastpages.

Саяк: Ого! Поскольку системы машинного обучения сильно отличаются от традиционных программных систем, я уверен, что это будет очень полезно. Вы потратили огромное количество времени на аналитику и прогнозное моделирование (›15 лет). Мне любопытно узнать, как вы заинтересовались наукой о данных и машинным обучением?

Хэмел: Я начинал как аналитик, который занимался составлением отчетов, написанием множества SQL-запросов, созданием информационных панелей и так далее. Это вызвало у меня интерес и я начал работать с данными еще больше, и я пошел по пути машинного обучения. У меня также есть формальная академическая подготовка по машинному обучению, однако я бы сказал, что я узнал большую часть того, что знаю, благодаря опыту работы.

Саяк: Спасибо, что поделились этим, Хэмел. Если бы вы делали «Машинное обучение тогда и Машинное обучение сейчас», каковы были бы ваши основные указатели?

Хэмел: Самым большим изменением со временем в машинном обучении стало появление различных фреймворков и инструментов. Я думаю, что важно продолжать учиться каждый день и пробовать что-то новое. Может возникнуть соблазн взять то, что вы знаете, и использовать это в течение 5 лет, не изучая ничего нового. Однако для изучения нового могут потребоваться значительные усилия, я бы посоветовал людям следовать своим интересам и уделять первоочередное внимание изучению чего-то нового каждый день, если это возможно.

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

Саяк: Верно! Я пытаюсь сочетать и то, и другое - узнавать новое и в то же время расширять то, что уже знаю. Когда вы только начинали, с какими проблемами вы столкнулись? Как вы их преодолели?

Хэмель: Когда я попытался превратиться из аналитика в специалиста по анализу данных, который строил прогнозные модели, было трудно перейти к этой области, даже тогда, в 2014 году. Я могу только представить что сейчас гораздо более конкурентоспособно для людей, пытающихся выйти на рынок. Я взял на себя нетрадиционную роль инженера по продажам в DataRobot, где я многому научился и постепенно в конце концов перешел на роль Data Science. Я думаю, что многие люди могут добиться успеха, выбрав подход к поиску смежных или нетрадиционных ролей, которые, как представляется, дают много возможностей применить или изучить Data Science в качестве отправной точки, и не слишком зацикливаться по названиям для начала. Я прочитал доклад о некоторых моих советах для начинающих специалистов по данным, которые немного устарели, но все еще актуальны сегодня.

Я думаю, что многие люди могут добиться успеха, выбрав подход к поиску смежных или нетрадиционных ролей, которые, как представляется, дают много возможностей применить или изучить Data Science в качестве отправной точки, и не слишком зацикливаться по названиям для начала.

Саяк: Это действительно необычно и имеет смысл. Вы работали в Airbnb, DataRobot и других компаниях в аналогичных областях. Если бы вы вспомнили один или два сложных проекта, что это были бы?

Хэмел: Один из моих самых запоминающихся проектов машинного обучения - построение модели общей ценности для Airbnb. Модель не была такой сложной, но запустить ее в производство было невероятно сложно из-за отсутствия инфраструктуры и инструментов машинного обучения. У нас была команда действительно талантливых людей, которые потратили ~ 6 месяцев только на запуск модели в производство, что требовало сотрудничества между инженерами по данным, инженерами DevOps, инженерами по программному обеспечению и специалистами по данным. Этот проект стал толчком для создания инфраструктуры машинного обучения, которая в конечном итоге материализовалась в BigHead - комплексную платформу машинного обучения Airbnb. С тех пор меня привлекло создание инструментов и инфраструктуры для специалистов по данным, так как я считаю, что это область, которая имеет огромное влияние. Кроме того, создание инструментов и платформ для специалистов по анализу данных - это новое поле, где все еще есть много низко висящих плодов, в которые люди могут добавить огромную ценность.

С тех пор меня привлекло создание инструментов и инфраструктуры для специалистов по данным, так как я считаю, что это область, которая имеет огромное влияние. Кроме того, создание инструментов и платформ для специалистов по анализу данных - это новое поле, где все еще есть много низко висящих плодов, в которые люди могут добавить огромную ценность.

Саяк: Это было определенно очень проницательно. Я никогда не думал об инструментах для специалистов по анализу данных с этой точки зрения. У вас есть умение сочетать DevOps в системах машинного обучения, но когда младший инженер по машинному обучению начинает подходить к этому, это может показаться очень пугающим. Хотели бы вы поделиться своими центами в этом отношении?

Хэмель: Я думаю, что когда вы сталкиваетесь с чем-то сложным или повторяющимся в своем рабочем процессе, важно сделать шаг назад и подумать о способах автоматизации этого. Кроме того, если вы можете создать инструменты с открытым исходным кодом, которые автоматизируют ненужный труд в рабочем процессе машинного обучения, и хорошо задокументировать их, другие, вероятно, тоже сочтут это полезным. Результатом выполнения этой работы является то, что вы станете лучшим инженером-программистом, улучшите свои навыки и сделаете вас очень ценным для вашей организации. Иногда даже обычная автоматизация, не имеющая ничего общего с машинным обучением, может быть действительно полезной. Например, я обнаружил, что писать сообщения в блоге в Jupyter Notebooks было чрезвычайно болезненно - поэтому я создал быстрые страницы, хотя меня не интересовала веб-разработка. В процессе этого я изучил ряд полезных смежных навыков, которые помогут мне в дальнейшем.

Кроме того, если вы можете создать инструменты с открытым исходным кодом, которые автоматизируют ненужный труд в рабочем процессе машинного обучения, и хорошо задокументировать их, другие, вероятно, тоже сочтут это полезным. Результатом выполнения этой работы является то, что вы станете лучшим инженером-программистом, улучшите свои навыки и сделаете вас очень ценным для вашей организации.

Саяк: Я согласен, и в ближайшее время я обязательно попробую использовать fastpages для своих блогов. Такие области, как машинное обучение, быстро развиваются. Как вам удается отслеживать последние важные события?

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

Саяк: Я определенно могу относиться к этой философии. Будучи практикующим, я часто сталкиваюсь с проблемой изучения новой концепции. Вы бы хотели поделиться своим подходом к этому процессу?

Хэмел: Мне очень нравится подход сверху вниз, поддерживаемый fast.ai при изучении новых концепций. Мне нравится сразу переходить к делающей части, не понимая всех основ, а затем медленно пытаться понять, как работают разные части.

Саяк: Понятно. В большинстве случаев я тоже использую подход сверху вниз, и да, fast.ai был главным инструментом, который заставил меня сделать это. Пока что меня это не подвело. Типы проектов, в которых вы использовали Deep Learning, настолько уникальны и впечатляют. Часто формулировка задачи, дружественной к глубокому обучению, сама по себе является сложной задачей. Как вы подойдете к этому процессу?

Хэмел: Я думаю, что важно всегда помнить о конечной цели, знать ограничения своего подхода и уметь ее сформулировать. Я думаю, что распространенная ловушка, в которую попадают люди, - это позволить методам диктовать проект, а не работать в обратном направлении от проблемы. Это может означать, что вам не имеет смысла пробовать новую причудливую технику, которой вы только что научились, и это нормально.

Я думаю, что распространенная ловушка, в которую попадают люди, - это позволить методам диктовать проект, а не работать в обратном направлении от проблемы. Это может означать, что вам не имеет смысла пробовать новую причудливую технику, которой вы только что научились, и это нормально.

Саяк: Я думаю, это каноническая истина. Есть какие-нибудь советы новичкам?

Хэмел: Я считаю, что важно вести блог о том, что вы узнаете, и делиться своими знаниями. Если вы не пишете об этом, поделитесь им как проектом с открытым исходным кодом, расскажите о нем и т. д., как будто этого никогда не было. Я вижу, что это ошибка номер один, которую делают новички. В процессе изучения чего-либо в первый раз вы обнаружите вещи, которые, казалось бы, нигде не объясняются, что вам придется изучать самостоятельно или которые не объясняются должным образом. Это ваша возможность проявить себя и поделиться знаниями с миром с точки зрения, которая может быть действительно ценной. Например, мой первый блог был на тему Как использовать Docker для анализа данных. Несмотря на то, что в то время существовало множество документации, я обнаружил, что все это действительно сбивает с толку или слишком многословно для того, что мне нужно как специалисту по данным. Другие люди, казалось, сочли это ценным, так как статью просмотрели более 76000 раз, что меня удивило. Урок не в том, чтобы недооценивать потенциальное влияние обмена знаниями. Это отличная статья, в которой более подробно освещаются преимущества ведения блога.

Я считаю, что важно вести блог о том, что вы узнаете, и делиться своими знаниями. Если вы не пишете об этом, поделитесь им как проектом с открытым исходным кодом, расскажите о нем и т. д., как будто этого никогда не было.

Саяк: Эффективность ведения блога, вероятно, необъяснима, и я абсолютно верю в философию «обучения науке о данных, чтобы лучше изучить ее». Большое спасибо, Хэмел, за это интервью и за то, что поделились своими ценными идеями. Я надеюсь, что они будут очень полезны сообществу.

Хамель: Спасибо, Саяк.

Надеюсь, вам понравилось читать это интервью. Следите за этим местом для следующего, и я надеюсь увидеть вас в ближайшее время. Здесь где можно найти все интервью, сделанные на данный момент.

Если вы хотите узнать обо мне больше, загляните на мой сайт.