TGViewer
Channel Public Channel
Максим Максимов // IT, AI

Максим Максимов // IT, AI

@maks_it_ai

Активно познаю новое и стараюсь делиться со всеми!

Пишу посты на Хабр: https://habr.com/ru/users/maksimov_m

Персональный сайт: https://maksimovms.ru/

Мой профиль:
@maks_maks1
Subscribers
697
Photos
73
Videos
4
Links
64
Recent Posts 20 shown
Post #138 666
Как я разработал легковесный Guardrails для русского языка

Написал статью на Хабр, в которой поделился процессом разработки своей версии легковесного Guardrails.

Рассказал что такое Guardrails, основные компоненты lite-guardrails, его архитектура, этапы разработки, настройкой observability, а также создание документации по проекту.

Ссылка на GitHub - здесь
Ссылка на статью - здесь

Максим Максимов // IT, AI
  • 👍 5
  • 🔥 2
  • 🤯 1
Post #137 812

Forwarded from _rnd

⚡️ Открываем бенчмарк для детекции PII в русском тексте

Мы тут много рассказывали про работу guardrails. А теперь выкатываем в открытый доступ бенчмарк для детекции персональных данных на русском языке. На нём можно сравнивать NER-модели, PII-детекторы и системы анонимизации.

Внутри датасета 21 тип персональных данных:
• ФИО: имя, фамилия, отчество;
• адресная иерархия: страна, регион, город, район, улица, дом;
• контакты: email, телефон, URL, IP;
• документы: паспорт, СНИЛС, ИНН, ОМС, банковская карта, водительское удостоверение, военный билет, свидетельство о рождении.

Датасет состоит из синтетических данных, а также реальных примеров из продакшен-логов, где персональные данные заменены на синтетику. Внутри сгенерированные данные в формате документов + сложные пограничные кейсы и опечатки.

Все данные представлены в формате BIO. Разметка и валидация выполнялись частично вручную, частично с помощью LLM. В карточке датасета описали таксономию сущностей и протокол оценки, а ещё добавили результаты популярных открытых моделей для удобного сравнения. 😊

Прогоняйте свои анонимайзеры, PII-детекторы и NER-модели, ломайте бенчмарк и делитесь результатами в комментариях.

↗️ Hugging Face

Автор этого поста, как и многих других про NER и PII, Женя Андриевская — NLP-инженер в R&D red_mad_robot


#Безопасность
huggingface.co redmadrobot-rnd/pii_benchmark · Datasets at Hugging Face We’re on a journey to advance and democratize artificial intelligence through open source and open science.
  • ❤ 3
  • 👍 3
  • 🤯 1
Post #136 1.02K
Как дообучить LLM. Рассказываю шаг за шагом

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

В качестве примера обучил Qwen2.5-0.5B извлечению информации из текста по заданной схеме в формате JSON.

🔥 Welcome!
  • ❤ 10
  • 🔥 5
  • 🤯 2
  • 🤔 1
Post #135
Максим Максимов // IT, AI pinned «🤷 Когда использовать BERT, а когда LLM? Во время решения различных NLP задач ловлю себя на мысли, что часто можно применить LLM. Задача классификации? - Берём LLM + Structured Output. Задача NER? - Тоже можно взять LLM, написать пару промптов и алгоритмов…»
Post #134 1.16K
🤷 Когда использовать BERT, а когда LLM?

Во время решения различных NLP задач ловлю себя на мысли, что часто можно применить LLM.

Задача классификации? - Берём LLM + Structured Output.

Задача NER? - Тоже можно взять LLM, написать пару промптов и алгоритмов и вуаля - будем находить персональные данные в тексте.

Но, к сожалению, не так все просто.

1️⃣ Первое, во что упираемся - это инфраструктура и требования к системе. LLM бывает дорогим удовольствием, если нет доступа к хорошему железу. Здесь, конечно, можно использовать облачные решения, например с OpenRouter. Но если работа происходит с чувствительными данными, то использование облачных LLM становится затруднительным.

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

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

