Telegram Group Search
Уничтожение LLM System Design 😎

Как отвечать на собеседовании, если вас спросят: «Постройка мне чат-бота с помощью LLM»? Разберем основные шаги на конкретной задаче.

Давайте пойдём по пунктам из этого поста.

1️⃣ Нужно чётко сформулировать цель, задачу, ограничения и ресурсы. Прям пытайте интервьювера, чтобы выдал все исходные данные 🍗

Задача: создать чат-бота, который отвечает на финансовые запросы.

Исходные условия:
- В продакшене уже используется API GigaChat (временное решение).
- Доступен API ChatGPT.
- Есть два ассессора.
- Ответы предоставляются без контекста.

Ограничения:
- Ответ за максимум 2 минуты.
- Аппаратные ресурсы: 4 GPU (80 ГБ каждая, A100).

2️⃣ Теперь нужно определиться с метрик. Обычно в задачах построения дизайна система выделяют три вида метрик

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

Онлайн-метрики:
- Удовлетворенность клиентов (CSAT) — пользовательская оценка (1–5).

Оффлайн-метрики:
- Loss — насколько хорошо обучена модель.
G-Eval — метод «LLM as Judge», когда одна модель оценивает ответы другой по качеству (например, от 1 до 5).
Оценка ассессоров — реальные люди оценивают ответы по техническому заданию. Это ключевая метрика, с которой можно проверить корреляцию с G-Eval.
Бенчмарки — открытые или специально созданные под задачу бизнеса.

3️⃣ Теперь нужно определиться с данными, откуда и сколько их получить, а также как поделить на Train/Test 🕺

Выделяем ключевые сущности:
У нас есть диалог, а в диалоге:
- Запрос пользователя
- Ответ модели
- Маркер начала диалога
- Идентификаторы запроса, ответа, пользователя и т.д.

Способы получения данных:
➡️ Синтетика — быстро и дешево, но требует проверки (например, через G-Eval).
➡️ Открытые датасеты — бесплатны, но их нужно очищать (GPT или предобученные модели).
➡️ Собственные данные — качественно, но дорого и долго (нужны четкие ТЗ для копирайтеров).

Объем данных: Для обучения LoRA потребуется хотя бы 10 тысяч примеров для тренировки и около 700 для тестирования.
Для упрощения пока исключаем поиск контекста, работу с контекстом распишу в следующей части)

4️⃣ Построение пайплайна обучения 😺

Бейзлайн: предположим, что у нас уже есть метрики для текущего решения (например, на GigaChat).

Входные данные:
X — запрос пользователя.
Y — эталонный ответ.

Модели:
llama3.1 400b. Пробуем сначала запромпить модель и смотрим на результаты бенчмарков.
saiga_llama3.1 70b. Сначала промптим, затем обучаем под конкретную задачу.
Loss: Используем CrossEntropyLoss — простой и надежный метод для обучения LoRA на основе SFT.

Метрики:
На тренировочной выборке оцениваем Loss.
На тестовой — G-Eval, оценки ассессоров (на 500 случайных примерах) и бенчмарки.
Деплой: Для деплоя используем vllm.

5️⃣ Потенциальные улучшения 🐒

- Добавить контекст в ответы для повышения точности модели (реализуем в следующей части).
-Применить ORPO-метод, чтобы модель лучше понимала, какие ответы допустимы, а какие нет.
- Квантизация или дистилляция для того, чтобы уменьшить latency
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#random

Теория мертвого интернета понемногу приходит и в музыку.

Если что, то это страница группы с контентом, сгенерированным в Suno (очень уж узнаваемые артефакты, если вы сгенерили сотню-другую песен там).

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

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

В принципе, ничего нового. Просто неожиданно было встретить нейронную песню в рекомендациях на своей волне.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ml

Я на досуге немного поковырялся с оптимизацией 3-D укладки коробок. И решил наработки в open-source выложить, вдруг кому-то будет интересно поиграться с решением.

Сразу предупреждаю, в основном код написан Claude (мой вклад в рост энтропии интернета), но направлял его все-таки я сам (и местами подправлял код).

Что в итоге есть в решении:
- 5 алгоритмов упаковки (Weight-Aware, Extreme Points, LAFF, Corner Points, SFC)
- Проверка физических ограничений и поддержки
- 3D визуализация результатов в реальном времени (на картинке как раз она)
- Расчет эффективности использования пространства
- Анализ распределения веса
- Интерактивный веб-интерфейс на Streamlit
- Загрузка пользовательских коробок и выгрузка результатов

В общем, смотрите, ставьте звездочки и не ругайстесь, коли что не так)
#random

