✋ А нет ли такого интерфейса, чтобы можно было загружать структурированные документы, вручную определять правила сборки ChatGPT контекста по ним, а потом уже задавать вопросы?
Клиент хочет себе надежного бизнес-ассистента, как в этом кейсе, а время на разработку (в ущерб ML/LLM) тратить не хочется. Вдруг уже есть готовый интерфейс?
Допустим, я собираю идеи для поста в Twitter про продукт компании. Хочется дать ChatGPT задачу brainstorming. У меня уже есть все материалы. Причем я точно знаю, что нужно собрать, поэтому в рулетку с embeddings играть не нужно. Я хочу вручную выбрать несколько глав из базы знаний компании про: (1) маркетинг в целом (2) сам продукт (3) отрасль продукта. Потом собрать это вместе и вставить в контекст как есть.
Сейчас это все делать нужно вручную. А делиться с коллегами готовыми контекстами под задачи - вообще никак.
Никто не встречал такие продукты? Чтобы:
(1) поставил и добавил пользователей.
(2) вбил OpenAI ключ от компании.
(3) загрузил документы и проверил, как они разбились на части.
(4) набрал правил "сборки" контекстов chatGPT под задачи.
(5) передал сотрудникам в компании пользоваться и переиспользовать.
Клиент хочет себе надежного бизнес-ассистента, как в этом кейсе, а время на разработку (в ущерб ML/LLM) тратить не хочется. Вдруг уже есть готовый интерфейс?
Допустим, я собираю идеи для поста в Twitter про продукт компании. Хочется дать ChatGPT задачу brainstorming. У меня уже есть все материалы. Причем я точно знаю, что нужно собрать, поэтому в рулетку с embeddings играть не нужно. Я хочу вручную выбрать несколько глав из базы знаний компании про: (1) маркетинг в целом (2) сам продукт (3) отрасль продукта. Потом собрать это вместе и вставить в контекст как есть.
Сейчас это все делать нужно вручную. А делиться с коллегами готовыми контекстами под задачи - вообще никак.
Никто не встречал такие продукты? Чтобы:
(1) поставил и добавил пользователей.
(2) вбил OpenAI ключ от компании.
(3) загрузил документы и проверил, как они разбились на части.
(4) набрал правил "сборки" контекстов chatGPT под задачи.
(5) передал сотрудникам в компании пользоваться и переиспользовать.
Готова новая версия продуктовых бенчмарков для LLM! За каждой категорией - набор тестов на основе реальных продуктовых кейсов. Скажем, marketing - это ассистент маркетолога, а CRM - это системы исправления ошибок в каталогах продуктов.
GPT-4 лидирует, как и ожидаемо. Но у него из конкуренции только GPT-3.5 и модели меньше 13B. Это все то, что я могу запускать на своем лаптопе (как описано тут).
LLM модели покрупнее - на очереди. Как будут результаты - выложу сюда дополненный бенчмарк.
Ваш, @llm_under_hood 🤗
GPT-4 лидирует, как и ожидаемо. Но у него из конкуренции только GPT-3.5 и модели меньше 13B. Это все то, что я могу запускать на своем лаптопе (как описано тут).
LLM модели покрупнее - на очереди. Как будут результаты - выложу сюда дополненный бенчмарк.
Ваш, @llm_under_hood 🤗
🔥8👍1
Через два с половиной часа демка продукта на базе embeddings и индексов (кейс - персональный ассистент в компании).
Демку показываем на базе знаний клиента (голая выгрузка из confluence). Там данных куча, и эта вся куча - относительная каша. Причем клиент знает ее назубок, а база знаний - на немецом, который для LLM-ок не родной.
Из-за низкого качества исходной базы знаний, пришлось приложить немало усилий, чтобы начали выдаваться нормальные результаты. Посмотрим, что скажет клиент. Пожелайте удачи! :)
Ваш, @llm_under_hood 🤗
Демку показываем на базе знаний клиента (голая выгрузка из confluence). Там данных куча, и эта вся куча - относительная каша. Причем клиент знает ее назубок, а база знаний - на немецом, который для LLM-ок не родной.
Из-за низкого качества исходной базы знаний, пришлось приложить немало усилий, чтобы начали выдаваться нормальные результаты. Посмотрим, что скажет клиент. Пожелайте удачи! :)
Ваш, @llm_under_hood 🤗
🔥20
Демка продукта с ассистентом удалась! Клиент был приятно удивлен качеством ответов по базе знаний. Они хотят запустить первых пользователей как можно быстрее 🎉.
Вот вопросы, к которым готовили заранее ответы (и они все пригодились) 🤔
Q: Почему задержки при поиске в 10-20 секунд?
Потому, что при происке нам нужно обработать где-то 10-15 потенциально релевантных документов в контексте вопроса. Даже с распараллеливанием, мы упираемся в задержки и лимиты OpenAI API.
Q: Можно ли это как-то ускорить?
Да, у нас есть несколько вариантов. Если получите выделенный Azure OpenAI deployment, тогда можно использовать его для скорости. Плюс наши бенчмарки отслеживают прогресс в области локальных LLM. Как только какая-нибудь локальная LLM наберет достаточно очков в категориях
Q: Уходят ли куда-то наши данные?
Да, контекст вопроса и найденные обрезки документов уходят на Azure OpenAI в европейском регионе. Данные не используются для обучения, а доступ к ним ограничен, прямо как с Azure Cognitive services, которые вы уже используете.
Когда пересядем на локальные модели, данные будут полностью оставаться в вашем дата-центре.
Q: Есть ли какие-то ограничения по размеру поисковой базы?
Технических ограничений нет. Наш ассистент для автоматического исправления ошибок в каталогах вообще работает без проблем со всем интернетом :)
⭐️Особенности технической реализации
Нулевая версия работала на LangChain/LLamaIndex c использованием GPT-4. Это стандартный способ начать работу над продуктом: “сначала докажи, что оно может работать на лучшей модели, прежде чем вбухивать недели в модель послабее”.
Думали, что этого и хватит, но вылезли грабли:
(1) база знаний - полная каша
(2) язык - немецкий, он не родной для LLM.
(3) предметная область очень специфичная и запутанная
Простые игры с индексами, размерами chunks и прочими параметрами особо не помогали. Айгиз перебенчмаркал индексы LangChain & LLamaIndex в разных комбинациях и конфигурациях.
🔧 SBERT для embeddings
В процессе быстро уперлись в производительность OpenAI Ada embeddings и пересели на локальные sentence transformers (SBERT). С ними хорошо, и это теперь дефолтовый вариант для всех продуктов.
🔬Тестовый dataset - наше все!
К слову, разные варианты embeddings моделей и конфигураций - тоже бенчмаркали. Во всех бенчмарках помогал тестовый dataset: попросили носителя языка пройтись по базе знаний и составить список простых вопросов, которые можно использовать для оценки качества системы. Благодаря ему все изменения были целенаправленными и итеративными.
🚧 LangChain/LLamaIndex заменили
В процессе итеративных улучшений оказалось проще заменить LangChain/LLamaIndex, на нативные вызовы OpenAI completion. Из NLP библиотек только остались numpy, sentence_transformers, openai. Причем основного кода - 400 строчек, считая начинку промптов 😃
⚡ Более быстрый OpenAI - это Azure OpenAI. И меньше вызовов ChatGPT
В процессе скорости OpenAI не совсем радовала. Особенно, она проседает, когда просыпается США. Для решения проблем:
(1) добавление asynсio и распареллеливание запросов
(2) переключение на Azure OpenAI, где скорости лучше
(3) добавление document re-rank, который может быстро отфильтровывать явно “мусорные” документы. Тем самым остается меньше работы на ChatGPT.
💪 ChatGPT-3.5 Turbo - достаточно хорош
Для работы системы используется ChatGPT-3.5, а не ChatGPT-4! В итоговой системе его “грузоподъемности” хватает для прохождения тестовых бенчмарков с достаточно хорошим качеством.
Это восхитительно влияет на бюджет, скорость и стабильность работы.
---
Окончание - ниже, ибо этот пост @llm_under_hood не лезет в лимиты Telegram 🤗
Вот вопросы, к которым готовили заранее ответы (и они все пригодились) 🤔
Q: Почему задержки при поиске в 10-20 секунд?
Потому, что при происке нам нужно обработать где-то 10-15 потенциально релевантных документов в контексте вопроса. Даже с распараллеливанием, мы упираемся в задержки и лимиты OpenAI API.
Q: Можно ли это как-то ускорить?
Да, у нас есть несколько вариантов. Если получите выделенный Azure OpenAI deployment, тогда можно использовать его для скорости. Плюс наши бенчмарки отслеживают прогресс в области локальных LLM. Как только какая-нибудь локальная LLM наберет достаточно очков в категориях
Docs и Reason для вашего языка, мы сможем все запустить локально на GPU. Embeddings уже работают локальные.Q: Уходят ли куда-то наши данные?
Да, контекст вопроса и найденные обрезки документов уходят на Azure OpenAI в европейском регионе. Данные не используются для обучения, а доступ к ним ограничен, прямо как с Azure Cognitive services, которые вы уже используете.
Когда пересядем на локальные модели, данные будут полностью оставаться в вашем дата-центре.
Q: Есть ли какие-то ограничения по размеру поисковой базы?
Технических ограничений нет. Наш ассистент для автоматического исправления ошибок в каталогах вообще работает без проблем со всем интернетом :)
⭐️Особенности технической реализации
Нулевая версия работала на LangChain/LLamaIndex c использованием GPT-4. Это стандартный способ начать работу над продуктом: “сначала докажи, что оно может работать на лучшей модели, прежде чем вбухивать недели в модель послабее”.
Думали, что этого и хватит, но вылезли грабли:
(1) база знаний - полная каша
(2) язык - немецкий, он не родной для LLM.
(3) предметная область очень специфичная и запутанная
Простые игры с индексами, размерами chunks и прочими параметрами особо не помогали. Айгиз перебенчмаркал индексы LangChain & LLamaIndex в разных комбинациях и конфигурациях.
🔧 SBERT для embeddings
В процессе быстро уперлись в производительность OpenAI Ada embeddings и пересели на локальные sentence transformers (SBERT). С ними хорошо, и это теперь дефолтовый вариант для всех продуктов.
🔬Тестовый dataset - наше все!
К слову, разные варианты embeddings моделей и конфигураций - тоже бенчмаркали. Во всех бенчмарках помогал тестовый dataset: попросили носителя языка пройтись по базе знаний и составить список простых вопросов, которые можно использовать для оценки качества системы. Благодаря ему все изменения были целенаправленными и итеративными.
🚧 LangChain/LLamaIndex заменили
В процессе итеративных улучшений оказалось проще заменить LangChain/LLamaIndex, на нативные вызовы OpenAI completion. Из NLP библиотек только остались numpy, sentence_transformers, openai. Причем основного кода - 400 строчек, считая начинку промптов 😃
⚡ Более быстрый OpenAI - это Azure OpenAI. И меньше вызовов ChatGPT
В процессе скорости OpenAI не совсем радовала. Особенно, она проседает, когда просыпается США. Для решения проблем:
(1) добавление asynсio и распареллеливание запросов
(2) переключение на Azure OpenAI, где скорости лучше
(3) добавление document re-rank, который может быстро отфильтровывать явно “мусорные” документы. Тем самым остается меньше работы на ChatGPT.
💪 ChatGPT-3.5 Turbo - достаточно хорош
Для работы системы используется ChatGPT-3.5, а не ChatGPT-4! В итоговой системе его “грузоподъемности” хватает для прохождения тестовых бенчмарков с достаточно хорошим качеством.
Это восхитительно влияет на бюджет, скорость и стабильность работы.
---
Окончание - ниже, ибо этот пост @llm_under_hood не лезет в лимиты Telegram 🤗
🔥7❤1👍1
Окончание поста. Начало - выше.
📚Структурирование баз знаний - наше все!
Единственный секрет качества в том, что выгрузку из базы знаний сконвертировали в что-то вроде графа, используя логические связи по заголовкам текста. Страница содержит все заголовки. H1 содержит текст и все заголовки ниже, итп.
При поиске по embeddings достаем фрагменты, по фрагментам находим релевантные части документов для контекста. ❗️ Достаем не страницы целиком (много слов) и не голые chunks с обрывом слов! А просто цельные части документа, содержащие самый релевантный контекст.
А потом все найденное “тащим” в document rerank + синтез ответа при помощи ChatGPT. Результат выводится клиенту в интерфейса чата - синтезированный ответ, исходные фрагменты и ссылки на оригиналы в Confluence.
Итог
В итоге получилась работающая система "умного поиска" по запутанной базе знаний (из confluence) на немецком языке. Клиент демке порадовался, а если получится запустить первых пользователей на этой неделе - будет доволен вдвойне 💫
И все это сложилось вместе благодаря тестовому набору вопросов. Благодаря им получалось оценивать качество системы и последовательно улучшать его. Заводите бенчмарки качества для своих продуктов как можно раньше! В идеале, до написания первой строчки кода. Оно реально экономит время и силы💪
Ваш, @llm_under_hood 🤗
📚Структурирование баз знаний - наше все!
Единственный секрет качества в том, что выгрузку из базы знаний сконвертировали в что-то вроде графа, используя логические связи по заголовкам текста. Страница содержит все заголовки. H1 содержит текст и все заголовки ниже, итп.
При поиске по embeddings достаем фрагменты, по фрагментам находим релевантные части документов для контекста. ❗️ Достаем не страницы целиком (много слов) и не голые chunks с обрывом слов! А просто цельные части документа, содержащие самый релевантный контекст.
А потом все найденное “тащим” в document rerank + синтез ответа при помощи ChatGPT. Результат выводится клиенту в интерфейса чата - синтезированный ответ, исходные фрагменты и ссылки на оригиналы в Confluence.
Итог
В итоге получилась работающая система "умного поиска" по запутанной базе знаний (из confluence) на немецком языке. Клиент демке порадовался, а если получится запустить первых пользователей на этой неделе - будет доволен вдвойне 💫
И все это сложилось вместе благодаря тестовому набору вопросов. Благодаря им получалось оценивать качество системы и последовательно улучшать его. Заводите бенчмарки качества для своих продуктов как можно раньше! В идеале, до написания первой строчки кода. Оно реально экономит время и силы💪
Ваш, @llm_under_hood 🤗
🔥17❤2👍1
Сейчас у OpenAI & Azure острая нехватка GPU для inference. Они либо ежедневно просаживаются под нагрузкой от спроса, либо отказываются от запуска новых пользователей в waitlists (подробности в прошлом англоязычном newsletter).
А продукты надо пилить и релизить на практике, так? Поэтому:
1️⃣ Берем талончики и встаем во все возможные waitlists заранее и про запас. Это будет план B. Ссылки:
• GPT-4 at OpenAI
• GPT-4 at Azure OpenAI
• Claude at Anthropic
• AWS Bedrock (там тоже обещали Claude завезти).
2️⃣ Ответа не ждем, а заранее собираем datasets для тестирования своих продуктов. Чтобы быть оценивать возможность замены GPT-3/4 на локальные language models. Это будет план A.
Если у кого есть вопросы насчет портирования продуктов между LLM/GPT моделями, айда в комменты! Я туда попозже еще скину последний отчет нашего продуктового бенчмарка моделей, и можно будет обсудить.
Ваш, @llm_under_hood 🤗
А продукты надо пилить и релизить на практике, так? Поэтому:
1️⃣ Берем талончики и встаем во все возможные waitlists заранее и про запас. Это будет план B. Ссылки:
• GPT-4 at OpenAI
• GPT-4 at Azure OpenAI
• Claude at Anthropic
• AWS Bedrock (там тоже обещали Claude завезти).
2️⃣ Ответа не ждем, а заранее собираем datasets для тестирования своих продуктов. Чтобы быть оценивать возможность замены GPT-3/4 на локальные language models. Это будет план A.
Если у кого есть вопросы насчет портирования продуктов между LLM/GPT моделями, айда в комменты! Я туда попозже еще скину последний отчет нашего продуктового бенчмарка моделей, и можно будет обсудить.
Ваш, @llm_under_hood 🤗
🔥8🤩1
Каналы, чтобы держать нос по ветру
⁃ Kumar & Solo - фигачат свою компанию, как data-driven продукт 🤩
⁃ Стартап дня. Один пост - один стартап. Иногда попадаются интересные.
⁃ addmeto и TechSparks - интересные IT новости в целом
⁃ Сиолошная - IT новости с уклоном в NLP/VR и космос
⁃ NLP и Better Data Community/NLP - технические чаты, где очень много спецов
⁃ Langchain Developers Chat - про продукты на базе LangChain. Душевные и качественные обсуждения
⁃ gonzo-обзоры ML статей
Есть еще прикольные каналы?
⁃ Kumar & Solo - фигачат свою компанию, как data-driven продукт 🤩
⁃ Стартап дня. Один пост - один стартап. Иногда попадаются интересные.
⁃ addmeto и TechSparks - интересные IT новости в целом
⁃ Сиолошная - IT новости с уклоном в NLP/VR и космос
⁃ NLP и Better Data Community/NLP - технические чаты, где очень много спецов
⁃ Langchain Developers Chat - про продукты на базе LangChain. Душевные и качественные обсуждения
⁃ gonzo-обзоры ML статей
Есть еще прикольные каналы?
🔥6👍2
Завтра выкатываем ассистента компании пользователям!
В среду была демка продукта MVP клиенту. Как я уже писал, клиент захотел поскорее выкатить первым пользователям, чтобы начать собирать feedback. Поэтому прототип сегодня довели до состояния “можно пускать пользователей”, и “само падать не должно” 🤓
Что эта “доводка” включала в себя:
(1) Нормальное логгирование всех запросов/ответов (структурированные логи в файлах - минимально и достаточно)
(2) Кнопки сбора отзывов: 👍 👎
(3) Чтобы сервер не выключался по расписанию каждый вечер :D
А вот переносить вызовы GPT с OpenAI на Azure OpenAI не стали. Но не потому, что код сложный, а из-за оптимизаций и тормозов.
Выяснилось, что Айгиз умудрился оптимизировать работу системы настолько, что ей для работы нужна уже не GPT-4, а достаточна GPT-3.5 🤯 Это значит, что система работает быстрее, дешевле и надежнее!
При этом использовалась новая версия модели gpt-3.5 с максимальным контекстом в 16k. Она оказалась очень хороша и удобна для задач information retrierval. 😎
Но есть нюанс. Оказывается, на Azure OpenAI такое пока не завезли. Microsoft пока не говорит даже примерной даты 🐌
Так что тут было три варианта:
(1) переписать все на маленький gpt-3 - непонятные сроки и риски;
(2) переключить на gpt-4-32k, что сделало бы систему раз в 10 медленнее (она и так не очень быстра), а стоимость каждого запроса подняла до 1-2 евро;
(3) ничего не делать и остаться на OpenAI, пока Azure не выкатит gpt-3-16k у себя.
В итоге клиент принял правильное решение - оставить пока прототип как есть. Завтра они смогут запустить первых пользователей, а я - переключиться на обработку отзывов по ассистенту маркетолога
Ваш, @llm_under_hood 🤗
PS: кстати, скриншот интерфейса - в комментариях.
В среду была демка продукта MVP клиенту. Как я уже писал, клиент захотел поскорее выкатить первым пользователям, чтобы начать собирать feedback. Поэтому прототип сегодня довели до состояния “можно пускать пользователей”, и “само падать не должно” 🤓
Что эта “доводка” включала в себя:
(1) Нормальное логгирование всех запросов/ответов (структурированные логи в файлах - минимально и достаточно)
(2) Кнопки сбора отзывов: 👍 👎
(3) Чтобы сервер не выключался по расписанию каждый вечер :D
А вот переносить вызовы GPT с OpenAI на Azure OpenAI не стали. Но не потому, что код сложный, а из-за оптимизаций и тормозов.
Выяснилось, что Айгиз умудрился оптимизировать работу системы настолько, что ей для работы нужна уже не GPT-4, а достаточна GPT-3.5 🤯 Это значит, что система работает быстрее, дешевле и надежнее!
При этом использовалась новая версия модели gpt-3.5 с максимальным контекстом в 16k. Она оказалась очень хороша и удобна для задач information retrierval. 😎
Но есть нюанс. Оказывается, на Azure OpenAI такое пока не завезли. Microsoft пока не говорит даже примерной даты 🐌
Так что тут было три варианта:
(1) переписать все на маленький gpt-3 - непонятные сроки и риски;
(2) переключить на gpt-4-32k, что сделало бы систему раз в 10 медленнее (она и так не очень быстра), а стоимость каждого запроса подняла до 1-2 евро;
(3) ничего не делать и остаться на OpenAI, пока Azure не выкатит gpt-3-16k у себя.
В итоге клиент принял правильное решение - оставить пока прототип как есть. Завтра они смогут запустить первых пользователей, а я - переключиться на обработку отзывов по ассистенту маркетолога
Ваш, @llm_under_hood 🤗
PS: кстати, скриншот интерфейса - в комментариях.
🔥11👍1
Как и обещал, небольшой update по LLM бенчмаркам. В отличие от HuggingFace/Lmsys, у нас измеряется не абстрактный accuracy, а способность модели выполнять ту или иную задачу в продукте. Оценка считается по нескольким категориям:
- docs - работа с большими документами и базами знаний
- crm - для работы с каталогами продуктов и маркетплейсами
- integrate - интеграция со сторонними апишками, сервисами и плагинами
- marketing - способность работать как ассистент маркетолога - brainstorming, idea refinement, text generation
- reason - насколько хорошо с логикой в рамках предоставленного контекста
- code - работа с кодом
- final - общий рейтинг модели
Внутри каждой категории - набор бенчмарков, которые "выдрали" из реальных продуктов.
Пока с отрывом лидирует chat-gpt, но, думаю, скоро ансамбль из обученных моделей сможет ему составить неплохую конкуренцию.
Update: бенчмарк с ансамблем.
Ваш, @llm_under_hood 🤗
- docs - работа с большими документами и базами знаний
- crm - для работы с каталогами продуктов и маркетплейсами
- integrate - интеграция со сторонними апишками, сервисами и плагинами
- marketing - способность работать как ассистент маркетолога - brainstorming, idea refinement, text generation
- reason - насколько хорошо с логикой в рамках предоставленного контекста
- code - работа с кодом
- final - общий рейтинг модели
Внутри каждой категории - набор бенчмарков, которые "выдрали" из реальных продуктов.
Пока с отрывом лидирует chat-gpt, но, думаю, скоро ансамбль из обученных моделей сможет ему составить неплохую конкуренцию.
Update: бенчмарк с ансамблем.
Ваш, @llm_under_hood 🤗
🔥6👍1
Claude появилась у нас в продуктовых LLM бенчмарках! И сразу поднялась на второе место, а ее instant версия - на четвертое место 🎉
Спасибо Дмитрию (@Dimasfer) за ключик Anthropic для тестирования! 🙏
Подробнее про бенчмарки - в предыдущем посте.
Ваш, @llm_under_hood 🤗
PS: Большой Falcon на очереди, как и новая Vicuna 1.3. Там еще с интеграцией поработать придется.
Спасибо Дмитрию (@Dimasfer) за ключик Anthropic для тестирования! 🙏
Подробнее про бенчмарки - в предыдущем посте.
Ваш, @llm_under_hood 🤗
PS: Большой Falcon на очереди, как и новая Vicuna 1.3. Там еще с интеграцией поработать придется.
👍8🔥2
В LLM Product Leaderboard добавили Luminous от AlephAlpha.
Luminous - это европейский ответ на Chat GPT. По очкам
Еще добавили "open ensemble". Если верить слухам, то ChatGPT-4 - это aнсамбль из 8 экспертов, а чем локальные модели хуже?
open ensemble - в каждой категории берем лучшую не проприетарную модель (которую можно запустить локально), и используем ее результаты.
Понятно, что результаты "open ensemble" высосаны из пальца, но позволяют прикинуть потенциал использования под задачи лучших в своем классе моделей.
А сам leaderboard основан на бенчмарках, которые были "выдраны" из реальных продуктов. Чем лучше очки в категории, тем лучше модель справляется с какой-то задачей, которая важна для пользователей.
Ваш, @llm_under_hood 🤗
Luminous - это европейский ответ на Chat GPT. По очкам
luminuous-extended-control пока даже хуже, чем vicuna 13B. Еще добавили "open ensemble". Если верить слухам, то ChatGPT-4 - это aнсамбль из 8 экспертов, а чем локальные модели хуже?
open ensemble - в каждой категории берем лучшую не проприетарную модель (которую можно запустить локально), и используем ее результаты.
Понятно, что результаты "open ensemble" высосаны из пальца, но позволяют прикинуть потенциал использования под задачи лучших в своем классе моделей.
А сам leaderboard основан на бенчмарках, которые были "выдраны" из реальных продуктов. Чем лучше очки в категории, тем лучше модель справляется с какой-то задачей, которая важна для пользователей.
Ваш, @llm_under_hood 🤗
👍9🔥3
Перекличка! 🙌
В нашем чатике собралось много специалистов (из 170 подписчиков канала “LLM под капотом” 110 добавились прямо в чат).
Давайте представимся и познакомимся в комментариях:
(1) кто вы и чем занимаетесь?
(2) на каких кейсах специализируетесь?
(3) какие услуги вы предлагаете?
Обо мне:
Я - Ринат Абдуллин, технический консультант, помогаю запускать продукты с ML/LLM.
Я созваниваюсь с командами раз в неделю, делюсь деталями реализации фич с LLM, рассказываю про старые грабли и новые инсайты. Это позволяет командам значительно сокращать время и расходы на разработку, быстрее выкатывая продукт на рынок.
Я работал с разными командами, начиная с небольших BigData/SaaS стартапов и до запуска отдела Data Science в международной транспортной компании. Cайт, twitter, LinkedIn.
Сейчас я веду 7 кейсов продуктов на базе LLM (Q&A системы и ассистенты для компаний), делясь опытом здесь в канале. А еще отвечаю за ML & Innovation в Trustbit, веду LLM Product Leaderboard и публикую newsletter для англоязычной аудитории.
Чем занимаетесь Вы? 🤗
В нашем чатике собралось много специалистов (из 170 подписчиков канала “LLM под капотом” 110 добавились прямо в чат).
Давайте представимся и познакомимся в комментариях:
(1) кто вы и чем занимаетесь?
(2) на каких кейсах специализируетесь?
(3) какие услуги вы предлагаете?
Обо мне:
Я - Ринат Абдуллин, технический консультант, помогаю запускать продукты с ML/LLM.
Я созваниваюсь с командами раз в неделю, делюсь деталями реализации фич с LLM, рассказываю про старые грабли и новые инсайты. Это позволяет командам значительно сокращать время и расходы на разработку, быстрее выкатывая продукт на рынок.
Я работал с разными командами, начиная с небольших BigData/SaaS стартапов и до запуска отдела Data Science в международной транспортной компании. Cайт, twitter, LinkedIn.
Сейчас я веду 7 кейсов продуктов на базе LLM (Q&A системы и ассистенты для компаний), делясь опытом здесь в канале. А еще отвечаю за ML & Innovation в Trustbit, веду LLM Product Leaderboard и публикую newsletter для англоязычной аудитории.
Чем занимаетесь Вы? 🤗
🔥13👍5❤4
Новая модель LongChat с контекстом в 16k!
Её выпустили LMSYS, которые раньше сделали Vicuña.
Говорят, что качество сравнимо с Vicuña. Примерная стоимость обучения моделей с нуля на A100 за $300 + $700 (7B и 13B)
https://lmsys.org/blog/2023-06-29-longchat/
Её выпустили LMSYS, которые раньше сделали Vicuña.
Говорят, что качество сравнимо с Vicuña. Примерная стоимость обучения моделей с нуля на A100 за $300 + $700 (7B и 13B)
https://lmsys.org/blog/2023-06-29-longchat/
🔥7👍5
Про внедрение маркетингового ассистента, с раскрытием секретов 🤗
Описание кейса тут: кейс 👈
В прошлый четверг у меня дошли руки обработать отзывы клиента. Клиент был рад, но хотел "дообучить ассистента под себя":
(1) чтобы ассистент мог писать статьи по бОльшему числу отраслей и продуктов
(2) прокачки стиля письма ассистента в том, какие он слова использует (меньше продажного сленга и более уверенный тон), как говорит про компанию (что это надежный партнер с долгой историей на рынке), как описывает продукты.
В прошлый четверг, я улучшил прототип, "написал" пачку новых статей и отправил для проверки.
Как улучшал? 👨🏻💻
Сначала собрал документы про новую отрасль и продукты. Отрасль и продукты взял из маркетинговых материалов. Сконвертировал Product sheets в текстовый формат для удобства LLM. Докинул еще пару комментариев от экспертов, пометив их для системы как "важно!"
Все это я добавил в базу знаний и разметил. И сразу пометил новые секции для использования на этапах brainstorming / draft (этапы показаны на схеме)
Потом завел в базе знаний новую секцию про "company voice", куда практически 1 в 1 скопировал пожелания клиента. Пометил эту секцию для использования в написании финального текста.
После того, как я прогнал цикл написания статей пару раз, увидел, что тексты стали лучше, но агент порывается втюхивать 🛑 Втюхивать нам не надо!
Поскольку информация достается не через embeddings/векторы, а по жестким правилам, то проблема явно была в недостаточно четких указаниях.
Поэтому я просто дописал в секцию company voice:
(1) не обращайся к аудитории напрямую
(2) не дави на эмоции
(3) не используй такие слова (список)
Ну и в поставку задачи для этапа написания переписал описание роли. Вместо "самый лучший продажник" - "уверенный специалист, который информирует долгосрочных партнеров о продуктах". И оно сработало.
Результат: клиент очень рад результатам, говорит про milestone и хочет выкатить поскорее у себя.
Cамый прикол в том, что этот milestone был сделан за 2 часа в сумме. 🤪
И это очень круто. LLM - это рычаг, который во много раз увеличивает производительность:
(1) на этапе разработки - минимум кода, просто вставить информацию в базу знаний и разметить ее
(2) на этапе использования - задачи, которые отдел маркетинга клиента делал годы, теперь можно сделать за недели.
Пользуйтесь этим рычагом! 💪
Ваш, @llm_under_hood 🤗
Описание кейса тут: кейс 👈
В прошлый четверг у меня дошли руки обработать отзывы клиента. Клиент был рад, но хотел "дообучить ассистента под себя":
(1) чтобы ассистент мог писать статьи по бОльшему числу отраслей и продуктов
(2) прокачки стиля письма ассистента в том, какие он слова использует (меньше продажного сленга и более уверенный тон), как говорит про компанию (что это надежный партнер с долгой историей на рынке), как описывает продукты.
В прошлый четверг, я улучшил прототип, "написал" пачку новых статей и отправил для проверки.
Как улучшал? 👨🏻💻
Сначала собрал документы про новую отрасль и продукты. Отрасль и продукты взял из маркетинговых материалов. Сконвертировал Product sheets в текстовый формат для удобства LLM. Докинул еще пару комментариев от экспертов, пометив их для системы как "важно!"
Все это я добавил в базу знаний и разметил. И сразу пометил новые секции для использования на этапах brainstorming / draft (этапы показаны на схеме)
Потом завел в базе знаний новую секцию про "company voice", куда практически 1 в 1 скопировал пожелания клиента. Пометил эту секцию для использования в написании финального текста.
После того, как я прогнал цикл написания статей пару раз, увидел, что тексты стали лучше, но агент порывается втюхивать 🛑 Втюхивать нам не надо!
Поскольку информация достается не через embeddings/векторы, а по жестким правилам, то проблема явно была в недостаточно четких указаниях.
Поэтому я просто дописал в секцию company voice:
(1) не обращайся к аудитории напрямую
(2) не дави на эмоции
(3) не используй такие слова (список)
Ну и в поставку задачи для этапа написания переписал описание роли. Вместо "самый лучший продажник" - "уверенный специалист, который информирует долгосрочных партнеров о продуктах". И оно сработало.
Результат: клиент очень рад результатам, говорит про milestone и хочет выкатить поскорее у себя.
Cамый прикол в том, что этот milestone был сделан за 2 часа в сумме. 🤪
И это очень круто. LLM - это рычаг, который во много раз увеличивает производительность:
(1) на этапе разработки - минимум кода, просто вставить информацию в базу знаний и разметить ее
(2) на этапе использования - задачи, которые отдел маркетинга клиента делал годы, теперь можно сделать за недели.
Пользуйтесь этим рычагом! 💪
Ваш, @llm_under_hood 🤗
👍19🔥4
Надоели галлюцинации? 😵
Клиент спросил, как с ними бороться, и вот что мы вместе сделали.
Продукт - площадка для продажи товаров. Что-то вроде специализированного аналога ebay/Avito/WillHaben. При выкладывании товаров, продавцам надо заполнять описание, выбирать категорию и подкатегорию. От правильного заполнения много зависит.
Но люди могут делать ошибки или просто отваливаться на этом этапе. И то и другое - плохо.
Поэтому решили сделать так - пусть пользователь загрузит фотографии и напишет пару слов от себя, а мы категорию предзаполним сами.
Естественно начинали с тестовых наборов данных. На цифрах все было достаточно неплохо.
Пока не стали измерять галлюцинации - сколько подкатегорий ChatGPT выдумывает вместо того, чтобы брать из предложенного списка. Вот тут и всплыла печалька.
Что делать? Слушать модель!
Галлюцинации моделей - это полезная штука. Они показывают области, где модель выходит за рамки комфорта и начинает придумывать что-то свое. Такое происходит, когда в контекст подается слишком мало необходимой информации. Модель в таких случаях пытается угодить человеку. Она начинает “заполнять пробелы” за счет своей памяти, которая осталась от обучения и fine-tuning. Вот только эта память - как JPEG с максимальным сжатием, дырявая и порождает артифакты.
Ситуация становится хуже, если в контекст попадает нерелевантная информация. Модель начнет и ее притягивать за уши, умножая галлюцинации.
Поэтому, если видим галлюцинации, то начинаем смотреть на контекст - упрощать, уменьшать количество концепций и улучшать соотношение signal/noise.
Возвращаясь к нашему случаю, именно это я и сделал. Выкинул пару ненужных концепций, превратил дерево категорий в простой список и подчеркнул важность следования ему.
В процессе итераций над системой промптов я постоянно прогонял через них тестовый датасет, чтобы контроллировать качество на каждом этапе. В результате я снизил клиенту количество галлюцинаций с 63.6% до 1%
Поэтому, если видите много галлюцинаций на выходе из промпта, начинайте смотреть заполнение контекста. Это просто модель так сообщает, что слишком мало релевантной информации ей дают.
Ваш, @llm_under_hood 🤗
#клиентспросил
Клиент спросил, как с ними бороться, и вот что мы вместе сделали.
Продукт - площадка для продажи товаров. Что-то вроде специализированного аналога ebay/Avito/WillHaben. При выкладывании товаров, продавцам надо заполнять описание, выбирать категорию и подкатегорию. От правильного заполнения много зависит.
Но люди могут делать ошибки или просто отваливаться на этом этапе. И то и другое - плохо.
Поэтому решили сделать так - пусть пользователь загрузит фотографии и напишет пару слов от себя, а мы категорию предзаполним сами.
Естественно начинали с тестовых наборов данных. На цифрах все было достаточно неплохо.
Subcategory guessed right: 66.7%
Subcategory is within 3 options: 90.9%Пока не стали измерять галлюцинации - сколько подкатегорий ChatGPT выдумывает вместо того, чтобы брать из предложенного списка. Вот тут и всплыла печалька.
Hallucinated categories: 63.6%
Что делать? Слушать модель!
Галлюцинации моделей - это полезная штука. Они показывают области, где модель выходит за рамки комфорта и начинает придумывать что-то свое. Такое происходит, когда в контекст подается слишком мало необходимой информации. Модель в таких случаях пытается угодить человеку. Она начинает “заполнять пробелы” за счет своей памяти, которая осталась от обучения и fine-tuning. Вот только эта память - как JPEG с максимальным сжатием, дырявая и порождает артифакты.
Ситуация становится хуже, если в контекст попадает нерелевантная информация. Модель начнет и ее притягивать за уши, умножая галлюцинации.
Поэтому, если видим галлюцинации, то начинаем смотреть на контекст - упрощать, уменьшать количество концепций и улучшать соотношение signal/noise.
Возвращаясь к нашему случаю, именно это я и сделал. Выкинул пару ненужных концепций, превратил дерево категорий в простой список и подчеркнул важность следования ему.
В процессе итераций над системой промптов я постоянно прогонял через них тестовый датасет, чтобы контроллировать качество на каждом этапе. В результате я снизил клиенту количество галлюцинаций с 63.6% до 1%
Subcategory guessed right: 76.9%
Subcategory is within 3 options: 86.2%
Hallucinations: 1.0%
Поэтому, если видите много галлюцинаций на выходе из промпта, начинайте смотреть заполнение контекста. Это просто модель так сообщает, что слишком мало релевантной информации ей дают.
Ваш, @llm_under_hood 🤗
#клиентспросил
🔥16👍3
Кто как запускает LLM? Опрос!
Anonymous Poll
31%
На GPU/TPU
16%
На CPU
32%
Cервисы и API
35%
Просто показать результаты
👍2
GPT-4 Code Interpreter - это нечто 🤯
Это как Jupiter Notebook вместе с Junior Data Scientist, который послушно выполняет указания. График в начале - это его ответ на мой вопрос.
Я задал такой вопрос, и ChatGPT довел его до конца с первого раза!
По пути он споткнулся об exception с datetime, сам перед собой извинился, поправил и пошёл дальше. В итоге он выдал мне готовый график.
Теперь вместо возни с юпитером буду мелкие datasets загружать в ChatGPT и просить «сделай мне красивый анализ»
Это как Jupiter Notebook вместе с Junior Data Scientist, который послушно выполняет указания. График в начале - это его ответ на мой вопрос.
Я задал такой вопрос, и ChatGPT довел его до конца с первого раза!
Generate a simple SQLite schema for an online store, fill it with a realistic sample data using a generator. Then come up with a way to analyze that data with a query. Compute the answer and plot results beautifully. Add to the plot big noscript "Sample Plot Made by GPT-4 with Code Interpreter".
По пути он споткнулся об exception с datetime, сам перед собой извинился, поправил и пошёл дальше. В итоге он выдал мне готовый график.
Теперь вместо возни с юпитером буду мелкие datasets загружать в ChatGPT и просить «сделай мне красивый анализ»
🔥7👍1
Как зайти в LLM/GPT программисту?
Вышла обзорная статья от участницы нашего чата - tigris. Там и про нас говорится)
Пожалуйста, читайте и комментируйте, чтобы мотивировать её на написание более детальных статей и кукбуков! 😉
https://habr.com/ru/companies/ascon/articles/745594/
Вышла обзорная статья от участницы нашего чата - tigris. Там и про нас говорится)
Пожалуйста, читайте и комментируйте, чтобы мотивировать её на написание более детальных статей и кукбуков! 😉
https://habr.com/ru/companies/ascon/articles/745594/
Хабр
Generative AI. Как программистам держать нос по ветру
Вряд ли найдётся тот, кто ещё не знаком с ChatGPT, Midjourney, StableDiffusion — такая популярность говорит сама за себя. Хайп вокруг генеративного искусственного интеллекта...
🎉9👍2🤗1
Как определить, что проект использует LangChain? 😉
Он не может по статье про Bitcoin ответить на вопрос "How is the work by "R.C. Merkle" used in this paper?"
Он не может по статье про Bitcoin ответить на вопрос "How is the work by "R.C. Merkle" used in this paper?"
🤔6
Словарик для разработки продуктов с LLM
В работе с клиентами у нас выработалась своя терминология. Она помогает точнее доносить идеи между командами и меньше путаться. Плюс код становится понятнее всем (спасибо Эрику Эвансу за Domain-Driven Design 🙏).
Привожу тут краткий словарик. Иллюстрация в комментах.
Контекст: Я работаю с продуктами, у которых под капотом не только LLM, но и большой набор данных. Еще не Big data, но в LLM на вход уже не влезает.
Поэтому в основе всегда лежат структурированные данные (structured data). Тут содержится вся информация, которую процесс с LLM должен учитывать при выполнении задачи. Например, это могут быть большие PDF, выгрузки из Confluence и истории переписок с клиентами.
Навыки (AI Skills) - это то, что делает конкретную работу. Обычно это цепочки GPT/LLM промптов, которые заточены на выполнение конкретных задач. Навыки достают релевантную информацию для выполнения задач выполнения. В отличие от агентов, навыки более специализированы, хорошо тестируются и легче отлаживаются.
(но ничто не мешает собрать дерево из специализированных навыков)
В теории, результаты работы системы с LLM под капотом могут быть достаточно хороши. Но это до выкатывания системы в продакшн в реальный мир к живым пользователям. Тут-то и начинают случаться нежданчики 🤣
Реальный мир - это то, что наглядно показывает различие между практикой и теорией.
В этот момент появляется обратная связь (feedback), которая поможет сделать продукт дальше. Собирайте все, начиная от лайков/дислайков, до сообщений с жалобами и метрик из бизнеса.
Feedback лучше полуавтоматически обрабатывать и интегрировать в structured data. Ваши разработчики получат новую информацию, которую позволит улучшить систему на следующей итерации разработки. Так система будет расти и развиваться.
Улучшаем, выкатываем и сообщаем пользователям про это.
Процесс можно повторять быстрыми итерациями (rapid iterations) до тех пор, пока реальное качество работы системы не достигнет желаемого уровня.
👋 А какие специфичные термины используете вы?
Ваш, @llm_under_hood 🤗
PS: Я не умею добавлять картинки в ТГ так, чтобы текст не сужало. Поэтому иллюстрация к посту - в комментах.
В работе с клиентами у нас выработалась своя терминология. Она помогает точнее доносить идеи между командами и меньше путаться. Плюс код становится понятнее всем (спасибо Эрику Эвансу за Domain-Driven Design 🙏).
Привожу тут краткий словарик. Иллюстрация в комментах.
Контекст: Я работаю с продуктами, у которых под капотом не только LLM, но и большой набор данных. Еще не Big data, но в LLM на вход уже не влезает.
Поэтому в основе всегда лежат структурированные данные (structured data). Тут содержится вся информация, которую процесс с LLM должен учитывать при выполнении задачи. Например, это могут быть большие PDF, выгрузки из Confluence и истории переписок с клиентами.
Навыки (AI Skills) - это то, что делает конкретную работу. Обычно это цепочки GPT/LLM промптов, которые заточены на выполнение конкретных задач. Навыки достают релевантную информацию для выполнения задач выполнения. В отличие от агентов, навыки более специализированы, хорошо тестируются и легче отлаживаются.
(но ничто не мешает собрать дерево из специализированных навыков)
В теории, результаты работы системы с LLM под капотом могут быть достаточно хороши. Но это до выкатывания системы в продакшн в реальный мир к живым пользователям. Тут-то и начинают случаться нежданчики 🤣
Реальный мир - это то, что наглядно показывает различие между практикой и теорией.
В этот момент появляется обратная связь (feedback), которая поможет сделать продукт дальше. Собирайте все, начиная от лайков/дислайков, до сообщений с жалобами и метрик из бизнеса.
Feedback лучше полуавтоматически обрабатывать и интегрировать в structured data. Ваши разработчики получат новую информацию, которую позволит улучшить систему на следующей итерации разработки. Так система будет расти и развиваться.
Улучшаем, выкатываем и сообщаем пользователям про это.
Процесс можно повторять быстрыми итерациями (rapid iterations) до тех пор, пока реальное качество работы системы не достигнет желаемого уровня.
👋 А какие специфичные термины используете вы?
Ваш, @llm_under_hood 🤗
PS: Я не умею добавлять картинки в ТГ так, чтобы текст не сужало. Поэтому иллюстрация к посту - в комментах.
👏6👍2🤩2🥰1