llm_under_hood | Неотсортированное

Telegram-канал llm_under_hood - LLM под капотом

12420

Канал про разработку продуктов на базе LLM/ChatGPT. Выжимка важных новостей и разборы кейсов.

Подписаться на канал

LLM под капотом

PS: Слайд про подобных агентов из курса. Эту часть я уже записал и переделывать даже не надо)

Читать полностью…

LLM под капотом

Аренда H100 за $2 в час - про резкое падение цен на GPU

Очень детальный разбор ситуации есть в новой статье на latent space.

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

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

Но есть один нюанс. Рынок - не дурак. Относительно дешевые конфигурации H100 - это пока именно, что излишки. Там, скорее всего, не будет InfiniBand, будут медленные хосты, проблемы с сетками или молодой неопытный оператор. Чем ниже цена - тем больше грабель.

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

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Как может выглядеть checklist?

Например, так, как на картинках. Это скриншоты из бенчмарка, который мы делаем для доклада на NODES '24 (Neo4j dev conference).

Этот бенчмарк оценивает то, как качественно LLM преобразовывает запрос пользователя в запрос по базе данных (SQLite/neo4j).

В данном случае я задаю все вопросы из checkist на каждый запрос пользователя перед тем, как она начнет генерировать финальный ответ. Это все делается одним запросом к LLM.

Добавление такой chain of thought (захардкоженной в виде structured output) улучшает качество ответов с 76 до 81 на этом бенчмарке.

Вы пробовали такой подход? Напишите про результаты!

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Дайте мне минуту, и я объясню, как связаны котики и RAG-и

Нет, это не связано с Игорем Котенковым, который регулярно приводит новых подписчиков из своего канала - @seeallochnaya.

Мне часто задают вопрос, который звучит примерно так.

Ринат, я хочу сделать поиск/бота для ответов на вопросы по переписке/документам компании/моим заметкам/FAQ-ам службы поддержки/продуктам. Какой RAG лучше начать смотреть?


В этот момент у меня в голове сразу возникает такая куча вопросов, что я обычно замолкаю:

- Почему именно RAG?
- А какую именно проблему мы пытаемся решать?
- Кто будет пользоваться этой системой?
- Какие у пользователей самые частые проблемы?

У меня в истории успешно закрытых бизнес кейсов, случаев с RAG-архитектурой меньше 10%. Обычно решение проблем бизнеса удается свести к более простым специализированным технологиям. А простые решения и делаются быстрее и закрываются чаще.

Поэтому, когда спрашивают про “А какой RAG использовать для поиска ответов?” - это мне сразу напоминает котика с картинки. Он в лоток не ходил два дня, а ему уже хотят промыть желудок. Хотя, быть может, проблема всего лишь в том, что котика не покормили вовремя, и он обиделся.

TLDR; если вопрос стоит “какую RAG технологию использовать для решения какой-то задачи”, то это звучит, что бизнесу решили превентивно устроить карательное промывание желудка. Чтобы неповадно было.

Я бы вместо этого предложил посмотреть поглубже на решаемую проблему. Быть может, там есть решение попроще и понадежнее, без RAG-ов? (например, как это было в первом раунде Enterprise RAG Challenge).

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Самый частый комментарий про исходники решения - победителя Enterprise RAG Challenge звучит примерно так:

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


Я и сам удивился. Не ожидал, что checklists в сочетании со structured outputs - это настолько мощная связка, что может вытягивать сразу десятки-сотни сущностей из документа за раз.

Удивление было уже давно, целый месяц назад (это вечность по современным меркам 😂). А сейчас уже в ряде проектов у нас сложные пайплайны переделаны под эту связку. Сложными они были раньше, теперь скучные, и это хорошо.

Основная сложность теперь не в написании кода, а в написании такого дерева Structured Output объектов, чтобы оно работало как Checklist, заполняя который последовательно, мы приходим к правильным выводам.

Получается прямо захардкоженный Chain-of-thought, который выполняется одним запросом! Причем в нем можно сразу закладывать ветвления и выделять места для дополнительных рассуждений (см ниже).

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

Пара подсказок сразу:


response = client.beta.chat.completions.parse(
model="gpt-4o-2024-08-06",
messages=messages,
response_format=ChainOfThoughtPydanticClass
)


(1) Не используем function calling syntax для передачи structured output, а передаем response_format

(2) gpt-4o-2024-08-06 работает хорошо. Вроде даже на Azure она уже есть со structured output.

(3) порядок полей очень важен! Они заполняются последовательно. Сначала можно ставить наводящие вопросы или даже давать место для размышлений (например, List[ThinkStep]).

(4) Там, где нужно делать классификацию, используем Literal. Опциональные поля помечаем как Optional, используем смело Dict/List. Ну и вообще знакомимся с фишками из Typing, которые поддерживает OpenAI API.

(5) Optional + вложенный класс - это возможность для GPT в рамках для Chain-of-thought пройтись по опциональной ветке размышлений. Еще есть anyOf, но так далеко с программированием на constrained decoding автомате я пока не заходил 😁