2️⃣ Далее, конечно же, следует вопрос качества. И вот тут ответ на вопрос не такой однозначный. Я изучил несколько интересных работ, в которых сравнивали BERT модели с классическими LLM.

В некоторых работах ([1], [2], [3]) оценку проводили на задаче классификации, и здесь BERT модели показали результат лучше, чем у LLM. Для задачи NER в одной из работ [4] картина та же.

Но в той же работе [2], авторы показывают, что для обнаружения галлюцинаций - LLM показывает результаты лучше, чем BERT, та же картина в работе [5] со сравнением GPT-4o и BERT на задаче классификации отзывов с туристического сервиса. Также в этой [6] работе GPT показала лучшие результаты на задаче NER для нахождения в тексте имен людей.

Таким образом, однозначно сказать, кто лучше, тяжело. Нужны эксперименты и research.
Мне понравилась идея авторов работы [2], в которой они советуют подход к выбору архитектуры так:
- Для задач, где ответ лежит на "поверхности" в тексте, хорошо себя показывает BERT (например, при классификации тональности чаще всего легко понять, отзыв положителен или отрицателен).
- Для задач, где требуются внешние знания или же глубокое рассуждение - хорошо показывают себя LLM.
Они приводят этот фреймворк для задачи классификации, который можно взять на вооружение.

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

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

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

#️⃣ Подводя итог, можно сказать - перед выбором между BERT моделями и классическими LLM отталкиваемся от инфраструктуры и требований к системе. Также анализируем решаемую задачу и те данные, с которыми модель должна работать. Ответив на эти вопросы, можно принять первое решение и в дальнейшем отталкиваться от него.

Максим Максимов // IT, AI
  • ❤ 7
  • 👍 4
  • 🔥 3
  • 🤯 1
Post #133
Максим Максимов // IT, AI pinned «🤑 Как платить меньше за инференс LLM Занимался изучением вопроса удешевления стоимости токенов во время работы с облачными LLM. Изучил некоторые способы и решил рассказать о двух популярных и простых в использовании подходах, которые можно применить для…»
Post #132 997
🤑 Как платить меньше за инференс LLM

Занимался изучением вопроса удешевления стоимости токенов во время работы с облачными LLM.

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

🔺Кэширование промптов (Prompt Caching)

Это метод, в котором часто используемые промпты сохраняются в памяти провайдера LLM. Он основан на сохранении KV-cache.

Этот подход следует использовать в тех случаях, когда в ваших обращениях к LLM присутствуют большие инструкции, которые повторяются в каждом запросе. Например:
У вас огромный системный промпт, в котором описаны правила решения задачи пользователя. Каждый раз, когда пользователь дает новую задачу - вы отправляете LLM текст в формате "system prompt" + "user query". "system prompt" - всегда одинаковый. А соответственно, его можно закэшировать, и обрабатывать только часть "user query".

У OpenAI кэширование происходит автоматически, у Anthropic при вызове LLM нужно передавать параметр cache_control. У других провайдеров схожая схема.

Использование кэширования позволяет снизить стоимость токенов до 10 раз. Кроме того, кэш позволяет ускорить обработку запросов за счёт того, что модель не обрабатывает закэшированную часть промпта заново.

Разобраться в работе этого механизма мне помогло следующее видео. Советую к просмотру.

🔺Пакетная обработка (Batсh API)

Следующий метод экономии, который дают провайдеры - это Batсh API. Этот подход немного отличается от типичного представления пакетной обработки запросов.

В объяснении этот подход чуть проще:
Исходно да, вы берете большое количество запросов к модели (например 10.000), и отправляете в LLM. Но обработка запросов происходит не мгновенно - а в течении 24 часов. Да да, вы не ослышались.

Использование Batсh API позволяет сэкономить до 50% стоимости токенов. Следует его применять, если вам необходимо обработать тысячи запросов и нет необходимости получать ответ в реальном времени. Популярные провайдеры как OpenAI, Anthropic, Google предоставляют такой функционал.

Реализация этого не сложная. У OpenAI нужно собрать список запросов в JSONL, а после отправить его в нужном формате. У Anthropic - собрать список запросов в массив и отправить их на обработку. И в течении 24 часов можно получить ответ, зато дешевле на 50% чем при обычном использовании.

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

