chatGPT почти устроился ко мне ML инженером

 Публичный пост
31 января 2023  6799

Понятно, что все уже наелись темой chatGPT (уже и Вастрик про это написал), но эту историю я придержал, и хочется все же поделиться. Только что нанял себе Machine Learning инженера, при отборе я давал кандидатам домашнее задание. Давал. Пока не поигрался с chatGPT и не понял, что она может неплохо сделать ~90% всего задания.

Тут можно отвлечься и защитить непопулярную точку зрения: я люблю давать домашние задания по нескольким причинам, одна из которых заключается в том, что это хороший показатель для оценки способности кандидата писать код и презентовать результаты. Кто-то скажет, что такие задания заставляют кандидатов тратить свое свободное время на задачи, связанные с работой. Справедливо, но я сполна оплачиваю их время, оставляя письменный отзыв о работе каждого кандидата (включая код). Мне также нравится (нравилось) это конкретное домашнее задание, которое я даю, так как оно основано на моем реальном командном пет-проджекте: анализе тональности криптоновостей (рассказывал о нем на Хабре).

Итак, в те первые дни, когда мальчики не спали, а играли с chatGPT, я заметил, что она (он? или оно?) неплохо справляется с заданиями из моего курса машинного обучения. В частности, для одного из заданий mlcourse.ai chatGPT написала отличную рабочую реализацию стохастического градиентного регрессора, а также объяснила, как использовать написанный Python-класс.

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

Естественно, я решил проверить, насколько хорошо chatGPT справится с домашним заданием на позицию MLE.

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

На выходе – фрагменты кода для обучения и валидации модели, скраппинга веб-сайта с новостями о крипте и получения прогнозов модели, а также код для Flask API endpoint с инференсом модели. Все фрагменты сопровождаются разумными описаниями на английском языке (вот с этим кожаные мешки точно плохо справляются). Что особенно порадовало: в описании задачи (на английском) я дал две строчки кода для чтения данных (на Python), модель поняла и скопировала именно эти две строчки.

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

Сделать Docker образ? Да без б!

Затем я слёзно попросил структурировать проект получше

«Каким будет Readme файл?» — и вот он, понятный Readme со всеми инструкциями, необходимыми для запуска API. На самом деле это лучше, чем примерно 70% Readme, которые я видел, когда нанимал MLE.

chatGPT понимает контекст, держит сгенерированный код в «памяти» и может его отлаживать! Та ошибка с пропущенным представлением текста (когда пытались обучить логистическую регрессию на сырых текстах) была исправлена самой chatGPT.

Еще пример:

В итоге у меня получилось все завести, после того, как поправил пару скучных мелочей типа отсутствия прав на установку пакетов в Docker-контейнере, отсутствия команды app.run() в коде приложения Flask и т.д.

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

Конечно, кто-то скажет, что chatCPT вообще тупая, она даже квадратное уравнение не может решить, а в случае с этим домашним заданием она просто воспроизвела увиденное на GitHub (как будто это не чудо само по себе!). Но так ли уж это отличается от того, как человек подошел бы к заданию?

ML инженера я нанял, задание это больше давать не буду. Хороший вопрос, как нанимать инженера в следующий раз.

В потрясающее время живем!

пс. пост на английском в блоге "New Yorko Times" и заметка на русском в одноименном телеграм-канале.

Связанные посты
42 комментария 👇
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

😱 Комментарий удален модератором...

  Развернуть 1 комментарий

@Kroid, да польется срач про online coding vs. take-home!

  Развернуть 1 комментарий
Евгений Хазиахметов Застройщик конца хребта 3 февраля 2023

По приколу попросил написать на PHP обработку строки и выдергивания оттуда токенов.

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

тогда эта хитрожопая сущность взяла и предложила из php дергать жаву и вызывать нейроночки там

По ходу, она умнее меня

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

@yorko
Спасибо тебе, что когда-то обучил меня и я устроился ML инженером!

Поверь, я могу больше, чем chatGPT, still)

  Развернуть 1 комментарий
Максим Артемьев Основательный нажиматель на кнопки 31 января 2023

Справедливо, но я сполна оплачиваю их время, оставляя письменный отзыв о работе каждого кандидата

А что ты имеешь в виду под этом?

  Развернуть 1 комментарий

@mrartemev, кандидат потратил время, делая задание. Я потратил время на проверку и обратную связь.

  Развернуть 1 комментарий

@yorko, твое время тебе оплатила компания в деньгах, а вот ценность фидбека для кандидата какая-то абстрактная:)