(6) Там, где важен формат ответа, ставим описание и примеры в Field. Это GPT тоже увидит. Можно повторить в названии и в описании. Например:


class Size(BaseModel):
width: float
height: float

size_inches: Optional[Size] = Field(None, description="Dimensions in inches (width, length)")


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

Тогда получится мой любимый вид продукта с LLM под капотом - когда снаружи он работает на одном уровне с передовыми решениями своего сектора, а то и лучше. Но у него есть маленький секрет - вместо монструозно сложной конструкции из кучи разных технологий (RAG/LangChain/Hybrid search/Agents итп) там просто пара простых и эффективных использований LLM. В итоге AI кода в решении - 5%, а все остальные 95% - это обычные интеграции, интерфейсы.

И такие типы продуктов очень важны для маленьких компаний и стартапов. При необходимости роста не нужно искать и нанимать редких ML специалистов. Код же простой и он на 95% обычен. Тут нужно искать обычных Front-End, Back-End и Full-stack итп. И нанять их можно будет сильно проще, т.к. зовут их не в обычный продукт, а в модный LLM-driven. Выигрывают от этого все.

Только вчера фаундер одного MedTech стартапа сказал, что после такого описания (с приоритизацией кейсов под этот паттерн) у него стратегия развития поменялась кардинально. И теперь pre-seed раунд на пару миллионов евро не выглядит недостижимым.

В общем, паттерн простой и мощный. Особенно, если приоритизировать кейсы, где он сработает хорошо (такие есть в каждой отрасли), а конкурентам оставлять более сложные.

Ваш, @llm_under_hood 🤗

PS: Я писал раньше про кейс с новой AI Platform для клиента. И он тоже теперь сильно использует этот паттерн на "одну кружку чая".

Читать полностью…

LLM под капотом

Вопрос из нашего комьюнити выпускников:

есть ли у нас тут спецы, кто умеет готовить многомодальные модели?
Я хочу сейчас натренировать модель текст + временные ряды (time-series) и не хочется собирать самому шишки, которые кто-то уже собрал.
Тема пока что не популярная, но это скоро поменяется.


Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Тут выдохнуть спокойно нельзя

Только я сел делать предобработку видео для курса по AI Ассистентам - новость, мол, вышла Llama 3.2. Дайте я хоть расскажу план курса, а потом бенчмарк, ок?

План такой - курс состоит из двух модулей. Они будут доступны на моей площадке ML Labs, формат - текст и видео. По времени и стоимости напишу отдельно попозже.

Первый модуль - про ментальные модели для работы с LLM: как обходить грабли и как использовать эффективно LLM в проектах. А если что-то не работает - как последовательно найти первопричину проблем и устранить. Это те знания, которые в прошлом году сэкономили бы мне 2-3 месяца работы. Часть контента пересекается с вебинарами, которые мы проводили с вами весной. Но материала на курсе больше и он дается подробнее.

Второй модуль полностью новый. Я прошелся по всем кейсам успешного внедрения LLM/AI на текущий момент, систематизировал их и вывел повторяющиеся архитектурные паттерны. Эти паттерны с особенностями применения я и показываю, разберем кейсы с их использованием. Второй модуль дает “насмотренность” на текущее использование LLM в отраслях из моих кейсов в современных компаниях: это структурированные знания, которые клиенты уже применяют.

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

Помимо теоретической части и видео будет доступен отдельный практикум, чтобы разобрать вопросы и поговорить более предметно. Как и весенние вебинары, практикум на продажу записываться не будет. Можно будет приносить свои кейсы для обсуждения - они за пределы группы не выйдут. А все выпускники получают доступ в коммьюнити. Кстати, нынче там обсуждают расценки на создание юридических RAG с нуля, механизмы внимания в LLM и делятся бенчмарками Qwen2.5/Llama70B на H100/H200 для максимальной окупаемости.

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

Ваш, @llm_under_hood 🤗

PS: А дальше будет бенчмарк LLama 3.2

Читать полностью…

LLM под капотом

Вот все Google Gemini ругают.

А как вы думаете, какое место в бенчмарке займет новая версия Google Gemini 1.5 Pro v2?

Читать полностью…

LLM под капотом

Бенчмарк Qwen 2.5 и DeepSeek 2.5

Недавно вышедший Qwen 2.5 72B Instruct оказался неожиданно хорош. Это первая локальная модель, которая побила Claude 3.5 Sonnet на продуктовых задачах из моих бенчмарков. Он еще и стоит меньше всех остальных моделей в топах.

Стоимость прогона рассчитана на базе цен из OpenRouter.

Qwen 2.5 72B внимательно следует инструкциям (в отличие от того же Sonnet и старых версий GPT-4) и может похвастаться довольно неплохим Reason. У этой китайской модели есть провалы в задачах работы с кодом (но там делают отдельную модель) и с английскими текстами (Marketing).

А вот DeepSeek 2.5 оказался не так хорош. Параметров - 236B, а точность выполнения задач из продуктов с LLM под капотом - на уровне Mistral Large 123B и старой модели GPT-4 Turbo.

