90-DAY PLAN
Уделил 10 минут (остальные 20 потратил на саморазвитие), подготовил шаблон в Miro для квартального планирования, который любой из вас может взять на вооружение, наверняка кому-то пригодится. В углу написал легенду, в комментарии задавайте вопросы, если что-то непонятно – дополню.
https://miro.com/app/board/uXjVODg5odE=/?moveToWidget=3458764574208194942&cot=14
Ключевые идеи:
- разбивка по 3-4-5 направлениям (например, сферам жизни или проектам; про цветовую кодировку рассказывал здесь)
- в каждом направлении одна-две цели на квартал
- для каждой цели есть какие-то промежуточные майлстоуны (которые могут играть роль целей на месяц или на неделю)
- сплошная обводка для достигнутых целей, пунктиром для тех что In-Progress, полупрозрачные – те, что сейчас вне фокуса внимания (будущие цели) + граница того, что сейчас в фокусе
Вероятно, вы будете просматривать и актуализировать этот план раз в неделю, во время еженедельного планирования. Думаю, подходит как для персональных целей, так и для планирования развития продукта или компании.
А как вы организуете планы на квартал или на год?
#LifeOps
Фреймворк понравился. Матчится с тем как Я о целях думаю в голове. Продлеваем ещё на квартал.
Читать полностью…Бытовой лайфхак для deep work. Всегда в одном из экранов открыты Todoist + Session (задачи + трекер времени).
Как писал ранее, когда ведёшь лог того, что ты делаешь, это проясняет, а что ты сейчас сделал или какой шаг планируешь сделать; помогает быстрее вовлечься (войти в поток), а также не отвлекаться на ерунду и видеть прогресс того, что уже сделал и попробовал. Когда видишь на глазах растущий лог, это само по себе стимулирует не прерывать "комбо".
#LifeOps
Спасибо Борису, да, что-то такое есть в LangChain, жаль без статьи с метриками и экспериментами:
https://python.langchain.com/docs/modules/data_connection/retrievers/multi_vector#hypothetical-queries
"HyDE пытается зацепиться за убегающий от него релевантный контекст с помощью двух гипотетических документов, а тот всё равно убегает"
Читать полностью…Недавно на Симуляторе ML мы презентовали чат-бота Аду, который помогает нашей команде сопровождения. А еще мы разрабатываем Co-Author — сервис, который помогает команде генерировать новые задачи. Быстро реализовать столько идей команде позволяет навык работы с LLM (т.е. большими языковыми моделями, подобными ChatGPT). А хотите расскажем про LLM подробнее?
21 декабря в 18:00 (по Москве) пройдёт вебинар, где Богдан Печёнкин, один из авторов Симулятора ML-инженера, поделится секретами построения успешного LLM-продукта.
В программе:
● Паттерны проектирования и построения таких систем (всё проще, чем кажется!);
● Разбор кейсов, где языковые модели ускорят, а где наоборот помешают разработке продукта;
● Навыки, необходимые для работы с LLM.
[Регистрация]
MEDPROMPT
Как выжать максимум из LLM до того как заводить fine-tuning (который дорогой, долгий и сложный)? Ответ: продвинутый prompt engineering. Есть, значит, такой Medprompt, который со страшной силой бьёт бенчмарки на каких-либо узких доменах за счёт довольно простых приёмов.
Нам понадобятся 3 ингредиента:
1. kNN few-shot
2. Chain-of-Thought (CoT)
3. Ensemble choice shuffle
1. kNN few-shot: LLM сильно лучше понимают, что от них хотят, когда даёшь пару примеров (прямо как и люди). kNN few-shot практически тоже самое, что RAG (Retrieval Augmented Generation), с той лишь разницей, что если в RAG мы векторизуем сырую базу знаний (набор документов, разбитых на кусочки), то во few-shot kNN мы векторизуем запросы пар "запрос - ответ". Конкретно в Medprompt по запросу достаём "запрос - рассуждение (CoT) - ответ" (рассуждение и ответ могут быть как прописаны экспертом, так и сгенерированы LLM, а затем провалидированные экспертом).
Вы можете использовать в любом своём приложении few-shot как статичный (руками прописанный в промте), так и динамический (в kNN режиме, когда по запросу пользователя из векторной базы данных достаются похожие примеры запросов с их правильными ответами) – и это гарантированно повысит качество.
2. Chain-of-thought (CoT): цепочка рассуждений – по-простому, мы просто говорим модели подумать перед выбором финального ответа. Например, Before crafting a reply, describe your observations in 3 sentences with clarifying strategy we should choose in <draft></draft> tags
. Вариаций как организовать CoT масса. Главное, что это позволяет модели порефлексировать, набросать черновые варианты или выделить, на что обратить внимание, – до того как давать ответ.
CoT также значимо бустит качество генерации практически в любом приложении, переводя модель из режима "ответа сходу" на "обдуманное решение. Ведёт к дополнительным костам и секундам на "токены рассуждения", которые вы вероятно не будете показывать пользователю, но с GPT-4-Turbo цена и время стали приятнее.
#LLMOps
ЦИКЛ СНА
До знакомства с Miro для подобных персональных (а затем рабочих) диаграмм Я использовал OmniGraffle (в отличие от Miro, он поддерживает Pie Chart и сектора круга из коробки).
Вообще, инструменты для visual communication, в том числе для communication с самим собой – как будто одна из Моих сильных (хоть и побочных) сторон. Видимо side effect того что Я всё детство рисовал.
Конкретно этот вид диаграмм для режима дня, где по кругу отмеряется 24 часа, и ты выделяешь, где сон, работа, тренировки – Я подобрал и активно эксплуатировал в студенческие годы, когда (как думаю, и многие из вас) баловался с полифазным сном. Лично у Меня локально он не завёлся и пробовать опять не планирую.
Но, чисто из любопытства, кто из вас тоже пробовал? Что пробовали? Какие успехи? Какие извлекли уроки?
VISUAL INTENT
Сделал прослойку с visual intent classification. Теперь интерфейс взаимодействия с Моим AI-агентом ещё проще и интуитивнее. Раньше пользователю нужно было писать подпись к картинке либо на что-то кликать, чтобы сервис понял, что ему нужно, какую OCR/visual логику подтянуть под капотом. Теперь не нужно.
Где такой зверь встречается? Например, в приложении Yandex, где одна и та же камера умеет и QR сканировать, и товар распознает, и текст переведёт, и уравнение решит.
С GPT-4V это выглядит ровно также как простая классификация интента с той лишь разницей, что в промпт добавляем картинку (для экономии токенов, в низком разрешении – в высоком она нужна уже в специализированной обработке).
Удобно 😈
#LLMOps
Книга с очень здоровыми убеждениями и принципами на тему:
https://readmake.com/
Стартапы автора:
photoai.com ($75K MRR)
interiorai.com ($43K MRR)
remoteok.com ($46K/m)
nomadlist.com ($37K/m)
Это мы анализируем, какие фичи продукта самые востребованные для пользователей
Полюбил Я DataLens на последнем месте работы: сделано людьми – для людей
В TIME огромная статья с Сэмом Альтманом и 20 его близких людей. Прямо рекомендую почитать, не самый позитивный образ гениального человека вырисовывается https://time.com/6342827/ceo-of-the-year-2023-sam-altman/
Читать полностью…Вышел мой обзор про LLM агентов на хабре🕺
Скорость появления новых работ и подходов в этом направлении сейчас настолько большая, что тяжело оставаться в курсе, даже работая в сфере DL/NLP. Поэтому постарался описать прогресс относительно небольшой статьей и проиллюстрировать работами, вышедшими за последний год. Также хотелось сделать это не сильно техническим языком, чтобы было понятно максимальному числу людей не из машинного обучения. Так что если вы не связаны напрямую с ML, то не бойтесь, возможно будут непонятны какие-то части, но их можно пропустить (или спросить в комментариях)
Наткнулся на старую заметку в Notion о том, что Я считаю своими сильными сторонами. Верхнеуровнево, список сводится к 3 пунктам: системность, эмпатия, любознательность.
Кто Меня знает какое-то время, что бы вы добавили или убрали и почему?
Читаю подобные посты и ловлю себя на мысли, что очень многие вещи 3 месяца назад были сделаны очень грамотно, когда мы запускали @adamgame_bot
Вообще искренне благодарен всем нашим первым платным пользователям (которых уже 90!) за их поддержку, терпение, вовлеченность. Это сильно мотивирует.
Но впереди у нас ещё очень длинный путь и нужно не терять темп.
Stay tuned.
Каждый день Я начинаю с персонального daily, который занимает 10 минут и во время которого Я планирую, что сделаю за день.
Для разбивки задач по приоритетам Я использую адаптированный MoSCoW фреймворк:
• Must Do: 1-2 Top-Goals (часто требуют deep work, поэтому день начинается с них), и срочные задачи (с дедлайном сегодня). Сюда закладываем 4-6 часов.
• Should Do: важные задачи, например те планы на неделю, которые не вошли сегодня в Must. Например, не-критичные баги или стратегия. Сюда ещё 2-4 часа.
• Could Do: разная nice-to-have косметика, не требующая большой концентрации. Это ставим на конец дня, если останется время и желание. Сюда на сдачу с барского плеча ещё пару часов.
• Won’t Do: сюда попадает разная неважная мелочь которую можно сделать за пару минут, либо could/should если их вытесняют задачи более высокого приоритета.
День считается успешным, если выполнены все Must. День считается супер успешным если ещё успел и все Should.
Все задачи оцениваются в начале дня и дублируются в календарь. Если что то занимает больше запланированного времени, то задачи более низкого приоритета служат буфером: так, Must вытесняет Should, Should вытесняет Could.
Самый сложный квест - придерживаться дисциплины не делать Should/Could, пока не сделаны Must (ведь наш мозг так любит между важным и срочным переключаться на понятное).
#LifeOps
Кстати, а кто-то пробовал в (полу-)автоматическом режиме нагенерить под каждый документ вопросы, ответы на которые можно найти в доке, и каждый вопрос положить в вектор, чтобы ссылались на один и тот же док? Либо может видел кто-то статью об этом?
HyQE
HyDE (Hypothetical Document Embeddings)
Звучит прямо как название босса Hades из God Of War 3 (с англ., Аид). В принципе, клыки которыми тот разбрасывался, цепляясь за души, вполне рифмуются с содержанием подхода. Не удивлюсь, если авторы те ещё геймеры и вдохновлялись игрой при написании статьи.
HyDE это приём из серии Advanced RAG techniques, который позволяет качественно повысить покрытие нашего ретривера (алгоритма поиска релевантного контекста из базы знаний), выцепляя тот контекст, который обычный RAG почему-то не выцепил. Как работает обычный RAG (Retrieval Augmented Generation), Я описывал в этом посте.
Идея в чём? При стандартном RAG в качестве "ответов" служат документы из базы знаний. В качестве "запросов" служат вопросы от пользователей. Есть гипотеза, что эмбеддинг вопроса и эмбеддинг ответа – несколько из разного семейства. По аналогии, ключи и значения в механизме внимания трансформеров – это разные вектора.
Вместо этого, в HyDE вместо поиска по запросу мы сначала генерируем "гипотетические ответы", т.е. что было бы написано в "гипотетическом документе, содержащем ответ" (какой он был бы по форме и что примерно в нём написано) – получаем его эмбеддинг и по нему ищем. Таким образом, мы будем считать близость уже не между эмбеддингом запроса и эмбеддингом ответа, а между эмбеддингами ответов. Для генерации гипотетического документа используем любимую LLM, например, для удешевления костов и ускорения, GPT-3.5.
Важно. Это может дать буст вашему RAG, а может и не дать. Так, ребята из OpenAI на DevDay говорят, что когда работали с одним из клиентов, им удалось повысить покрытие с 45% до 98% за счёт разных техник, однако в том конкретном случае HyDE (наравне с файн-тюном эмбеддингов документов) оказался не в числе модифицкаций, повышающих точность. No Free Lunch Theorem: не узнаете, пока не попробуете на своём конкретном кейсе.
Оригинальная статья: https://arxiv.org/abs/2212.10496
#LLMOps
3. Ensemble with choice shuffle. Здесь начинается уже специфика бенчмарков, где на выходе ожидается вариант ответа, выбранный из заранее определённого списка. Если это не кейс вашего приложения, вам эта часть будет бесполезна. Проблема: как показала практика, порядок вариантов, из которых нужно выбирать, статистзначимо смещает выбор варианта при перезапуске генерации много-много раз. Чтобы это обойти, перемешиваем варианты, например, 5 раз и выбираем самый популярный (что требует 5 вызовов, вместо 1, Я ещё не думал в сторону, можно ли оптимизировать косты промпта здесь с помощью Моего любимого магического параметра n, но да ладно).
Вот и весь Medprompt. Даёт какие-то мощные приросты в точности и обгоняет fine-tuned модель от Google, Med-PaLM 2.
Мне в юзкейсах достаточно few-shot kNN + CoT + ещё разной магии, у Меня нет заранее предопределённых вариантов, поэтому нам choice shuffle не актуален. Шаблоны промптов с картинки можно покурить здесь, там ничего сложного. За ссылочки и помощь в разборе спасибо Игорю (@seeallochnaya).
P.S. Поделитесь, а какие из этих техник вы применяете у себя в LLM-продуктах? Мне и другим будет интересно узнать.
#LLMOps
С ЧЕГО НАЧАТЬ?
Не самый ожидаемый, но поучительный урок на основе графиков: вы можете запустить MVP и начать делать деньги с далеко не самой востребованной фичи. Вы можете ошибиться в исходной формулировке проблемы. Но если вы тесно общаетесь с пользователями и быстро итерируетесь в улучшении продукта, то довольно скоро сойдётесь к правильному распределению внимания между возможными векторами развития продукта.
Прямая аналогия: вы можете инициализировать веса нейронки не самым лучшим образом, взять далеко не самое лучшее начальное приближение, но если вы сделаете back propagation достаточно большое количество шагов, то сойдётесь в локальный минимум. Цель создания MVP не в том, чтобы попасть сразу в сердечко пользователя и идеально угадать решение его проблемы, а в том, чтобы попасть хотя бы в радиус сходимости и как можно раньше начать собирать фидбек, итерироваться, валидировать гипотезы на реальных пользователях, готовых голосовать рублём.
Думаю, проблема многих в том, что они рассусоливают уже на старте, гадая а с чего лучше начать и всё больше отодвигая момент, когда цепочка обратной связи с миром замыкается (итераций общения с пользователями и улучшения продукта). Напоминает знакомство с девушкой и продумывание идеальной фразы, чтобы заговорить, – пока будешь думать, с ней познакомится уже кто-то другой и поведёт её показывать свой новый Quest 3.
Похвастаюсь, у Меня от идеи до первых платных клиентов прошло менее 24 часов (получается, освоил искусство писать код из говна и палок, как и хотел 3 года назад). Как сказал Наполеон, главное, ввязаться в бой – а там видно будет.
Возвращаясь к вопросу в заголовке, с чего же лучше начать? – начинайте хоть с чего-нибудь, замкните петлю обратной связи как можно раньше, и дальше итерируйтесь в гипотезах как можно быстрее (и так по кругу).
Вы просили делиться историями из жизни, а не только всё про работу. Вот вам маленькая кулстори.
С апреля Я живу на Бали, до этого жил в Ташкенте. Долгое время думал, лететь или не лететь (звал с собой лучший друг). Настораживало 2 вещи: вайб Бали и климат Бали.
Что касается вайба, на Бали все живут на чилле на расслабоне, поэтому с первых дней Я со своим 10-часовым рабочим днём чувствовал себя здесь белой вороной. Прошли месяцы, ощущение не пропало, но научился его игнорировать.
С климатом всё интереснее. Меня беспокоило, что в отличие от цивилизации (Ташкента и Москвы) на Бали, как и в других жарких странах, – в костюмах не пощеголяешь. А у Меня был долгий путь поисков себя в том, что касается одежды и стиля. В конце концов, нашёл себя в классике. Рубашки и пиджаки – как вторая кожа. На аватарке канала, сюрприз, тоже Я.
Прилетев на Бали, удивился тому, что в отличие от Тайланда здесь сильно приятнее климат. Температура та же, но за счёт влажности, нет духоты, и главное, Я не сгораю за первый день без противозагарного крема. Что касается одежды, первые месяцы Я стиснув зубы ходил как и все в футболках, шортах. Не могу ничего с поделать со своей природой, но ощущаю себя в футболках (а тем более oversize) как мальчик, а не мужчина.
Выходит, значит, пару месяцев назад DALL·E 3. Мой чуть ли не первый запрос: Я такой-то внешности, люблю классику, но сейчас Я живу на Бали, как Мне одеваться чтобы быть в гармонии с собой? – на что Я сходу получаю совет поиграть с льняной одеждой и несколько вполне резонирующих со Мной прикидов. На следующий день нашёл великолепный магазинчик льняной одежды (кстати, кто на Бали, рекомендую), что оттуда не надень – всё идеально на тебе сидит, люблю такое. С того момента хожу только к ним.
К чему Я обо всём этом вспомнил? Последние недели со Мной всё чаще знакомятся в кафе и ресторанах как девушки так и мужчины, просят Instagram. Первое, на что все обращают внимание, это именно, что Я выделяюсь на фоне всех стилем. Как всегда, нас встречают по одёжке.
Мелочь, а приятно.
Что такое MVP? Вот самое лучшее объяснение, которое Я встречал. Даже в Y Combinator настолько доступно не объясняют.
Не устаю делиться ссылочкой:
https://youtu.be/3rUM5Mzx8CQ?si=JX1j4EKe1ldtcRBm
После этого ролика у вас начнётся MVP головного мозга и на +20% прокачается айкидо-суперскилл создавать продукты из говна и палок, которые работают, тестируют гипотезы и, если повезёт, наносят счастье пользователям.