Слушай, а у тебя есть статистика какой процент людей отваливается когда ты даешь им take-home задачку?

  Развернуть 1 комментарий

@yorko, я понимаю, что пост не совсем про это, но я обычно могу себе позволить сделать тестовое задание только если это единственная компания, куда я собеседуюсь.
В остальных случаях я скорее всего забью на интервью. Не потому что принципиально заигнорю, а просто тупо не хватит времени в разумные сроки все эти тестовые задания переделывать.

  Развернуть 1 комментарий

@mrartemev, то есть? Можно меня даже за скобки вынести. Кандидат потратил время, чтоб устроиться в компанию. Компания ему отплатила тем, что дала фидбек, который, как правило очень полезен, если это честная работа. Я вот, например, потратил немало времени на take-home для HuggingFace, да, не прошел, но зато получил очень крутой фидбек.

Да, самые борзые кандидаты еще заставят работодателя оплатить время потраченное на take-home, но это не всегда возможно юридически, да и спорно: что если кандидат заявил 8 часов чистой работы, хотя потратил 1.5 или задание вообще мусорное. В-общем, я вижу больше ценности в бартере, когда кандидат получает качественный фидбек.

  Развернуть 1 комментарий

@mrartemev, статистика у меня не особо богатая. 6 заданий выдал год назад, 9 – сейчас. Конверсия в оффер, соотв-но, 1/6 и 1/9

  Развернуть 1 комментарий

@valentin-kh, согласен. И поэтому минус тестовых – особо сеньорных спецов так не пригласишь, они не будут делать тестовое :)

  Развернуть 1 комментарий

@mrartemev, Получается компания потратила деньги на написание фидбека, что честно, так как автор нанимает сотрудника н себе лично, а для компании

  Развернуть 1 комментарий

@Ivannovicov, к тому же я не очень выкупаю аргумент "твое время тебе оплатила компания в деньгах". Если ты стоишь у станка и ненавидишь свою работу, тогда ты рад любой ценой потянуть время. А если ты тащишь кучу проектов, завоевываешь репутацию у топов и вообще любишь свою работу, то потратить лишний час на качественный фидбек кандидату – вполне себе инвестиция времени.

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

Так что средний кандидат тратит время на take-home, получает опыт и фидбек, по мне – fair enough. Не вижу особого отличия от 100 часов, убитых на литкод, и собес, запоротый за 10 минут, где попадается hard или крепкий medium. Take-home задания хотя бы куда ближе к жизни, чем литкод.

  Развернуть 1 комментарий

@yorko, ух ты, даже интересно что даёт HF в качестве тестового

  Развернуть 1 комментарий

@Gorodecki, еще расскажу про это в телеге :) но в двух словах: свой text2image еще до того, как это стало мейнстримом.

  Развернуть 1 комментарий

Ради интереса прогнал несколько литкодовских задач попроще, про всякие деревья и иже с ними - такое решает на ура. Еще и поясняет суть решения вдогонку.


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

  Развернуть 1 комментарий

@xcHades, ну это на литкоде можно просто пойти в решения ) chatGPT по сути это и делает )

  Развернуть 1 комментарий

ChatGPT проходит наш собес на программиста. Т.е. достаточно вопросы в текст перевести и просто прочитать правильный ответ)

Только домашнее задание ChatGPT не сделает скорее всего.

  Развернуть 1 комментарий

@Doredel, пост про то, как сhatGPT почти полностью сделала домашнее задание

  Развернуть 1 комментарий

@Doredel, Как именно ты пришла к выводу что он проходит ваш собес, как вы это тестили?

  Развернуть 1 комментарий

@anatolt, мы задали chatGPT все вопросы с собеседования на C++ программиста и он безупречно на все ответил. Сейчас у нас только четверть человек может простейшие задачки решить или на вопросы о порядке вызова деструкторов ответить, требования не очень высокие.

  Развернуть 1 комментарий

@Doredel, если есть возможность показать этот диалог - было бы интересно взглянуть

  Развернуть 1 комментарий

@anatolt, ну картиночки есть например

Не на все отвечает идеально (первая проблема - какая-то дичь непонятная)

На некоторые вопросы отвечает неправильно, но с такими и кандидаты почти никогда не справляются

  Развернуть 1 комментарий
Ярослав Data Analyst / Analytics Engineer 27 марта 2023

Кажется, наконец-то пришло время изучить mlcourse и купленные 2 года назад бонусные материалы…

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
Natalia Sergeeva пилю Frontend когда не лень 28 марта 2023

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

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб