Роман Тезиков про СV-проекты и промт-инжиниринг как базовый навык каждого человека

3f2bee59d6c2ef00724886da326f6230.jpeg

К нам на огонек в подкаст заглянул Роман Тезиков — senior-разработчик и DL-engineer. Эксперт рассказал много интересного о своем опыте реализации ML-проектов. А «на десерт» Роман поделился тем, как он применяет промт-инжиниринг в работе и личной жизни и каких впечатляющих результатов ему удалось добиться с помощью подобных технологий. 

Одевая людей и следя за коровами

Так сложилось, что львиная доля проектов в моем портфолио связана с компьютерным зрением. Впервые я столкнулся с такой задачей в 2017 году, когда мне было 20 лет. В составе ресерческого отдела компании, которая создает ПО для кинотеатров, разрабатывал CV-решение для составления расписаний, передачи фильмов через спутник и т. д.

С тех пор понеслось: детекция, 3D-сегментация и трекинг объектов, OCR. В частности, в компании Lamoda я вместе с коллегами работал над решением, формирующим покупателю гардероб при помощи компьютерного зрения. Смысл заключался в том, чтобы подбирать наиболее подходящие друг другу предметы и получать стильные образы. Дело, мягко говоря, непростое, ведь сочетаемость одежды — понятие во многом субъективное и относительное. Все зависит от личных предпочтений, взглядов человека, сложившихся у него стереотипов, веяний моды, быстро сменяющихся трендов. Одним нравятся канареечные брюки вместе с оранжевой рубашкой, как у Незнайки, а другим подавай строгий офисный лук.

В общем, мы начали прорабатывать вопрос, реально ли в принципе выполнять подобные задачи с использованием какой-нибудь нейронки. Оказалось, что вполне реально. Хотя для этого и пришлось изрядно попотеть над настройкой данных по плану валидации и проделать немало работы c моделями.

Если упростить, мы взяли некие ориентиры — удачно собранные известными стилистами образы. Вот и наши True Positive или, другими словами, примеры стопроцентной сочетаемости. Если в этом выверенном луке что-то грубо заменить на предмет с принципиально другим цветом или фасоном, то уже не будет стопроцентного попадания в яблочко. По аналогии с эталонными образцами нейросеть подбирает гардероб для всех покупателей. Признаю, что и здесь случаются осечки: какая-то рандомно выбранная черная футболка может оказаться ответом на все случаи жизни и классно смотреться с чем угодно. Но идеальной нейронки, которая никогда не ошибается, пока еще не придумано. В целом же решение показало приличные результаты.

6975bf7b1f26652830c6e31da0f453ed.jpeg

Вспоминается еще один интересный CV-проект — по трекингу коров для одного агрохолдинга. Нужно было наблюдать за стадом при помощи дрона, маскировать и трекать каждую «Буренку» отдельно. Такое вмешательство в личную коровью жизнь позволило контролировать, хорошо ли питается, спит и вообще себя чувствует та или иная особь. Главная сложность здесь в том, что коровы — не люди (уж извините за эту житейскую мудрость). Трекать «венца природы» в толпе довольно просто по уникальным признакам внешности. Берутся подборки по фичам лица и делаются матчи — искомый это человек или нет. Коровы же для нас все на одно лицо одну морду, зато у них разные спины и шкуры — именно по ним и собирались датасеты.

Была и масса других проектов, в частности, на NLP, когда мы с коллегами распознавали семантику твитов и реагировать на ее изменения. Довелось мне участвовать и в создании различных трекеров для магазинов и кинотеатров. Такие CV-решения помогают отследить, соответствуют ли приобретенные покупателем продукты тому, что пробито в чеке, нет ли дублей и т. д. Рассказывать обо всем подробно не стану, так как это займет слишком много времени.

Кстати, многое из перечисленного делалось в те самые «застойные» 2019 — 2020 годы, когда говорили о кризисе искусственного интеллекта, а кое кто даже собрался его хоронить. Забавно было слушать и читать подобные «некрологи», непосредственно работая в данной области и видя: вот он, ИИ, живее всех живых

Продолжало выходить огромное количество разных моделей, развивались технологии Object Detection, сегментации, чат-ботов, появлялись новые графовые сетки. К тому моменту уже во всю использовался трансформер, поднявший ML на новый уровень. Например, на архитектуре трансформера (decoder only) строятся продвинутые LLM (Large Language Model), которые оказались очень полезным инструментом в реализации многих упомянутых проектов. Да и вообще такие языковые модели постепенно начинают входить в обиход не только ИТ-специалистов и разработчиков. Думаю, об этом стоит поговорить отдельно.

LLM — в массы!  

Кажется, что рано или поздно каждый «перейдет на ты» с продвинутыми LLM. Связанный с ними промт-инжиниринг превратится в навык из разряда must have для всех — от домохозяйки до руководителя холдинга. Это все равно что ПК и офисные программы: еще в 90-е годы они многим казались чем-то вроде панели управления космическим шаттлом. Покажу на своем личном примере, как языковые модели повышают эффективность решения рабочих задач и качество повседневной жизни.

Как промт-инжиниринг помогает в работе

По сути, LLM — своеобразный метапарсер, преобразующий обычные человеческие слова в команды на одном из языков программирования и выполняющий все, что нужно. Обычная ситуация: у меня есть табличка с определенными колонками и фрагментами кода, с которыми нужно произвести довольно сложные мультистеп-преобразования. Вместо того, чтобы долго и муторно делать все вручную, я кидаю это в LLM, подробно прописываю ей вводные и ставлю задачу. Скажем, переписать код на мультипроцессинг, в NumPy или Torch на GPU. Вуаля, и языковая модель выдает результат — остается его валидировать. Получается серьезная экономия времени и сил