Год движется к своему завершению. Пора, полагаю, подвести итоги:
1. Дочка пошла в детский сад;
2. Канал подрос на ~200 человек (спасибо всем тем, кто меня читает!);
3. На работе очень плотно прошел год. Выступал, заставлял выступать других, писал материалы, ездил на конференции, преподавал. И даже немного успел поработать в процессе.
+ Посчитал количество внешних выступлений по нашему направлению. Вышло почти 1 раз в две недели (чуть реже, но близко);
4. Я наконец-то закончил курс по сценарному мастерству (осталось еще два, лол);
5. В первый раз выступил со стендапом. И еще попробовал себе в roast battle формате;
6. Написал приличное количество рассказов (просто так и для конкурсов), сценарий комикса (для конкурса), сценарий короткометражки. Напечатался в трех местах (правда, одна из публикаций - это стихи);
7. Прошел еще немного курсов по писательскому мастерству. Было про остросюжетную прозу, про стендап, сейчас начался курс про пьесы;
8. Остался жив и даже в своем уме. Что уже немало ;)
Думал поменять аватарку на что-то новое. Какой вариант вам нравится больше?
Какую аватарку взять? Нумерация по картинкам выше (слева-направо, сверху-вниз)

Котик 1 - 4
👍👍 4%
Котик 2 - 7
👍👍 8%
Котик 3 - 2
👍 2%
Котик 4 - 13
👍👍👍 14%
Котик 5 - 7
👍👍 8%
Котик 6 - 12
👍👍👍 13%
Оставь старого кота! - 47
👍👍👍👍👍👍👍👍 51%
👥 92 человека уже проголосовало.
#audio

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

В прошлом году (несколько дней назад), когда салаты еще нарезались, а не доедались, мы с сыном друзей (Ярослав, привет!) от нечего делать (и от праведного гнева Ярослава из-за того, что Алиса не дает детям слушать Linkin Park) решили попробовать обойти детский режим.

Идея была простой. Вероятно, там стоит классификатор голоса (ребенок/взрослый). А это значит, что нужно понять, что определяет "детский" голос. Логичным предположением был тембр и высота голоса. Поэтому наш военный совет выбрал основной целью атаки изменение голоса.

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

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

Мы уже было отчаялись. Но оставалась еще одна идея. А что, если мы попробуем разные голоса (мало ли, вдруг там есть что-то для их разделения или оценки их естественности)? Наш маневр оказался успешным, враг в лице Алисы не заметил наших гусар у себя в тылу.

"Нашими гусарами" оказался синтетический голос гугл-переводчика. То есть, итоговый рецепт победы получился такой: обращение к Алисе детским голосом (чтобы активировать считывание) + остальной текст, озвученный гугл-переводчиком.

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

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

P.S. Результаты прошлого голосования я увидел. Старый кот остается! (люблю демократию, ведь мне буквально ничего не нужно делать по итогам голосования)
Forwarded from Метаверсище и ИИще (Sergey Tsyptsyn ️️)
Вот вам пример видеогенерации, от которого у меня немного закипел мозг.

Мы тут извращаемся в промптах, пытаясь заставить двигаться камеру или персонажа.
Но.
Оказывается, можно попросить ИИ добавить на видео гринскрин (этим я вас не удивлю) и, внимание, маркеры для трекинга камеры (а вот этим удивлю). Для того, чтобы потом оттрекать камеру в AE или Нюке, восстановить движение объектов в 3Д, убрать фон и навалить сверху нормальной графики или футажа.
В общем все, как на съемках с парой супервазеров, мешком маркеров, тейпов, рулеток, далее по списку. Только промптом!

И судя по этому примеру у Veo2 (пока крайней мере у него, но думаю и у остальных) в голове есть реальная модель 3Д мира и вполне себе эвклидово пространство, ибо это работает и условная фотограмметрия не ломается.

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

Я уж не знаю, на чему учили Veo2, но то, что это вообще работает, приводит меня в восторг.

Подробности тут.

Кто совсем ничего не понял: здесь только девушка (см. промпт). Среднее видео демонстрирует добавление созданной человеком модели (андроид, G) в сцену, созданную ИИ, а нижнее - объединение созданного ИИ персонажа (девушки) в созданную человеком сцену (сакура и небесное пространство). В обоих случаях необходимы данные с камеры, полученные в результате работы ИИ.

Попробуйте в Клинге что ли...

@cgevent
Lovecraft goes brrr

P.S. Лавкрафта читать люблю, оттого шутка даже смешнее.
2025/01/26 03:46:03
Back to Top
HTML Embed Code: