Пикейный аналитик
417 subscribers
31 photos
1 video
20 links
Wishful Thinking Club
Download Telegram
10 паттернов разработки надежных LLM приложений.

Начинаю серию публикаций по LLM System Design.
Если осилите все 10 паттернов - сможете разрабатывать надежные LLM-приложения, которые не сломаются от наплыва счастливых пользователей.
Поехали.

Паттерн 1. LLM приложение это просто граф


Считайте, что вы разрабатываете обычный софт. Используете микросервисную архитектуру. Сервис 1 ждет ответа от Сервиса 2, если ответ = X, то идет в Сервис 3 и тд.

Только теперь у вас некоторые сервисы это не просто код. Может быть вызов LLM-классификатора, в зависимости от вердикта вызываться какой-то другой код. Или вызов LLM-суммаризатора, ответ которого запишется в NOSQL базу данных.

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

Перечислим часто используемые элементы в этом графе:

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

- Вызов LLM. Они могут соединяться различным образом: идти последовательно, параллельно, при выполнения условия и тд. Строго читать статью

- Внешние инструменты. Например, поисковый движок. Похоже на код, но инструменты не делают бизнес логики. Результат инструментов подается на вход в LLM. Разберем в "Паттерн 3. Все есть инструмент".

- Внешняя база знаний. Так делается RAG. Лучший способ заложить внешние знания в LLM. Подробнее обсудим в "Паттерн 4. Всегда используйте in context learning" и "Паттерн 5. Не переусложняйте RAG".

- Не-LLM модели. Обычно это бырты/сверточные сети или бустинги над деревьями. Очень быстры и дешевы. Как правило, обучаются дистилляцией. Поговорит про это в "Паттерн 10. Дистилируйте."

- Guardrails. Модели, которая оценивает качество ответа. Если качество плохое, лучше такое никому не показывать. Обсудим в "Паттерн 8. Human-in-the-loop"

- Человек. У него нужно уточнить, когда непонятно, что делать дальше. У него нужно спросить, когда хотим сделать рискованное действие. Подробнее в "Паттерн 8. Human-in-the-loop"

- Автономные агенты. Редкий зверь, но будет чаще встречаться. Почему редкий. Обсудим в "Паттерн 9. Когда нужны автономные агенты."


Литература для изучения

- Строго mustread пост от Anthropic
- Подробная схема LLM-приложений от Chip Huyen
- Пост, почему надо разделять LLM и бизнес логику
- 500 реальных кейсов LLM-приложений
- Подробный гайд с большим числом деталей
- Принципы проектирования агентов (многое можно почерпнуть и для неагентов)


Как обычно, любые вопросы жду в комментариях. Все разберем.
Channel name was changed to «datascience.xyz»
Forwarded from Data Secrets
Что спрашивают на собеседовании в OpenAI

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

Итак, пересказываем максимально кратко:

1 этап – Recruiter intro (15–30 мин).
Это просто базовый скрин: вам рассказывают про команду, этапы, сроки, правила прохождения интервью и тд. Вы рассказываете о себе. Обязательно нужно подготовиться, порепетировать с друзьями, быть кратким, задать вопросы и все записать.

2 этап – Hiring Manager chat. Вопросы в духе почему вы подходите этой команде и тд. На этом этапе уже важно понимать цели компании, показать предметный интерес и соблюдать баланс скромности и уверенности.

3 этап – Кодинг.
Начинается самое интересное. Вот что могут спросить, например:
– дебаггинг трансформера (ошибка может быть в механизме внимания, например, или в форме тензоров)
– реализация KV-cache, BPE или обратного распространения с нуля
– классика алгоритмов: Дейкстра, кучи, сортировки, бинарный поиск

Автор пишет, что тут важнее делать быстро, чем идеально качественно. Лучше оставлять #todo и assert, чем путаться и тормозить. Ну а с подготовкой все просто: 100+ часов на LeetCode и столько же на чтение и имплементацию статей.

4 этап – ML.
Проверяют фундамент + какие-то актуальные знания. Например, могут спросить: supervised vs unsupervised, математика линейной регрессии, как обучить модель с контекстом 10М токенов, GRPO vs PPO, методы интерпретируемости. Тут опять же: читаем много статей и базовые книги.

5 этап – Поведенческое интервью.
Проверяют, как вы действуете в сложных ситуациях. К этому интервью тоже не забываем готовиться и отвечаем всегда по методу STAR(I): Situation, Task, Action, Result, Insight. Отдельно готовимся к вопросам про провал и конфликты, они будут обязательно.

Вот так как-то, за деталями – в сам блогпост. Там еще кучу полезного можно найти: инсайты, полезные ресурсы, советы по тому, как выбивать себе зп и так далее.

Уловом с утра – довольны 🍯
🤮1💩1🤡1
Forwarded from Время Валеры
Хорошая книга - elegant puzzle от Will Larson.

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

Все последовательно, и почти со всем согласен, читаешь, как будто про себя подробно подумал. Рекомендую.

В дополнение рекомендую его-же статью Writers who operate. Чтобы что-то советовать, лучше работать в индустрии сейчас, а не опираться на исторический опыт, который резко может стать менее актуальным
Invalidation events happen in industry (e.g. move from ZIRP to post-ZIRP management environment) but it’s difficult for non-operators to understand implications with conviction
🤮1💩1🤡1
Нашли книжку, которая идеально подойдет для подготовки к собеседованиям или предстоящих экзаменов или контрольных, ведь сентябрь уже не за горами.

Так что же внутри?

Разобранные проблемы из самых разных областей ИИ. Не просто сухие ответы, а глубокие объяснения;
Фокус на ключевые темы: от основ ML до сложных архитектур;
Задачи, которые точно встретятся на собесах.

Эту книгу часто советуют для прокачки навыков — поэтому и мы рекомендуем.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡2🤮1💩1
Forwarded from asisakov
Modern подходы во временных рядах

Помните, я писал пост про вкатывание во временные ряды. Там же привел несколько источников и курсов. Это такая классическая история, когда болтается фундамент и основные способы работы с данными и прогнозами.

На ML тренировках от ВШЭ на одной из встреч от коллег рисеча Сбера была презентация с современными фреймворками и разными zero-shot и few-shot подходами, рекомендую ознакомиться в комментариях, как некоторый дополнительный материал к изученному. Вспомнил кстати благодаря посту Анатолия. Преза во вложениях выше.

Также хотел бы дополнить эту презентацию докладом человека с той же команды про эти же фреймворки с Датафеста прошлого года.

Накидайте кстати в комментарии хороших материалов, мб расширю подборку

#ml #timeseries #courses
🤡2🤮1💩1
Forwarded from Data Secrets
Сентябрь == настроение поучиться. Собрали для всех желающих подборку из свежих бесплатных курсов по ML/DL от топовых мировых университетов

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

1️⃣ MIT 6.S191: Introduction to Deep Learning. Интенсивный вводный курс по глубокому обучению. Охватывает: основы нейронных сетей, обучение сверточных и рекуррентных сетей, генеративные модели (включая генерацию музыки), большие языковые модели, RL, файнтюнинг. Много практических примеров применения в компьютерном зрении, NLP, биомедицине, играх и тд. Сайт (записи лекций внутри)

2️⃣ Stanford CS231n: Deep Learning for Computer Vision. Отличный базовый курс по CV. В целом около 20 часов лекций с разбором архитектур (CNN, ResNet, трансформеры и др.), методов оптимизации, детекции объектов, сегментации, генеративных моделей, мульти-модального обучения и обучения с подкреплением для CV. Одна из преподавателей – легендарная Фей-Фей Ли. Сайт (тут лекции и материалы), плейлист с лекциями

3️⃣ Stanford CS336: Language Modeling from Scratch. Собственно, внутренность соответствует названию: это прекрасный практический курс по LLM, в котором вы по порядку пройдете все этапы разработки LLM с нуля. Сбор и очистка данных для предобучения, архитектура трансформеров, обучение моделей на GPU-кластерах и масштабирование, оптимизация производительности, файнтюнинг, методы безопасности и alignment. Ну, в общем, прямо от А до Я. Сайт, плейлист