Помогает промт-инжиниринг и в других делах, например, переводах, написании текстов писем, презентаций. Однажды я выступал на тему MLOps перед коллегами, и все оценили яркую и даже забавную подачу — LLM сработала на отлично.

Конечно, чтобы добиться подобного вау-эффекта, мне пришлось хорошенько разобраться, как работать с промтами. Иначе результат выходил так себе. Для начала я изучил массу уже заготовленных на разные случаи жизни промтов. Например, есть соответствующий репозиторий на GitHub. Там все сформулировано в форматах из серии «веди себя как переводчик»,»…как математик»,»…как спортивный коуч». В чистом виде использовать такие промты не стоит, поскольку они слишком общие и не описывают конкретную ситуацию. Поэтому я взял кое-какие из них, расширил и адаптировал под свои задачи. Уже потом методом проб и ошибок мне удалось выработать свою, условно говоря, методику промт-инжиниринга. 

Главное здесь — максимально четко и развернуто сформулировать языковой модели ожидаемые итоги. Важно уточнить, какова будет стилистика и тональность ответа (официоз или, напротив, неформальная подача), нужно ли раскладывать все в структуру вроде JSON и YAML или достаточно простого текста. Еще один параметр — продвинутость и сложность изложения: оно требуется на уровне дошкольника, студента, профессора вуза?

Притом в каждом своем промте я стараюсь по возможности описать небольшую историю. Вот очень абстрактный пример. «Я — senior-разработчик Роман Тезиков. В ходе тренировки модели столкнулся с такой-то проблемой. Написал об этом коллегам из другой команды. Они ответили то-то и то-то. Нужно подготовить для них короткий и дружелюбный ответ следующего содержания».

Как промт-инжиниринг улучшает повседневную жизнь

Если говорить про использование LLM в быту, то я давно предпочитаю «промт-инжинирить», а не просто гуглить. Когда вам нужно, допустим, найти познавательный видос, обычный поисковик покажет все подряд — от школьных докладов до «мозговзрывательных» выступлений профессоров. Языковая модель, опять же, способна выдать именно нужный уровень сложности.

Недавно я разбирался в квантовой механике (не спрашивайте, зачем) и хотел посмотреть что-нибудь интересное по таким совершенно незнакомым мне вопросам, как «теория струн» и петлевая гравитация. Сразу решил поискать ответ у языковой модели и написал промт примерно следующего содержания: «изъясняйся, как доктор квантовой механики с двадцатилетним опытом в MIT, который умеет доносить сложный материал до новичков простыми словами». В итоге LLM набросала мне сжатый, но информативный абзац, ставший отличной точкой входа в тематику. Были там даже кое-какие формулы, причем все из них я сумел без труда разобрать. Это оказалось куда полезнее и удобнее, чем результат запроса в обычном поисковике: куча ссылок на разные видео, Википедию и простыни сложных статей.

06aca6ff834bfc989dea0fb256008c9d.jpeg

Могу рассказать и совсем проникновенную историю о том, как промт-инжиниринг помог нашей семье воссоединиться. Полтора года назад мы с женой переехали на ПМЖ на Кипр. Нам повезло снять очень неплохую евродвушку неподалеку от моря и по приемлемой цене. Одна беда: «лендлорд» был настроен категорически против любых домашних животных, поэтому пришлось оставить двух любимых котов у родителей супруги.

Когда настало время продлевать аренду, мы всерьез задумались о смене жилья — уж слишком тяжело давалось расставание с пушистыми «детьми». Хотя по всем остальным критериям квартира нас более чем устраивала. И тут у меня словно лампочка над головой зажглась: нужно использовать LLM, чтобы подобрать правильные слова и уговорить арендодателя пойти навстречу в кошачьем вопросе.

Я набросал промт объемом с «Войну и мир», в котором рассказал о себе, своих котах и хозяине квартиры, обосновал, почему мне никак не обойтись без питомцев. Уточнил, насколько я готов нести ответственность за них. Особо отметил, что сообщение не должно звучать как шантаж. Нейросеть сгенерировала просто огромный текст, который я немного скорректировал и попросил сделать чуть менее формальным и более дружелюбным. После нескольких итераций небольших правок получилось настолько аргументированное, выверенное и в меру эмоциональное сообщение, что дрогнул бы любой.

Вот и наш «лендлорд» не устоял. Какое-то время подумав, он в итоге переступил через свой принцип, хотя совсем недавно был непреклонен. Даже плата за аренду повысилась лишь символически. Мы с супругой сразу же сели на самолет и полетели за своими котейками. Теперь живем с ними вместе — счастливые и довольные. Честно признаюсь: сформулировать все настолько удачно, да еще и на английском языке у меня самого точно не вышло бы.

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

Возвращаясь к примеру с распространением ПК и офисного ПО, мир в итоге не перевернулся; напротив, многое стало проще и удобнее. С технологиями ML и, если сузить, промт-инжинирингом будет нечто подобное. Поэтому, на мой взгляд, не стоит воспринимать его как какую-то полноценную профессию или специализацию. Отлично, что сегодня есть пионеры, которые осваивают такой навык особенно активно и даже готовы учить ему других, предлагают разные курсы. И все же мой прогноз таков, что уже в обозримом будущем данные услуги просто потеряют актуальность, поскольку все начнут свободно «промтить» на работе и дома

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

© Habrahabr.ru