И это потрясающие новости, что все больше локальных моделей подбирается к планке GPT-4 Turbo. А то, что ее так далеко преодолела модель на 72B - это повод для отдельного праздника 🚀

Я думаю, в этом году это не последняя подобная модель.

Ваш, @llm_under_hood 🤗

🔗 Бенчмарк GPT o1

PS: Для тех, кто видит эти бенчмарки впервые, напомню - это закрытые продуктовые бенчмарки на основе набора задач из рабочих систем. Мы тестируем не то, как красиво модели болтают, а насколько качественно они выполняют конкретные задачи из продуктов с LLM под капотом. Про структуру и примеры бенчмарков можно прочитать в лабах или на официальном сайте бенчмарков.

Читать полностью…

LLM под капотом

В ходе комментариев на опрос выше немало людей упомянуло, что o1, несомненно, справится с задачкой счета букв.

Если понимать базовые ограничения систем с LLM под капотом, то сложную для LLM задачку сочинить несложно. Например, на эту задачку пересчета букв даже o1-preview у меня не смогла ответить правильно (0 из 5 попыток):

List letters that have diacritics in one word but appear without it in one of the others? Words are: "Świnoujście", "Chișinău", and "Île-de-France". Case matters.


Просим перечислить буквы, которые встречаются с диакритическим знаком в одном слове и без него - в другом. Слова - "Świnoujście", "Chișinău", and "Île-de-France". Регистр имеет значение.

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

Но вот o1-preview или o1-mini сами по себе не смогут справиться, даже с ресурсоемким перебором вариантов через Tree-of-Thought под капотом. Там и tokeniser ставит палки, и training data, да и resource-capped forward pass в ToT накладывает ограничения.

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

Ваш, @llm_under_hood 🤗

PS: если сформулировать задачу в виде "Count the number of letters...", погоды это не сделает, просто проверять корректность ответа сложнее.

Читать полностью…

LLM под капотом

Кейс DealRoom: AI-решение для Due Diligence

Хочу похвастаться: на днях мои клиенты зарелизили продукт для автоматизации процесса Due Diligence в слияниях и покупках компаний - AI designed for Due Diligence. Они его разрабатывали с моими консультациями.

Весь процесс Mergers and Aquisitions (от LOI до завершения интеграции) - это сложный "танец" двух компаний, который может занять от 12 месяцев до 3+ лет. Почему так долго? Потому что нужно выяснять массу деталей, анализировать горы документов и получать точные ответы на специфичные вопросы о компаниях. Правильное использование AI/LLM помогает сэкономить много человеческого времени в этом процессе.

Продукт относится к категории Business Services в моей матрице AI Cases - её вы видели в прошлом посте.

Я этот релиз ждал очень долго. DealRoom - это мои давние клиенты в рамках AI Research и консалтинга. С января этого года компания прошла большой путь: от продуктовой идеи до конкретного продукта, от классического RAGа с типичными болячками до работающего решения, которое вобрало в себя опыт лучших экспертов в отрасли M&A.

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

Ваш, @llm_under_hood 🤗

PS: А еще у них есть вакансии, подробности - в комментариях.

Читать полностью…

LLM под капотом

Мой AI Coding workflow

Инструменты, которые использую в разработке сейчас.

В первую очередь IDE - либо Jetbrains PyCharm/Goland/WebStorm либо neovim. Я на эту связку пересел лет этак 10 назад с Visual Studio, все работает хорошо и удобно для меня. Мускульная память рулит.

Отчасти из-за этого я не использую Zed, Cursor.sh и прочие AI-first редакторы. Они никогда не станут такими удобными (для меня), как JetBrains/neovim со всеми моими настройками и плагинами.

В IDE - использую Github Copilot для ненавязчивого autocomplete. Большую часть времени он выключен, чтобы не отвлекал.

Для когнитивно сложных задач и брейншторминга - Claude Chat / ChatGPT в режиме копипасты.

Если нужно работать точечно по коду с разными файлами, рефакторить и чистить, тогда aider c такими параметрами:

aider --no-auto-commits --cache-prompts --no-stream --cache-keepalive-pings 6 --read README_AI.md

- —no-auto-commits - отключает авто-генерацию git коммитов (я предпочитаю проверять и писать сам)
- --cache-prompts --no-stream --cache-keepalive-pings 6 перетасовывает промпт так, чтобы использовать context caching (для экономии)
- --read README_AI.md - загружает мелкую методичку для AI по текущему проекту.

И потом просто в терминале aider-у выдаю задачи, в процессе выполнения которых он редактирует файлы напрямую. Потом я просматриваю изменения через git diff и дальше по ситуации.

В aider мне нравится, что он хорошо работает с моими IDE, под капотом может использовать любую модель (Sonnet лучше всего на моих задачах), хорошо работает со всем кодом (под капотом - repo map на базе tree-sitter) и хорошо настраивается под меня.

В итоге ощущение как от Claude Artifacts, но в привычных IDE, без ограничений по размеру коду и библиотекам.

А что используете в разработке вы?

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Enterprise RAG Challenge - сводная таблица с результатами

Эта таблица по первому раунду нашего challenge. Она заполнена на основе оценки ответов и информации, которую предоставили участники. Последняя версия в CSV: scores.csv.

Описание колонок:
- Score - очки от 0 до 100. Ответы в результате ручной разметки лежат в answers.json. Сам алгоритм оценки - rank.py.
- Local - звездочка, если локальная модель
- Design - краткое описание архитектуры. Хотите узнать больше? См teams.py с той информацией, которую мне предоставили команды.
- Cost - примерная оценка. Ее почти никто не предоставил
- Source - те исходники, которые обещали попозже расшарить. Я опубликую ссылки на них

Дополнительные колонки для прозрачности:
- TTA - тут помечены участники, с которыми я работаю в рамках TimeToAct. Они участвовали на равных со всеми условиях, но ради прозрачности они выделены отдельно.
- AIR - кто участвует в обмене опытом в рамках AI Research или имел доступ к инсайтам на его базе (включая курс и вебинары).

Весь Github repository по этому Challenge - открытый под Apache License. Можно форкать, исправлять и публиковать свои версии лидербордов. Или даже проводить свои соревнования. Единственное, чего там нет - 45GB всех исходных PDF (есть dataset с sha1 и именами компаний). При желании их можно наскрести в интернете по именам компаний.

Кстати, этот RAG Challenge уже планируют включить в программу LLM/AI одного технического университета в Австрии. 🎉

Второй раунд состоится осенью. Структура останется той же, но будет больше участников, а генератор вопросов перебалансируется в сторону большего разнообразия. Это сделает решения "в лоб" на базе Checklist/Knowledge Mapping более дорогими. Плюс я постараюсь собрать больше информации от участников второго раунда.

Кстати, а какие пункты вы бы добавили в опросник для участников?

Вaш, @llm_under_hood 🤗

PS: Авторы наилучшего локального решения, возможно, раскроют карты и расскажут про свою архитектуру побольше.

Читать полностью…

LLM под капотом

У Claude есть замечательные Artifacts, которые позволяют писать и сразу показывать живые интерактивные интерфейсы.

Если же хочется, чтобы эти интерфейсы сразу же подключались к настоящему API (например, на localhost), то придется обойти настройки Content Security Policy на claude.ai.

Я это сделал так:
- поставил Firefox 98, отключил там автообновление (about:preferences -> search for update)
- в about:config отключил security.csp.enable (в 99 версии и старше его выпилили)

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

Отключение CSP - это небольшая дырка в безопасности, поэтому я запасную версию Firefox поставил отдельно, специально для Claude AI. Он это заслужил.

Вaш, @llm_under_hood 🤗

PS: это #weekend пост

Читать полностью…

LLM под капотом

Наглядный пример паттерна Query Expansion

Тут LLM используется для разворачивания запроса пользователя в запрос по базе данных. Запрос выполняется в БД, результат извлекается по схеме и возвращается пользователю.

Для реализации такой системы достаточно одного единственного промпта с описанием схемы БД и специфики компании.

Причем, эта реализация очень сильно выигрывает от token caching (который добавили недавно в Claude и Gemini Pro). Можно запихнуть все описание в префикс промпта, и эта часть закэшируется в первом запросе. А потом можно будет недорого и быстро задавать множестно разных вопросов по этой системе.

Кстати, Query Expansion можно еще использовать для разворачивания запросов в Full Text Search Queries (особенно, если терминология и даже язык документов отличаются от человеческой речи)

#llm_pattern

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

OpenAI Swarm - пример мультиагентной системы

OpenAI написали целую статью про организацию агентов и открыли небольшой фреймворк с примерами - Swarm.

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


refund_agent = Agent(
name="Refund Agent",
instructions="You are a refund agent. Help the user with refunds.",
tools=[execute_refund],
)

def transfer_to_refunds():
return refund_agent

sales_assistant = Agent(
name="Sales Assistant",
instructions="You are a sales assistant. Sell the user a product.",
tools=[place_order],
)


Для красоты они еще добавляют TriageAgent, который может переключать между нужными агентами:



triage_agent = Agent(
name="Triage Agent",
instructions=(
"You are a customer service bot for ACME Inc. "
"Introduce yourself. Always be very brief. "
"Gather information to direct the customer to the right department. "
"But make your questions subtle and natural."
),
tools=[transfer_to_sales_agent, transfer_to_issues_and_repairs, escalate_to_human],
)


Под капотом простой код, который конвертирует описания активных агентов в промпты, а все переключения между агентами и вызовы их инструментов упаковываются как вызовы стандартных OpenAI tools. В методичке все очень хорошо расписано, а сам код можно посмотреть на Github.

Концепция агентов - простых функций, со своим контекстом и набором инструментов работает очень хорошо. Помните, я в Марте писал про AI Ассистента для международной компании?

