Понятно, что все уже наелись темой 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" и заметка на русском в одноименном телеграм-канале.
Нейросеть заменяет погонщика нейросетей? Красивое.
Ради интереса прогнал несколько литкодовских задач попроще, про всякие деревья и иже с ними - такое решает на ура. Еще и поясняет суть решения вдогонку.
Очевидно, код прямо с литкода взят под чистую, шаблон прямо из задачи, но как по мне - мелочь. Можно при подготовке к собесам юзать вместо раздела с обсуждениями :)
Осталось только на сисдис проверить, но это я пока не умею, реквистирую более опытных товарищей из вайтборда!
А что ты имеешь в виду под этом?
😱 Комментарий удален модератором...
Просто уточнить. Ты оплачиваешь и оставляешь письменный отзыв? Или именно оплачиваешь отзывом?
Теоретическим? Или что-то другое имеется в виду?
Но лучший вопрос — зачем.
ChatGPT проходит наш собес на программиста. Т.е. достаточно вопросы в текст перевести и просто прочитать правильный ответ)
Только домашнее задание ChatGPT не сделает скорее всего.
@yorko
Спасибо тебе, что когда-то обучил меня и я устроился ML инженером!
Поверь, я могу больше, чем chatGPT, still)
По приколу попросил написать на PHP обработку строки и выдергивания оттуда токенов.
Сперва нейроночка попыталась обойтись регулярками. Тогда я усложнил задачу и подвел ее к тому, что регулярками тут не обойдешься, намекая на NLP алгоритмы
тогда эта хитрожопая сущность взяла и предложила из php дергать жаву и вызывать нейроночки там
По ходу, она умнее меня
Кажется, наконец-то пришло время изучить mlcourse и купленные 2 года назад бонусные материалы…
мне кажется сетка простая, начнете оптимизировать ее или изменять, то сеть уже не сообразит что и как сделать без очень четких указаний. Я делала сверточную сетку для фоток, предложила добавить уменьшить размер вектора но увеличить размерность, вообщем на простые кейсы наверное ок