В комментариях прикрепил наглядное видео из NotebookLM 🙂

Максим Максимов // IT, AI
  • 👍 5
  • 🤯 3
Post #131 676

Forwarded from _rnd

⚡️ Открываем NSFW-бенчмарк для систем модерации

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

Что внутри датасета:
• контрастные пары — о которых мы уже писали,
• сложные пограничные примеры — hard negatives.

Все данные собирались, отсеивались и валидировались полностью вручную.

В карточке датасета рассказали, как устроена таксономия небезопасного контента. А ещё — добавили метрики популярных открытых моделей на этом датасете для удобного сравнения.

Тестируйте свои фильтры на прочность и делитесь мыслями в комментариях. 😍

↗️ Hugging Face

Автор этого поста, как и большинства предыдущих про безопасность, Андрей Иванов — NLP-инженер в R&D red_mad_robot.


#Безопасность
huggingface.co redmadrobot-rnd/nsfw_benchmark · Datasets at Hugging Face We’re on a journey to advance and democratize artificial intelligence through open source and open science.
  • 🤯 2
  • 🔥 1
Post #130
Максим Максимов // IT, AI pinned «Как решать задачу NER на практике Опубликовал статью на Хабр, в которой разобрал задачу NER на реальном примере — извлечение сущностей из резюме. Прошёлся по основным этапам: от поиска данных и разметки в Label Studio до обучения BERT моделей и написания…»
Post #129 802
Как решать задачу NER на практике

Опубликовал статью на Хабр, в которой разобрал задачу NER на реальном примере — извлечение сущностей из резюме.

Прошёлся по основным этапам: от поиска данных и разметки в Label Studio до обучения BERT моделей и написания сервиса на FastAPI. Старался давать меньше теории и больше практики с кодом на Python.

Ссылка на статью
  • ❤ 4
  • 🤯 3
  • 👍 2
  • 🔥 2
Post #128 761

Forwarded from _rnd

Тестирование AI-агентов ✅

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

Что такое «хорошо» для вашего агента

Для начала нужно определить, какую задачу агент выполняет в системе. На этом этапе выделяются сценарии работы и end-to-end метрики: выполняется ли задача, какова точность результата, сколько времени и ресурсов требуется.

Оценка только по итоговому результату показывает картину лишь сверху. Чтобы понять, где возникает сбой, агента нужно разобрать на компоненты: LLM, tools, memory и другие. Тут у каждого свои критерии качества — какие входы поступают, какие выходы получаются и что считать ошибкой.

Переходим к данным

Нужно подготовить тестовый датасет с реальными запросами и ответами для каждого компонента. Данные нужны разнообразные: простые и сложные сценарии, edge cases, разные формулировки одних и тех же запросов.

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

Прогоняем агента и фиксируем метрики

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

Анализируем результаты

Где агент проваливается, какие компоненты работают некорректно? Обращаем внимание на полные логи действий агента, чтобы понять причину ошибок.

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

Так и появляется надёжный агент. 😍

#Тестирование_агентов
  • 👍 4
  • 👏 2
  • 🤯 2
Post #126 801
Как работает платформа для курса

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

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

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

Каждая сессия Jupyter запускается в виде pod в Kubernetes с использованием JupyterLab. Данный подход позволил сделать изолированной каждую сессию пользователя. Каждая сессия имеет ограничения по CPU и памяти. В случае превышения лимитов — pod отключается, не затрагивая работу платформы.

В Jupyter я предоставил возможность обращения к LLM, но только внутри самой сессии. Для этого был создан прокси с простой очередью, через который идут все запросы к LLM. Внутри него настроены ограничения на количество запросов в минуту и максимальное количество использования токенов. Отсюда же я снимаю данные для мониторинга.

В качестве LLM взял GigaChat API. Для работы с OpenAI API используется прокси gpt2giga, который переводит запросы в формат GigaChat. При желании его можно заменить. Например на OpenRouter.

Начало работы с платформой начинается с Telegram бота на aiogram. В нем пользователь регистрируется и получает логин, пароль и URL с API KEY для доступа к LLM.