Там технически была как раз такая реализация, я построил Knowledge Map для продукта в виде структуры агентов и инструментов, которые необходимы для обработки запросов пользователей.

У каких-то агентов были инструменты в виде FTS поиска, какие-то знали, в каких папках искать, у третьих в контекст был встроен FAQ. А на входе стоял Triage Agent. Но тогда я еще не умел пользоваться tools/structured output, и в коде было много ненужных промптов и костылей. Сейчас это делается еще проще.

А как в ассистенте заранее знать, какие будут вопросы, чтобы подготовить армию агентов? Да просто смотреть на предметную область и задавать вопросы! В своем примере (который основывается на куче опыта) ребята из OpenAI же откуда-то узнали, что нужен TriageAgent/RepairsAgent/SaleAssistantAgent и RefundAgent?

(на самом деле паттерны повторяются из компании в компанию аналогично тому, как в компаниях повторяются должности и организационные структуры)

Кто еще смотрел этот код? Что думаете?

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Настал тот момент, когда мы замучались удалять ботов

Поэтому я попросил Claude написать мне бота, который будет верифицировать новых участников нашего чата (там уже более 1300 участников).

Бот только что вышел на стражу. В нем целых 166 строчек кода на golang. Его от Shieldy отличает то, что логику верификации теперь мы можем переписать очень быстро.

Если кто хочет - может попробовать его сломать. У вас есть одна попытка 😎

Ваш, @llm_under_hood 🤗

PS: Бот заменяет старого Shieldy и срабатывает только на момент добавления и верификации. Существующие сообщения модерируются, как и раньше, вручную. В добром чатике банят только за спам, яростный оффтопик и токсичность.

Читать полностью…

LLM под капотом

Бенчмарк Google Flash 1.5 8B - Прекрасное далеко

Помните недавно мы разбирали маленькие локальные модели от Llama 3.2, и там они прямо подвинули State-of-the-art? На этом прогресс не останавливается.

У Google стала доступна новая версия Gemini Flash 1.5 8B, и она показывает очень хорошие результаты на моих продуктовых бенчмарках . Эта модель размера 8B держится на уровне старых GPT 3.5 или Llama 3 70B. Она почти догоняет обычную 1.5 Flash по бенчмаркам.

Основной недостаток этой модели - она закрытая. Пусть размеры и известны, но скачать веса и запустить ее локально не получится.

Зато Gemini Flash 1.5 8B можно использовать очень недорого. Плюс, как это продемонстрировал сам Google - все, что сделала одна компания, другая сможет повторить. Поэтому ждем открытых моделей такого же уровня.

Кстати, официальная страница бенчмарков, наконец переехала на новое место жительства. Также там добавились бенчмарки за сентябрь и август. Начиная с сентября, таблица стала немного интерактивной - модели можно фильтровать и подсвечивать.


Ваш, @llm_under_hood 🤗

🔗 Бенчмарк GPT o1 - топовая модель
🔗 Бенчмарк Qwen 2.5 - лучшая локальная модель
🔗 Gemini 1.5 Pro 002 - внезапно третье место!


PS: Для тех, кто видит эти бенчмарки впервые, напомню - это закрытые продуктовые бенчмарки на основе набора задач из рабочих систем. Мы тестируем не то, как красиво модели болтают, а насколько качественно они выполняют конкретные задачи из продуктов с LLM под капотом. Про структуру и примеры бенчмарков можно прочитать в лабах или на официальном сайте бенчмарков.

Читать полностью…

LLM под капотом

OpenAI Canvas - аналог Claude Artifacts

OpenAI подсуетились и встроили в свой интерфейс режим Canvas. Он сильно похож на вариант от Anthropic и работает на GPT-4o.

В обоих случаях мы можем работать с текстом и кодом. ChatGPT может редактировать код, делать ревью, работать с комментариями и логами. На скриншоте пример, когда я отправил прототип golang http сервера в canvas и попросил сделать review кода.

OpenAI не поленились и вынесли отдельные операции (Code Review, Port to a language итп) прямо в кнопки в интерфейсе. Это хорошо - они наверняка отладили эти промпты на куче тестовых кейсов.

Еще можно выделить кусок текста на экране и попросить ChatGPT изменить его или объяснить. Переключение между версиями есть тоже.

В прошлом, я переключился в ряде задач с ChatGPT на Anthropic только из-за появления таких удобных Artifacts. Сейчас выглядит так, что OpenAI сделали еще больше удобных фич.

Где-то начали беспокойно шевелиться Cursor и аналоги. До их функционала Canvas еще очень далеко. Но если дело будет выгодным, OpenAI ничто не мешает расширить десктопную версию (там, говорят, Canvas уже тоже завезли), чтобы она работала с папками с кодом.

В общем, если у вас есть стартап или свой продукт - избегайте очевидных тропинок, по которым уже идет куча других компаний и могут пойти крупные игроки. Рискованное это дело. Скорость, с которой OpenAI повторили ключевой функционал Anthropic Artifacts это показывает.

Ваш, @llm_under_hood 🤗