4️⃣ Harvard CS 2881R: AI Safety. Курс запущен в сотрудничестве с OpenAI. Темы уже для продвинутых: технические аспекты элаймента, предотвращение нежелательного поведения, социальные и философские вопросы влияния ИИ, RLHF, Constitutional AI, ограничения и риски современных систем, и даже анализ возможных сценариев и экзистенциальных рисков. Сайт (записи лекций внутри)

5️⃣ CMU 11-785: Introduction to Deep Learning. Совсем свежий курс от университета Карнеги–Меллона, который еще даже не закончился в самом университете. Хороший охват тем: нейросети, прямое и обратное распространение, CNN, CV, рекуррентные и трансформерные архитектуры, оптимизационные алгоритмы (SGD, Adam и др.), регуляризация и тд. Вполне подробно. Затрагивается даже вопрос обобщающей способности. Доступны домашки и их разборы. Записи лекций (уже выложены 4 лекции и 2 семинара, остальное продолжает выходить), сайт

Сохраняйте (а лучше не просто сохраняйте, но и находите время смотреть) 👉
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡2🤮1💩1
Forwarded from asisakov
Курсы по агентам

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

1️⃣Hugging Face AI Agents Course

2️⃣CS294/194-196 Large Language Model Agents от UC Berkeley (сейчас у них новая итерация, инфа тут)

3️⃣Learn AI Agents Handbook (там же есть очень крутой роадмап) (сюда же курс от ребят на Степике) (ну и третья скобка - кажется, что я подписан на 2 блога в телеге из перечисленных авторов на сайте)

4️⃣Интересный довольно неструктурированный плейлист по AI агентам

5️⃣10-часовое видео AI Agents Full Course 2025

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

@asisakov_channel

#llm #agents #courses
🤡4🤮2💩21👍1🔥1
Попытка оживить канал №67
🤡5😡3👎21👍1🔥1🤬1🖕1
Только начал читать книгу Кохави с соавторами «Доверительное A/B тестирование» и сразу в предисловии наткнулся на это. Выглядит многообещающе.
🤡5👎3🤮21👍1🔥1🤬1
🤮4🤡4💩31👍1🔥1🤬1🖕1
Если шутку нужно объяснять - это плохая шутка, зато если повторить ее несколько раз - она станет смешнее.
🤡5💩3👎2🤬1🤮1
Поэтому, я решил объяснить почему так назвал свой канал и клуб.

«Пикейный аналитик» - это привет из «Золотого телёнка», где сообщество людей «пикейных жилетов» с безупречно серьёзным видом рассуждало о судьбах мира, не утруждая себя ни данными, ни проверкой фактов.

Прошло почти сто лет, поменялось многое. Появились новые инструменты, компьютеры, ИИ, огромные массивых данных. Не изменилось лишь главное - соблазн всё понять «на ощущениях» и потом уже аккуратно под это подтянуть аргументы.

Собственно, отсюда и Wishful Thinking Club - клуб любителей выдавать желаемое за действительное. Wishful thinking - это когда ты не анализируешь реальность, а договариваешься с ней. Когда гипотеза нравится раньше, чем проверяется. Когда неудобные данные становятся «шумом», а удобные - «сигналом». Когда «ну это же логично» звучит убедительнее, чем «давай проверим числа».

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

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

За прекрасную подборку реакций хочу поблагодарить свою дочь и призываю подписываться на ее канал "Сцены из жизни богемы". Если вам не чужды классическая музыка, опера и театр, вы надете там много интересного @monateatr
🤡9😁42🔥2🤬2😡2
Синдром самозванца как парадокс Рассела

Как-то я участвовал в панельной сессии форума "Кавказский акцент" в качестве эксперта (бывает и такое), и нам задали вопрос:

Как лучше справляться с синдромом самозванца?

Я тогда отшутился примерно так: прежде чем с ним справляться, неплохо бы убедиться, что это действительно он. Потому что может оказаться, что ты и правда самозванец. Позже я задумался всерьёз: а можно ли вообще диагностировать у себя синдром самозванца?