В качестве фронтенда используется React, основной бекенд - FastAPI, база данных - PostgreSQL. Все это работает в Docker. В качестве единой точки входа используется Nginx.

Также для себя добавил простенький мониторинг (на рисунок не попал) - FastAPI + Jinja-шаблоны, в котором видно количество пользователей, количество использованных токенов и запросов к LLM, количество запущенных сессий Jupyter по времени.

Сейчас платформа развернута на небольшом сервере: 2 vCPU, 8 ГБ RAM и 80 ГБ диск. На данный момент этого достаточно, чтобы выдерживать одновременно ~15 работающих сессий Jupyter (проводил стресс тест).

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

Максим Максимов // IT, AI
  • 👍 6
  • ❤ 4
  • 🤯 1
Post #124 863
Решаем проблемы настройки зависимостей и работы с LLM

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

Основная проблема - отсутствие доступа к LLM. Либо нет возможности поставить ее к себе локально из-за слабого железа, либо же не очень понятно, где получить доступ к API.

Также проблемы, связанные с настройкой Jupyter или установкой зависимостей.

Когда-то сам с таким сталкивался.

Решил собрать платформу, которая решает эти проблемы. В ней пользователь сможет получить доступ к Jupyter Notebook c уже установленными зависимостями, а также доступ к LLM, которую он сможет использовать внутри платформы. Естественно, Claude в разработке платформы очень помог.

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

Сейчас проблема с которой я столкнулся - это ограниченность ресурсов сервера и LLM (взял подписку GigaChat и подключил прокси внутри сервера).

Для решения проблемы с ресурсами я сделал следующее: ограничил время и память 1 сессии с Jupyter для 1 пользователя. Также ограничил количество запросов к предоставленной LLM для пользователя в минуту.

Сейчас сервер способен выдержать одновременно ~15 запущенных сессий с Jupyter. Работает по принципу "кто успел, тот и съел" =)

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

Возможно в канале есть те, кто начал проходить мой курс. Чтобы получить доступ к платформе - нужно зайти в бота @course_platform_bot, после команды /start он предоставит все необходимые доступы и ссылки. Напомню - LLM можно использовать только внутри платформы.

Максим Максимов // IT, AI
  • 👍 6
  • ❤ 5
  • 🔥 3
  • 🤯 3
Post #123 846
Курс: "Введение в разработку ИИ-агентов"

В прошлом месяце пришла идея сделать свой небольшой курс по введению в ИИ-агентов. Идея воплотилась в реальность.

Утра и вечера в Miro за отрисовкой схем, съемкой и монтажом прошли не зря. Получился вводный курс, который состоит из двух основных модулей:

- Введение в работу с LLM. Взаимодействие с LLM на Python, написание промптов, Structured Output и подход к выбору LLM для различных задач.

- Введение в ИИ-агентов. Основные компоненты ИИ-агента, Function Calling, шаблоны проектирования агентов.

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

Мой первый опыт создания курсов - посмотрим что из этого выйдет.

Ссылка на курс
  • 🔥 15
  • 👍 7
  • ❤ 3
  • 🤯 2
Post #121 711
Максим Максимов // IT, AI Какой у вас опыт с AI-агентами?
🔥 Доделываю последние штрихи

Судя по статистике, больше чем половине людей, которые ответили на опрос, будет интересно то, что я скину сегодня!
Так что не пропустите =)
  • 🔥 8
  • 👍 2
  • 🤯 2
Post #120 633
  • 🤯 3
Post #119 609
В ближайшие дни поделюсь проектом, над которым работал в этом месяце — он связан с AI-агентами. Расскажу подробности чуть позже =)
А пока интересно — какой у вас опыт работы с агентами?
  • 👍 2
  • 🤯 2
Older posts →

About this channel

How can I read @maks_it_ai without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Максим Максимов // IT, AI: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Максим Максимов // IT, AI have?
Максим Максимов // IT, AI (@maks_it_ai) has 697 subscribers on Telegram, refreshed roughly every 30 minutes.
Does Максим Максимов // IT, AI know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →