Microsoft Azure приостановила выдачу GPT-4 😢
Вот такое сообщение от Microsoft мне сейчас переслал клиент:
Please note that we are currently paused on onboarding new GPT-4 customers due to the high demand and do not have an estimated time for when we will onboard new customers.
Это значит, что запускать новые проекты будет сложнее и дольше. Из провайдеров GPT-4 остался только OpenAI, а он постоянно страдает от нагрузки.
Что можно сделать, если продукты запускать все равно надо?
(1) Податься на Azure OpenAI GPT-4 про запас.
(2) Податься в Anthropic, а заодно и в Amazon Bedrock, чтобы иметь доступ к Claude про запас (хуже GPT-4, но лучше GPT-3.5 turbo).
(3) Морально готовиться к тому, что GPU ресурсов может пока не очень хватать. Отлаживать миграцию на локальные модельки послабее. Тем более, что там ситуация с каждым днем получше.
Вот такое сообщение от Microsoft мне сейчас переслал клиент:
Please note that we are currently paused on onboarding new GPT-4 customers due to the high demand and do not have an estimated time for when we will onboard new customers.
Это значит, что запускать новые проекты будет сложнее и дольше. Из провайдеров GPT-4 остался только OpenAI, а он постоянно страдает от нагрузки.
Что можно сделать, если продукты запускать все равно надо?
(1) Податься на Azure OpenAI GPT-4 про запас.
(2) Податься в Anthropic, а заодно и в Amazon Bedrock, чтобы иметь доступ к Claude про запас (хуже GPT-4, но лучше GPT-3.5 turbo).
(3) Морально готовиться к тому, что GPU ресурсов может пока не очень хватать. Отлаживать миграцию на локальные модельки послабее. Тем более, что там ситуация с каждым днем получше.
😱2😢1
Пишу очередной newsletter про то, что сейчас GPU у крупных компаний мало, и надо искать альтернативы. А тем временем Айгиз присылает результаты прогона нашего бенчмарка на первых моделях из ggml семейства. И это 🤦
Альтернативные модели хороши, но с ними надо работать иначе, чем с самыми популярными instruct. Как вы с ними справляетесь?
Альтернативные модели хороши, но с ними надо работать иначе, чем с самыми популярными instruct. Как вы с ними справляетесь?
👍1
Появилась многообещающая модель Lazarus-30B. Она сразу прыгнула на второе место HuggingFace Leaderboard.
Под капотом - смесь патчей (LoRA), которые надергали с разных моделей и слили вместе. Оказывается, и так можно 🤯
Это пока самая многообещающая открытая модель в наших продуктовых бенчмарках.
Под капотом - смесь патчей (LoRA), которые надергали с разных моделей и слили вместе. Оказывается, и так можно 🤯
Это пока самая многообещающая открытая модель в наших продуктовых бенчмарках.
👍4🔥4🤯1
Потихоньку продолжаем разрабатывать продуктовые бенчмарки для LLM моделей .
Зачем?
(1) разбираться в растущем зоопарке моделей и их вариаций с практической точки зрения
(2) точно знать, когда какой-то продукт можно пытаться запускать локально, и на какой модели это лучше делать
(3) систематизировать знания по работе с разными моделями и промптами.
На сегодня это все выглядит вот так. Красного сильно больше, чем зеленого, но все промпты были пока заточены только под InstructGPT модели. Придется их переписывать и на поддержку базовых моделей :)
Зачем?
(1) разбираться в растущем зоопарке моделей и их вариаций с практической точки зрения
(2) точно знать, когда какой-то продукт можно пытаться запускать локально, и на какой модели это лучше делать
(3) систематизировать знания по работе с разными моделями и промптами.
На сегодня это все выглядит вот так. Красного сильно больше, чем зеленого, но все промпты были пока заточены только под InstructGPT модели. Придется их переписывать и на поддержку базовых моделей :)
🔥3
Кейс продукта с LLM под капотом: Ассистент маркетолога в компании #aicase
Оглавление:
(1) описание продукта (этот пост)
(2) секреты реализации
(3) архитектура проекта
(4) feedback клента и дальнейшие улучшения
(5) методичка по сбору базы знаний для ассистента
(6) как добавить креативности и разнообразия в тексты ассистента
(7) 🔥 Вторая версия со свободным написанием статей + пример и отзыв клиента
Хочу поделиться описанием работы еще одного продукта, который получился сильно прикольнее, чем все ожидали 🎉 Диаграмма архитектуры, как обычно, будет следующим постом.
🤔 Проблема. Клиент - это небольшая компания с лучшей в мире продукцией для очень специфичной ниши. При этом их практически "не видно" в интернете. Сайт скуден (его переделывают третий год), маркетинговых компаний в соц-сеточках не ведется. Хочется заслуженной мировой славы, но не хватает людей и сил.
🚧 Задача - облегчить и ускорить работу маркетингового отдела, чтобы они могли доступно и понятно рассказать о своих продуктах всем тем, чьи проблемы он может решить.
⭐ Решение - ассистент маркетолога в компании, который встраивается в процессы отдела маркетинга.
Например, когда надо работать над заполнением сайта статьями про продукты: ассистент вытаскивает из базы знаний необходимую информацию и набрасывает возможные идеи статьей для выбранного продукта. Каждая идея фокусируется на:
- одной аудитории (чьи проблемы решаем?)
- одной проблеме
- 2-3 уникальных фишках продукта (USP)
- решении проблемы нашим продуктом
- ощущениях / эмоциях после решения проблем
- call to action
Человек потом выбирает из пачки идей наиболее понравившуюся. Галлюцинации отсеиваются на этом этапе (хотя их особо не замечал с таким подходом)
Дальше ассистент набрасывает несколько черновиков статьей на основе этой идеи. Он пользуется все той же базой знаний, плюс конкретным описанием структуры статьи. Прямо по рецептам Майи Богдановой :) То есть без всякого впаривания и пустого хайпа. Спокойно и с достоинством. Придерживаемся brand identity и ценностей компании.
Человек просматривает черновики, выбирает наиболее понравившийся и при желании допиливает. Просмотрев первые черновики маркетологи сказали: "the first drafts turned out well and can be read very fluently"
Процесс можно повторять, пока не будет по хорошей статье на каждый продукт для каждой аудитории. А потом еще пройтись по всем каналам для кампаний.
Про реализацию кейса 👉 тут 👈
---
Кейс продукта c LLM под капотом из канала https://news.1rj.ru/str/llm_under_hood.
Оглавление:
(1) описание продукта (этот пост)
(2) секреты реализации
(3) архитектура проекта
(4) feedback клента и дальнейшие улучшения
(5) методичка по сбору базы знаний для ассистента
(6) как добавить креативности и разнообразия в тексты ассистента
(7) 🔥 Вторая версия со свободным написанием статей + пример и отзыв клиента
Хочу поделиться описанием работы еще одного продукта, который получился сильно прикольнее, чем все ожидали 🎉 Диаграмма архитектуры, как обычно, будет следующим постом.
🤔 Проблема. Клиент - это небольшая компания с лучшей в мире продукцией для очень специфичной ниши. При этом их практически "не видно" в интернете. Сайт скуден (его переделывают третий год), маркетинговых компаний в соц-сеточках не ведется. Хочется заслуженной мировой славы, но не хватает людей и сил.
🚧 Задача - облегчить и ускорить работу маркетингового отдела, чтобы они могли доступно и понятно рассказать о своих продуктах всем тем, чьи проблемы он может решить.
⭐ Решение - ассистент маркетолога в компании, который встраивается в процессы отдела маркетинга.
Например, когда надо работать над заполнением сайта статьями про продукты: ассистент вытаскивает из базы знаний необходимую информацию и набрасывает возможные идеи статьей для выбранного продукта. Каждая идея фокусируется на:
- одной аудитории (чьи проблемы решаем?)
- одной проблеме
- 2-3 уникальных фишках продукта (USP)
- решении проблемы нашим продуктом
- ощущениях / эмоциях после решения проблем
- call to action
Человек потом выбирает из пачки идей наиболее понравившуюся. Галлюцинации отсеиваются на этом этапе (хотя их особо не замечал с таким подходом)
Дальше ассистент набрасывает несколько черновиков статьей на основе этой идеи. Он пользуется все той же базой знаний, плюс конкретным описанием структуры статьи. Прямо по рецептам Майи Богдановой :) То есть без всякого впаривания и пустого хайпа. Спокойно и с достоинством. Придерживаемся brand identity и ценностей компании.
Человек просматривает черновики, выбирает наиболее понравившийся и при желании допиливает. Просмотрев первые черновики маркетологи сказали: "the first drafts turned out well and can be read very fluently"
Процесс можно повторять, пока не будет по хорошей статье на каждый продукт для каждой аудитории. А потом еще пройтись по всем каналам для кампаний.
Про реализацию кейса 👉 тут 👈
---
Кейс продукта c LLM под капотом из канала https://news.1rj.ru/str/llm_under_hood.
🔥14👍7❤4
🔧 Реализация: под капотом вручную структурированная иерархическая база знаний и пачка запросов к GPT-4.
Изначально я надеялся обойтись просто промптом в духе "Эй, напиши-ка мне хорошую статью про продукт. Вот тебе тех спеки вродукта!” Но на выходе была галиматья, впаривание и галлюцинации. 🤪
Пришлось "обучать" систему писать статьи, как правильно, разбивая процесс на шаги. Так и родился подход, когда система делает неблагодарную работу просева информации и перебора вариантов, а человек только оценивает и выбирает.
Плюс, у системы не возникает информационного голода, который она пытается заполнить галлюцинациями.
То есть ключевые шаги:
(1) вот тебе весь контекст про продукт, с которым даже выпускник-маркетолог сможет набросать пару идей. Набросай их мне. Ничего не выдумывай - проверю.
(2) Вот тебе годная идея статьи и весь контекст про продукт. Набросай мне черновиков статей. Ничего не выдумывай - проверю.
🤔 А что там с базой знаний? LLamaIndex или LangChain?
База знаний - это пачка тесно связанных документов. Поиск по embeddings вечно вытаскивал ерунду. Да и любой поиск вытаскивал не совсем то, что надо.
Поэтому я вручную иерархично структурировал документацию как книгу, с оглавлением. Как если бы делал это для человека, у которого стоит такая же задача. А потом я просто спросил у GPT - какие главы про компанию тебе больше всего нужны, чтобы набросать хорошие идеи? А какие главы про отрасль продукта?
Выжимка базы знаний для продукта/отрасли/аудитории по инструкциям GPT и используется для набрасывания идей и последующего набрасывания черновика.
То есть это не агент, и не набор каких-то сторонних библиотек. А просто перекладывание заранее собранной информации из папочек в контекст.
🍀Bonus mode продукта - выбор направлений для маркетинговых исследований.
У нас уже есть хорошая база знаний, с которой система сама неплохо работает. Поэтому можно сделать такую фишку. Если человеку не нравятся идеи или черновики, то можно спросить систему "а какую информацию можно добавить в базу знаний, чтобы в этой статье исправить эти проблемы?" Советы выходят довольно неплохие. Делаем исследования, заполняем базу знаний, и ассистент становится умнее для всех последующих задач.
Примерно так и я заполнял первичную базу знаний - что система просила, то пересылал отделу маркетинга клиента. Итоговый результат, как уже говорилось, им весьма понравился 🎉 Причем я специально не выбирал черновики получше. Отправил первое, что выдала (так разочарований меньше потом будет)
Мне очень понравилось ощущение от продукта, когда вместо возни с embeddings и разными индексами формируешь структурированную базу знаний и работаешь с ней.
Теперь хожу и думаю, что хочу такого же личного ассистента, чтобы он придумывал идеи для прототипов, экспериментов и просто планов на день. А я бы их отвергал 😊
Если у кого есть вопросы и идеи схожих продуктов, где LlamaIndex & LLangChain уже не вытягивают, пишите в чат. Можем обсудить вместе.
Update: вот методичка по сбору базы знаний для такого ассистента.
Изначально я надеялся обойтись просто промптом в духе "Эй, напиши-ка мне хорошую статью про продукт. Вот тебе тех спеки вродукта!” Но на выходе была галиматья, впаривание и галлюцинации. 🤪
Пришлось "обучать" систему писать статьи, как правильно, разбивая процесс на шаги. Так и родился подход, когда система делает неблагодарную работу просева информации и перебора вариантов, а человек только оценивает и выбирает.
Плюс, у системы не возникает информационного голода, который она пытается заполнить галлюцинациями.
То есть ключевые шаги:
(1) вот тебе весь контекст про продукт, с которым даже выпускник-маркетолог сможет набросать пару идей. Набросай их мне. Ничего не выдумывай - проверю.
(2) Вот тебе годная идея статьи и весь контекст про продукт. Набросай мне черновиков статей. Ничего не выдумывай - проверю.
🤔 А что там с базой знаний? LLamaIndex или LangChain?
База знаний - это пачка тесно связанных документов. Поиск по embeddings вечно вытаскивал ерунду. Да и любой поиск вытаскивал не совсем то, что надо.
Поэтому я вручную иерархично структурировал документацию как книгу, с оглавлением. Как если бы делал это для человека, у которого стоит такая же задача. А потом я просто спросил у GPT - какие главы про компанию тебе больше всего нужны, чтобы набросать хорошие идеи? А какие главы про отрасль продукта?
Выжимка базы знаний для продукта/отрасли/аудитории по инструкциям GPT и используется для набрасывания идей и последующего набрасывания черновика.
То есть это не агент, и не набор каких-то сторонних библиотек. А просто перекладывание заранее собранной информации из папочек в контекст.
🍀Bonus mode продукта - выбор направлений для маркетинговых исследований.
У нас уже есть хорошая база знаний, с которой система сама неплохо работает. Поэтому можно сделать такую фишку. Если человеку не нравятся идеи или черновики, то можно спросить систему "а какую информацию можно добавить в базу знаний, чтобы в этой статье исправить эти проблемы?" Советы выходят довольно неплохие. Делаем исследования, заполняем базу знаний, и ассистент становится умнее для всех последующих задач.
Примерно так и я заполнял первичную базу знаний - что система просила, то пересылал отделу маркетинга клиента. Итоговый результат, как уже говорилось, им весьма понравился 🎉 Причем я специально не выбирал черновики получше. Отправил первое, что выдала (так разочарований меньше потом будет)
Мне очень понравилось ощущение от продукта, когда вместо возни с embeddings и разными индексами формируешь структурированную базу знаний и работаешь с ней.
Теперь хожу и думаю, что хочу такого же личного ассистента, чтобы он придумывал идеи для прототипов, экспериментов и просто планов на день. А я бы их отвергал 😊
Если у кого есть вопросы и идеи схожих продуктов, где LlamaIndex & LLangChain уже не вытягивают, пишите в чат. Можем обсудить вместе.
Update: вот методичка по сбору базы знаний для такого ассистента.
🔥8❤4👍4😁1
Roman D спросил, как я запускаю large language models локально на ноутбуке.
Мне локальный запуск нужен для портирования продуктов с ChatGPT-4 на локальные модели. Поэтому с модельками работаю не через UI, а программно, чтобы запускать все тесты на всех моделях и стоить матрицу совместимости задач с моделями.
Дано:
- Apple Mac Air (M2 + 24GB)
- llama-cpp-python - питоновская обертка вокруг llama.cpp, которая позволяет запускать модели хоть на CPU (либо выгружать часть слоев на GPU)
- папочка с ggml моделями, которые выкачиваю с hugging face (ggml - это формат, который понимает llama.cpp и куча других приложений)
Причем, mac не обязателен. Можно хоть на RaspberryPi поднять, просто будет меееедленно работать.
Запускать можно так:
```
```
Можно еще использовать саму llama.cpp, чтобы делать то же самое из коммандной строки, там даже есть интерактивный режим, если хочется ChatGPT с исторей.
Если же хочется GUI, то можно посмотреть:
- LM Studio - запускатор локальных моделей
- GPT4All - интерфейс и экосистема для обучения и запуска моделек локально
- oobabooga - гуйня для запуска и тюнинга локальных моделей
- koboldcpp - визуальная обертка вокруг llama.cpp
- MLC Chat - запускать модели даже на своем телефоне 🤯
Если хочется выбрать лучшую модель, которую потянет ваша система, то статья на LocalLLaMA поможет.
Cсылками на LMStudio, GPT4ALL, MLC Chat и LocalLLama поделился в чатике. A P. Спасибо!
Ваш, @llm_under_hood 🤗
Мне локальный запуск нужен для портирования продуктов с ChatGPT-4 на локальные модели. Поэтому с модельками работаю не через UI, а программно, чтобы запускать все тесты на всех моделях и стоить матрицу совместимости задач с моделями.
Дано:
- Apple Mac Air (M2 + 24GB)
- llama-cpp-python - питоновская обертка вокруг llama.cpp, которая позволяет запускать модели хоть на CPU (либо выгружать часть слоев на GPU)
- папочка с ggml моделями, которые выкачиваю с hugging face (ggml - это формат, который понимает llama.cpp и куча других приложений)
Причем, mac не обязателен. Можно хоть на RaspberryPi поднять, просто будет меееедленно работать.
Запускать можно так:
```
>>> from llama_cpp import Llama
>>> llm = Llama(model_path="./models/7B/ggml-model.bin")
>>> output = llm("Q: Name the planets in the solar system? A: ", max_tokens=32, stop=["Q:", "\n"], echo=True)
>>> print(output)```
Можно еще использовать саму llama.cpp, чтобы делать то же самое из коммандной строки, там даже есть интерактивный режим, если хочется ChatGPT с исторей.
Если же хочется GUI, то можно посмотреть:
- LM Studio - запускатор локальных моделей
- GPT4All - интерфейс и экосистема для обучения и запуска моделек локально
- oobabooga - гуйня для запуска и тюнинга локальных моделей
- koboldcpp - визуальная обертка вокруг llama.cpp
- MLC Chat - запускать модели даже на своем телефоне 🤯
Если хочется выбрать лучшую модель, которую потянет ваша система, то статья на LocalLLaMA поможет.
Cсылками на LMStudio, GPT4ALL, MLC Chat и LocalLLama поделился в чатике. A P. Спасибо!
Ваш, @llm_under_hood 🤗
🤗8🔥6❤3👍2
✋ А нет ли такого интерфейса, чтобы можно было загружать структурированные документы, вручную определять правила сборки 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