Допустим, у нас есть герой - компетентный, но неуверенный в себе специалист. Если он говорит: «У меня синдром самозванца», - значит, он уже признаёт за собой компетентность. И в этот момент будто бы перестаёт быть самозванцем. Если же он говорит: «Нет у меня никакого синдрома, просто я слабый специалист», - то именно тут синдром самозванца и проявляется во всей красе.

И получаем версию парадокса лжеца: как только пытаешься честно ответить себе на вопрос «я внутри или снаружи?», сама проверка меняет объект проверки. Поэтому, прежде чем ставить себе такой диагноз - подумай, не выдаешь ли ты желаемое за действительное.
100🤡10🔥43🤬2😡2👎1
Эту задачу я когда-то подсмотрел у Александра Гутмана и потом использовал в лекции про континуум-гипотезу, которую читал в МГУ в 2021 году.

Недавно я задал её ChatGPT. Он справился и кроме того нарисовал мне классную иллюстрацию.

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

В одном из следующих постов расскажу, почему я про неё вспомнил. А пока - сама задача.

Клетчатое поле, бесконечное во все стороны. По полю прыгает кузнечик - такой маленький и зелёненький, что лягушка его не видит и не слышит. Но она знает, что кузнечик прыгает каждую секунду и точно по клеткам - на манер этакой шахматной лошади. А еще она знает, что он прыгает всё время в одном и том же направлении, вдоль какой-то одной прямой, и на одно и то же расстояние. Ни направление, ни расстояние лягушка не знает. Знает только, что сидел в траве кузнечик, а потом кааак попёр прыгать… Где сидел, как попёр, куда - неизвестно.

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

Задача - сожрать. То есть нужно придумать для лягушки такую стратегию, чтобы она гарантировано рано или поздно поймала кузнечика. Когда именно - не важно: времени впереди целая вечность.

Комментарии открыты. Лягушка тоже.

Чтобы вдохновиться, можно посмотреть мою лекцию на YouTube https://youtu.be/rGd0OUaIduc?si=gKoAFkUmyiY2T3q6
🔥8👍52🤡2👻1
JOIN как пересечение множеств - одна из самых живучих полуправд в аналитике

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

В курсах по SQL и шпаргалках авторы любят объяснять JOIN через теорию множеств:
INNER JOIN - пересечение, LEFT JOIN - всё слева плюс совпадения справа, FULL JOIN - объединение. Это звучит умно, аккуратно и достаточно похоже на правду, чтобы потом на этой полуправде построить пару карьерных катастроф.

Проблема в том, что в SQL JOIN работает не с элементами множества, а со строками, связанными по ключам. А ключи с обеих сторон вовсе не обязаны быть уникальными. Поэтому JOIN - это не операция вида “найти общее”, а операция вида “для каждого значения ключа сопоставить все строки слева со всеми строками справа”.

Пока ключ уникален хотя бы с одной стороны, проблем не возникает. Но как только вы попадаете на связь many-to-many, на сцену выходит локальное декартово произведение. Если по одному ключу слева 4 строки и справа 6, после JOIN вы получите 24 строки. Не потому что база “задвоила данные”. А потому что ключ повторяется с обеих сторон, и SQL честно строит все допустимые пары.

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

Отсюда и весь привычный цирк: “почему-то” выросла выручка, “внезапно” стало больше пользователей, “неожиданно” сломался retention, “откуда-то” взялись дубли и раздулся результат. Хотя ничего неожиданного не произошло. Просто человек написал JOIN, мысленно представил пересечение множеств, а получил произведение мощностей по каждому ключу.

Так что нет, JOIN - это не “пересечение”.
`JOIN` - это механизм порождения пар по совпавшим ключам.
А если ключ неуникален с обеих сторон, то это еще и отличный способ превратить спокойный запрос в оружие массового искажения.

P.S. А если для вас все это просто и понятно - можно получить эстетическое удовольствие от иллюстрации, которую ChatGPT нарисовал к этому тексту.
👍104🔥2🤡1
Пару недель назад мне попался подкаст Лекса Фридмана с Джоэлем Хэмкинсом — длинный разговор о бесконечности, парадоксах и природе математики. Большая часть содержания была знакома, но один сюжет зацепил по-настоящему: бесконечные шахматы.

Правила почти обычные. Доска — вся плоскость. У каждой стороны по королю, остальных фигур — сколько угодно, ходят они как положено. Две оговорки: пешки не превращаются в ферзей (какой в этом смысл, если у доски нет края?), а партия, длящаяся бесконечно, объявляется ничьей.

Хэмкинс с соавторами любят составлять задачи в духе шахматных журналов: что-нибудь вроде «мат в три хода», только на бесконечной доске. И дальше начинается самое любопытное.

Они построили позицию, в которой у белых есть выигрышная стратегия — и при этом никакое конечное N не годится как ответ на вопрос «за сколько ходов белые гарантированно победят?». И дело не в том, что партия уходит в бесконечность. А в том, что чёрные сами выбирают во время первого хода, сколько ещё тянуть.
Это уже не «мат в N». Это, в некотором смысле, мат в ω. Белые всё равно выигрывают — сомнений нет. Но чёрные могут сказать: «хотите — через миллион ходов, хотите — через миллиард, хотите — через гуголплекс», получая право самим выбрать размер своей агонии.

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

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

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

https://www.youtube.com/watch?v=14OPT6CcsH4

Тут же более формализованная статья Хэмкинса и ко про бесконечные шахматы: https://arxiv.org/pdf/1302.4377
👍93🔥2🤡1🥴1
В аналитике есть старое правило, известное как закон Тваймана. Формулируется просто:

Если результат выглядит слишком интересным — скорее всего, он ошибочный.

Иными словами, когда график внезапно улетает вверх, конверсия растёт как на дрожжах, а новая фича “сломала рынок” за одну ночь — не спешите звать руководителя и писать победный пост.

Сначала проверьте:

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

Когда метрика в AB-тесте растет на 40%, начинающий аналитик открывает шампанское. Опытный аналитик открывает логи.

Wishful thinking шепчет: «Наконец-то получилось».

Закон Тваймана сухо отвечает: «Сначала перепроверь».

Зрелость в аналитике начинается в тот момент, когда на аномально хороший результат ты реагируешь не радостью, а лёгкой тревогой.
👍13🔥65🤡1
Пикейный аналитик
Эту задачу я когда-то подсмотрел у Александра Гутмана и потом использовал в лекции про континуум-гипотезу, которую читал в МГУ в 2021 году. Недавно я задал её ChatGPT. Он справился и кроме того нарисовал мне классную иллюстрацию. Теперь давайте проверим…
А теперь обсудим решение задачи про кузнечика и лягушку, и замкнем все на бесконечные шахматы.

Каждого возможного кузнечика можно задать четырьмя целыми числами: стартовая клетка и постоянный вектор прыжка по двум координатам. Значит, таких кузнечиков счётное число (мы уже знаем, что счетное множество счетных множеств счетно), и всех их можно занумеровать: первый, второй, третий и так далее.

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

При этом заранее ограничить время поимки никакой общей константой нельзя: искомый кузнечик может оказаться с достаточно большим номером в списке.

А дальше начинается красивая аналогия с шахматами.

Если переписать задачу как игру двух игроков, получается почти карманная версия бесконечных шахмат Джоела Хэмкинса. Первый игрок задаёт стратегию лягушки, второй выбирает траекторию кузнечика.

У второго игрока нет стратегии спасения. Есть только стратегия отсрочки. Он не может избежать поражения совсем, но может сделать так, чтобы его съели через 10 ходов, через 100, через миллион.

Это очень похоже на игровое значение ω: поражение неизбежно, но проигрывающий ещё контролирует длину любой конечной задержки.

Так что задача оказалась не про кузнечика, не про лягушку и даже не про шахматы. Она про то, что бесконечность бывает разной, а иногда всё решает не хитрость, а мощность множества.
👍11😁1🤡1🥴1👻1