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

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

Понятно, что все уже наелись темой 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 комментарий

@gwer, вастрик начал пост как раз с этого мема

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

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

Неплохая модель оплаты, а зарплату тоже грамотой "лучший работник месяца" выдаёте?

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

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

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

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

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

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

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

  Развернуть 1 комментарий
Yury Katkov в шаббатикале 31 января 2023

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

Просто уточнить. Ты оплачиваешь и оставляешь письменный отзыв? Или именно оплачиваешь отзывом?

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

@ganqqwerty, не понял. Кандидат не получает денег за тестовое. Он получает детальную обратную связь по заданию.

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

@yorko, угу, это и спрашивал

  Развернуть 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 комментарий
Anna Программист 31 января 2023

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

chatGPT справляется с большинством вопросов из экзамена по матану

Теоретическим? Или что-то другое имеется в виду?

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

@nakopylov, не видел уточнений, но кажется, что независимо от типа задания.

Вот вам еще веселая история на сегодня: последнюю неделю вокруг меня прям все усиленно тестируют ChatGPT. Включая и одного из моих профессоров (у меня их два). Так вот, профессор этот — математик, ведет несколько курсов по матану в универе. Говорит, попробовал скормить ChatGPT примеры из домашек и экзаменов базового курса матана для студентов, и нейронка на половину из них(!) выдала правильный ответ и подробно расписала решение. Походу, придется пересматривать то, как проходят экзамены в универах, иначе студенты начнут просто через ChatGPT их решать

пост в телеге

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

@yorko, просто расписывать решения практических задач Математика и ко. умели лет 10 назад, поэтому несильно удивляет.

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

@nakopylov, согласен, тут помогло бы на примеры посмотреть

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

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

Но лучший вопрос — зачем.

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

@nakopylov, зачем нанимать инженера? Действительно очень хороший вопрос

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

@yorko, ведь подписка на чатжпт всего 49,99!

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

@nakopylov, оригинальная мысль

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

@yorko, так-то чатгпт очень скромен (пока)

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

@yorko, я тоже немного поэкспериментировал с ней и подумал, что сеть действительно неплохо справляется со всякой рутиной, которую как джунам дают. Ее, как впрочем и джуна, надо направлять и корректировать, но джун (наверное) сможет вырасти до мидла, а эта нейросеть мидла не заменит (пока).

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

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

@captain_blazeus, конечно, никто всерьез не говорит о том, чтоб сейчас ML заменил ML инженера.

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

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

@yorko, да я полностью согласен. Сетка еще будет улучшаться и развиваться, а эти ребята эффективнее пить кофе на зумах не будут)

Просто было интересно, что сама машина об этом скажет - и она не разочаровала!

  Развернуть 1 комментарий
Natalia Sergeeva пилю Frontend когда не лень 28 марта 2023

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

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

😎

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

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


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