PS: А еще Canvas удобен для работы не только с кодом, но и текстом.

Читать полностью…

LLM под капотом

Исходники 4-х решений из Enterprise RAG Challenge

Месяц назад у нас прошел первый раунд Enterprise RAG Challenge - дружеского соревнования по построению AI ассистентов на годовых отчетах компаний.

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

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

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

Если кратко:
- daniel - решение-победитель на базе checklist + structured outputs. Первое место.
- felix - multi-agent решение на базе ChatGPT-4o. Двенадцатое место.
- maria - assistants API. Тринадцатое место.
- pedro - локальное решение на базе openchat-3.5-0106. Девятое место.

Что будет дальше? Следующий раунд состоится попозже этой осенью в большем составе. Когда - сложно сказать, зависит от отдела маркетинга в TimeToAct, который сейчас очень загружен. Я бы рассчитывал на ноябрь.

Во втором раунде генератор вопросов будет перебалансирован, чтобы:
(1) было меньше вопросов без ответов (c N/A)
(2) было больше вариативности в вопросах, чтобы подход “в лоб” с checklist + structured outputs больше не мог так легко занять топовые места.

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

Ваш, @llm_under_hood 🤗

PS: Если кто-то еще из участников хочет поделиться своим кодом - шлите ссылки на гитхаб, я их добавлю в этот пост.

Читать полностью…

LLM под капотом

Бенчмарки Llama 3.2 - Так себе, но есть маленький нюанс 🤩

Meta недавно выпустила новые версии своей локальной модели Llama - 3.2.

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

Смотрим на первую таблицу:
Llama 3.2 90B Vision работает на уровне Llama 3/3.1 70B
Llama 3.2 11B Vision работает на уровне прошлых 8B

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

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

И еще есть маленький нюанс, который круче всего остального в этом релизе. Размер маленького нюанса - 1B и 3B. Эти крошки заточены на работу "on-the-edge" даже с относительно слабыми процессорами (процессоры ARM, железо Qualcomm и MediaTek). При этом у них контекст в 128K tokens, а качество и следование инструкциям на продуктовых задачах неожиданно офигенные.

Помните я говорил, что DBRX 132B Instruct - это никому не нужная ерунда? Так вот, Meta Llama 1B ее догоняет, а 3B - уделывает. В общем, смотрите сами на соседей этих моделей на второй таблице.

А ведь это еще базовые модели без тюнов. Тюны обычно повышают качество моделей Meta на этом бенчмарке еще больше.

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

Ваш, @llm_under_hood 🤗

PS: Для тех, кто видит эти бенчмарки впервые, напомню - это закрытые продуктовые бенчмарки на основе набора задач из рабочих систем. Мы тестируем не то, как красиво модели болтают, а насколько качественно они выполняют конкретные задачи из продуктов с LLM под капотом. Про структуру и примеры бенчмарков можно прочитать в лабах или на официальном сайте бенчмарков.

Читать полностью…

LLM под капотом

Gemini 1.5 Pro 002 - третье место в бенчмарке! 🚀

Ребята из Google - молодцы. Релиз за релизом они последовательно повышали качество своих моделей, как Gemini Flash, так и Gemini Pro. Последняя версия Gemini Pro заняла третье место в моем продуктовом бенчмарке. При этом она потеснила относительно бесполезный (за такие деньги) GPT o1-mini.

В Gemini 1.5 Pro v002 Google подтянули все параметры - работу с кодом, документами, маркетинговыми текстами и даже сложный Reason. Стоимость немного меньше, чем GPT-4o со второго места бенчмарка.

В нашем чатике хвалят Gemini Pro за работу с разными языками. А клиенты из Google Cloud вообще радуются тому, что у них появилась своя нормальная LLM.

Долгое время казалось, что OpenAI и Anthropic - это единственные компании, которые могут делать передовые модели. И что крупные компании слишком медленны и отсталы для этого. Google смогли доказать, что это не так. Теперь можно начинать ждать классных моделей подобного уровня от Amazon и Microsoft. А там, глядишь, начнется и конкуренция с повышением качества и снижением цен :)

В комментариях к посту еще есть график динамики прогресса моделей Google со временем (как и всех hosted моделей) и сравнительная табличка с бенчмарками для всех моделей Google.

Ваш, @llm_under_hood 🤗

🔗 Бенчмарк GPT o1 - топовая модель
🔗 Бенчмарк Qwen 2.5 - лучшая локальная модель

PS: Для тех, кто видит эти бенчмарки впервые, напомню - это закрытые продуктовые бенчмарки на основе набора задач из рабочих систем. Мы тестируем не то, как красиво модели болтают, а насколько качественно они выполняют конкретные задачи из продуктов с LLM под капотом. Про структуру и примеры бенчмарков можно прочитать в лабах или на официальном сайте бенчмарков.

Читать полностью…

LLM под капотом

Куда катится мир локальных LLM?

Вот вам график, который показывает тренды роста производительности разных локальных моделей со временем.

Я взял все локальные модели из бенчмарка (последние были про Qwen 2.5 / DeepSeek 2.5 и про GPT o1) и сгруппировал по необходимому размеру GPU для запуска.

(группировка очень примерная. Я считал, что запускается под fp16 без особых квантизаций и с запасом памяти на inference)

Потом все модели я отметил на временной шкале по дате их релиза и построил тренды (linregress). Получился такой график.

Основные тренды:
(1) Модели становятся со временем все лучше, как большие, так и маленькие.
(2) Крупные модели появляются чаще
(3) В крупных Multi-GPU моделях производительность растет быстрее, чем в мелких.

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

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Как ставить задачи по кодингу для o1?

У Игоря есть лонг-рид про принципы работы o1. Я же расскажу про ментальную модель, которую я использую для работы с o1-preview.

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

Если скоуп задачи очерчен конкретно, то можно ограничиться коротким промптом:

Rewrite this course template in golang to follow style of my own website. You can reuse all of my styles and drop the external css (as used by the course).

<golang template to rewrite>

<full html source of my website, as copied from browser>


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

В первом шаге прошу предложить варианты решений с указанием приоритетов (простой код, без башен абстракций). И вставляю сразу исходники целыми файлами, скажем, с кусками кода на vue.js + pinia + tailwind css + axios + vite + lucide + custom icon resolver + python FastAPI. o1-preview разберется.

Take a look at this code from my multi-mode (a la vim or old terminal apps) block-based content editor.

I want to build on the keyboard interface and introduce a simple way to have simple commands with small popup. E.g. after doing "A" in "view" mode, show user a popup that expects H,T,I, or V.

Or, after pressing "P" in view mode - show a small popup that has an text input waiting for the permission role for the page.

Don't implement the changes, just think through how to extend existing code to make logic like that simple.

Remember, I like simple code, I don't like spaghetti code and many small classes/files.


А вторым шагом говорю - "слушай, мне нравятся варианты 2-5, 10 и 12-16. Интегрируй их в рабочий код, чтобы мне оставалось только скопипастить"

Write me files that incorporate your suggestions: 1-6, 8,9, 12


В 95% случаях код работает сразу! Это большая экономия времени по сравнению с ручным промптингом на базе Sonnet 3.5 или топовых GPT-4

Ваш, @llm_under_hood 🤗

PS: Показатели o1 на моих продуктовых бенчмарках

Читать полностью…

LLM под капотом

Бенчмарки новых o1 моделей. Модели в топе, но есть нюанс

Новые o1 модели от OpenAI, действительно, в топе. o1-preview заняла первое место в продуктовом бенчмарке, потеснив 4o.

o1-mini - третье. Модель заняла бы больше, если бы всегда внимательно читала текст задачи, а не через раз (это видно в колонке integrate).

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

OpenAI вообще теперь рекомендует закладывать как минимум 25000 max_completion_tokens при экспериментах с этими моделями.

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

Ваш, @llm_under_hood 🤗

PS: Для тех, кто видит эти бенчмарки впервые, напомню - это закрытые продуктовые бенчмарки на основе набора задач из рабочих систем. Мы тестируем не то, как красиво модели болтают, а насколько качественно они выполняют конкретные задачи из продуктов с LLM под капотом. Про структуру и примеры бенчмарков можно прочитать в лабах или на официальном сайте бенчмарков.

Читать полностью…

LLM под капотом

Новые кейсы в библиотеке

Я сегодня получил классный отзыв!

Привет!

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

Я все прочитал. Проанализировал. Это очень мне помогло с улучшением продукта! Информация на миллиард!

Спасибо!

Большое спасибо!

А что за график и что за статьи?

График - это карта известных мне успешных реализаций проектов с LLM под капотом. Она составлена на основе AI Research и проектов TAT (это не просто список, а результат небольшого интервью в каждом случае). Иллюстрация к этому посту - состояние карты на текущий момент - начало сентября 2024.

Что изменилось в графике за последний месяц?

- Кейсы в Manufacturing (BI Assistant and Lead Generation)
- Кейс в Education (prompting)
- Два fintech кейса (customer support automation, AI coding assist)

Огромное спасибо тем, кто делится со мной кейсами. Надеюсь, что параллели и инсайты, которые вы получаете во время AI Research, стоят затраченного времени.

Я весь этот опыт перерабатываю и структурирую. Извлеченные паттерны еще раз обкатываю в своих проектах, а потом рассказываю про это в публичных кейсах.

Кстати, в закрепе канала есть список с оглавлением всех разобранных кейсов. Я этот список статей поддерживаю актуальным.

Иногда эти паттерны и инсайты обкатываются другими в своих проектах. Что-то срабатывает, что-то - не очень. Этот опыт возвращается обратно в библиотеку, а потом все снова идет по кругу. В итоге мы вместе учимся разрабатывать продукты с LLM под капотом - лучше и быстрее.

А у вас уже получалось использовать инсайты из этого канала и AI Research? Расскажете?

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Только что закончилась интересная презентация - AI Platform #aicase

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

Интеграции были простые:

BI Assistant, который умеет отвечать на бизнес-вопросы “упоротой” базе данных клиента (этой базе и всему софту - больше 20 лет, там 3 поколения разработчиков наслоили legacy на разных языках). Ассистент использует информацию о особенностях хранения данных, построения запросов и особенностей бизнеса. Я все это разузнал один раз, структурировал и забыл как страшный сон. Он строит отчеты и графики по мере необходимости. Причем в презентации я прямо сделал слайды "вопрос - график". А потом сказал, что эту часть мне написал Assistant.

Интеграция с государственными реестрами, которая вытягивает информацию о юридических лицах в стране, плюс любые изменения статусов. Благодаря первому ассистенту мы точно знаем какие коды (эквиваленты ОКВЭД) нам нужно выкачивать в первую очередь.

Поисковый lead generation ассистент, который пытается найти информацию про эти компании в интернете следуя простому Workflow. Ибо контактные данные в базе - это обычно данные бухгалтеров, а продавать нам надо другим людям.

Все это использовалось в детективном расследовании для разнообразной валидации. Не пропадать же добру?

Cегодня только что была презентация директорату со словами:
(1) вот что мы раскопали по вашим запросам
(2) вот что мы для соорудили для себя, и вот как оно работает
(3) а вот как это можно собрать в одну в AI платформу и внедрить у вас. Она может держать вашу CRM актуальной (даже AI ассистент сходу сказал, что там 6% контактов пора удалять), приводить новых лидов и помогать связываться с ними в важные для них моменты жизни.

Реакция директората: “Берем, все как вы сказали. Начните раскатывать это в друх странах, но имейте в виду, что это потом надо будет интегрировать на глобальном уровне. И позванивайте нам c апдейтами раз в месяц, хорошо?”

А что там под капотом у платформы? Какой агент, langchain или RAG? Ничего из этого не надо:

- Линейный Wokflow у Lead Generation с Checklist паттерном и интеграцией c Search API. Просто вызов OpenAI. Все как в кейсе про исправление ошибок в продуктах.
- Один структурированный промпт для BI Assistant. Я дистиллировал все информацию в формат, понятный для LLM. В процессе пришлось просто сделать схему читаемой и комментируемой (да и тем занималась LLM).
- Куча скучного кода без капли LLM для интеграции всего этого.

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

Ваш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Enterprise RAG Challenge - Round 1

Вот первые результаты нашего Enterprise RAG Challenge. Максимальное число очков - 100.

Топ победителей:
(1) Daniel Weller - 84
(2) Ilya Rice - 76
(3) Artem Nurmukhametov - 73
(4) Alexandr Bobrov - 71
(5) Anonymous 1337 - 71

Остальные участники следом идут очень плотно по очкам.

Огромное спасибо всем, кто участвовал в тестовом прогоне и деталями! На днях я выложу в открытый доступ в Github данные этого раунда:
(1) ответы всех команд
(2) правильные ответы с комментариями (результат ручной проверки и вычитки PDF)
(3) исходный код алгоритма оценки
(4) рейтинг локальных систем

Вот краткое описание топовых систем:

TTA Daniel - gpt-4o data extraction with structured outputs (bulk checklist), schema-driven question answering over checklist.

Ilya Rice - Langchain RAG with GPT-4o, Text-embedding-3-large and custom chain of thought prompts.

Artem - multi stage checklist - multo-stage checklist with Gemini Flash Experimental.

AlBo - Alexandr Bobrov. Knowledge Graph + Vector Index (Langchain, Neo4j) with GPT-4o

Anonymous 1337 - plain RAG with chunk vectorizer and LLM


Challenge вышел очень необычный - из-за дисбаланса в генераторе вопросов, было очень много вопросов без ответа. На них система должна была сознательно отвечать N/A, что сложно само по себе. Очки показывают, что участвовали системы, в которые вложили заметные усилия для обхода галлюцинаций.

В осеннем раунде я устраню этот дисбаланс и добавлю больше вариаций в генератор вопросов. Это усложнит жизнь системам на базе knowledge mapping.

Как вам этот Challenge, поделитесь впечатлениями?

Вaш, @llm_under_hood 🤗

Читать полностью…

LLM под капотом

Говорят, что в последнее время LLM становятся хуже, а развитие буксует на месте.

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

Кстати, еще видно, что прошлой зимой качество дорогих моделей у разных провайдеров проседало - сначала они выкатывали дорогие модели, потом оптимизировали их (чтобы запускать подешевле), а потом снова начинали работать над качеством.

В целом динамика очень радует - модели все ближе подбираются к потолку в 100. Причем, улучшаются не только дорогие, но и относительно дешевые!

Вaш, @llm_under_hood 🤗

PS: ответы на частые вопросы - в первом комментарии к этому посту.

Читать полностью…

LLM под капотом

Кстати, а у нашего канала еще есть свой добрый чатик на 1000 человек.

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

Он тут: @llm_driven_products

Ваш, @llm_under_hood 🤗

Читать полностью…
Подписаться на канал