CrowsHaveEyes

CrowsHaveEyes

На Пикабу
210 рейтинг 14 подписчиков 1 подписка 18 постов 0 в горячем
0

Как я разрабатываю агентские ИИ системы для извлечения признаков (feature-extraction) из мультимодальных данных

Извлечение признаков (feature extraction) из текстов — ключевой шаг при анализе документов: он является основной практической частью таких задач по обработке данных, как классификация, тематическое моделирование, NER, QA. Если раньше почти что для каждой из таких задач, и в особенности для разных модальностей данных использовались специализированные архитектуры нейронных сетей, то сейчас подобные системы обычно строятся вокруг LLM/VLM. Однако и современные модели на практике настраиваются под конкретные задачи через fine‑tuning или distillation, в связке с retrieval (RAG) и агентскими архитектурами.

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

Традиционный подход: LLM + RAG, которого уже не достаточно

Retrieval‑Augmented Generation (RAG) — тандем LLM и векторных баз для поиска релевантных фрагментов, вставляемых в контекст перед генерацией, который обрел популярность в последние год-полтора благодаря нескольким безусловным преимуществам.

Этот подход позволяет использовать модели общего назначения на узкоспециализированных доменах без полного дообучения. Он и сейчас является самым надежным и дешевым способом снизить галлюцинации, даёт ссылки на документы и улучшает точность ответа. RAG используется в цепочке следующих логических шагов, через которые проходят данные в системе: векторизация → recall → prompt → LLM → извлечение структурированных данных.

Теперь о минусах RAG. Описанная методика только дополняет контекст модели релевантными данными, но не повышает способность самой LLM к извлечению нужных признаков. Эта способность зависит от того, каким задачам и на каких данных модель была обучена. К тому же RAG добавляет несколько архитектурных и прикладных сложностей - пайплайн с векторной базой, embedding, поиск по индексу, чанкинг данных, который может быть нетривиальным процессом с применением различных методик (таких как Semantic Chunking).

Сейчас контекстное окно модели позволяет вместить намного больше данных, чем раньше - взять хотя бы 1 млн токенов у Llama 4, так что необходимость в чанкинге и самом RAG уже не настолько острая. Есть, конечно, проблема понимания длинного контекста. Важно понимать, что при решении практических задач точность LLM может падать пропорционально длине контекста - на эту тему есть интересный бенчмарк:

Как я разрабатываю агентские ИИ системы для извлечения признаков (feature-extraction) из мультимодальных данных Искусственный интеллект, ChatGPT, Openai, Программирование, Машинное обучение, Lora, Длиннопост

Разные модели имеют разные показатели long context understanding, как видно из таблицы выше. Их точность для определенных задач можно увеличить двумя способами - SFT-файнтюнингом на размеченных данных и дистилляцией - передачей знаний от более сильной модели.

Fine‑tuning: точечное улучшение LLM

Файнтюнинг изначально был менее доступен, чем RAG - во-первых, он требует понимания того, как работает оптимизация весов большой языковой модели-трансформера (если мы не говорим про файнтюнинг каких-то других архитектур нейросетей). Во-вторых, он требует набора данных (как правило, размеченных, если мы говорим про Supervised Fine-Tuning), и в третьих, он требует вычислительных мощностей, таких как GPU-кластер.

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

На своем опыте я сделал следующий вывод: файнтюнинг необходим для разработки агентов, особенно в области feature-extraction задач, это очень эффективная практика, которая должна быть взята на вооружение разработчиками, так как она закрывает недостатки RAG и служит необходимым компонентом прикладных ИИ систем. Перечисленные выше трудности файнтюнинга тоже постепенно решаются - во-первых, облачные провайдеры делают доступными вычислительные мощности. В моих статьях и видео достаточно гайдов по использованию облака для файнтюнинга. Чтобы экономить на GPU, по-прежнему остается актуальной методика Low-Rank Adaptation (LoRA), хотя во многих случаях и полный файнтюнинг, который модифицирует веса модели полностью, тоже возможен и оправдан. Ведь для узко специализированной задачи может быть достаточно обучить модель на совсем небольшом наборе данных - 100-500 примеров.

Динамическая квантизация в сочетании с LoRA (QLoRA) позволяет еще сильнее сократить расход видеопамяти и время обучения модели.

В целом SFT-файнтюнинг можно разделить на следующие шаги: подготовка датасета → формирование train и validation наборов → обучение → оценка. В моем последнем видео я "начал с конца" и разобрал прикладные аспекты оценки (evaluation) при разработке агентских систем. Лишь недавно я обратил внимание на библиотеки для evaluation, такие как openevals в экосистеме Langchain/Langsmith, о которых в знал и раньше, но обходился простым скриптингом. Для тех, кто только начинает знакомство с evals, будет полезен мой ноутбук с экспериментами на Langchain/Langsmith и openevals.

При подготовке данных для feature extraction важно выбрать итоговый формат данных, который будет понятен и человеку, и LLM. При небольшом объеме данных самое важное - качественные примеры ответов (output), которые готовятся обычно человеком, вручную. Это особенно актуально для специализированных случаев feature-extraction - например, если вы разрабатываете систему, которая будет читать технические спецификации изделий, товарные коды и тому подобные типы данных. Для составления такого датасета придется привлекать человека с профессиональными знаниями в соответствующем домене. А для LLM чем проще выходной формат данных, тем меньше вероятность галлюцинаций. Поэтому я руководствуюсь тремя принципами -

1. Не усложнять выходной формат данных применением, например, JSON или XML - простого текста в большинстве случаев достаточно;

2. Выполнять feature-extraction из минимальной единицы входных данных за одну генерацию. Это может быть одна PDF-страница, изображение, параграф текста;

3. Использовать Chain-of-Thoughts для валидации процесса извлечения.

Само обучение, как ни странно, вызывает меньше всего проблем - используйте готовые средства обучения библиотеки transformers или API OpenAI, контролируйте качество чекпоинтов, своевременно используя evaluation, и следите за оверфиттингом.

Distillation: перенос знания

Distillation — это обучение компактных или более слабых моделей на основе поведения более сильной LLM‑«учителя». Это еще один способ повысить качество модели, часто менее затратный, чем SFT-файнтюнинг - достаточно просто сгенерировать датасет с помощью модели-учителя, без участия человека.

Отличным практическим примером перечисленных методик может послужить исследование технологического института Джорджии, опубликованное в январе 2025.

Авторами была реализована следующая архитектура:

DistilBERT + fine‑tuning на 10 000 документов → компактная модель с эффективным временем обучения (4–9 ч на ПК) с 97% качества модели-родителя. Пайплайн извлечения признаков включал следующие шаги:

Как я разрабатываю агентские ИИ системы для извлечения признаков (feature-extraction) из мультимодальных данных Искусственный интеллект, ChatGPT, Openai, Программирование, Машинное обучение, Lora, Длиннопост
  • Сэмплинг 10k примеров из тестового корпуса (объявления вакансий) с целью извлечения признаков.

  • Разбивка на чанки с применением Semantic Chunking

  • Генерация ground‑truth с помощью LLM (Gemini).

  • Файнтюнинг DistilBERT - небольшой модели с архитектурой раннего трансформера, которая получена путем дистилляции знаний модели BERT. Дистилляция позволяет сохранить 97% процентов качества, при размере на 40% меньше, чем у исходной модели BERT

  • Prediction - извлечение признаков.

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

RAG — поиск релевантных фрагментов, Fine‑tuning для улучшения и стабилизации ответов модели, и Distillation в эффективной агентской системе дополняется промпт-инжинирингом и CoT, Chain‑of‑thoughts, для самовалидации системой извлеченной информации и ее автоматического итеративного приближения к ожидаемому результату.

Показать полностью 2
3

Как обучить русскоязычную модель рассуждений - LRM?

Ранее на моем YouTube-канале уже были видео о моделях рассуждений — OpenAI o1/o3, DeepSeek R1. Эти модели обучены с помощью стратегии reinforcement learning находить решения для задач, требующих логических рассуждений. Способность строить цепочки рассуждений, ведущих к решению поставленной задачи, открывают возможность применения таких моделей в математике, программировании и других подобных направлениях.

Однако упомянутые модели имеют одно ограничение — они выполняют рассуждения на английском языке. И даже если вы укажете в промпте требуемый язык ответа, отличный от этих двух, то только вывод модели будет на этом языке, а вот сама цепочка останется на том, на котором модель обучена “думать”. Соответственно, чтобы заставить модель думать на русском, нужно применять файнтюнинг.

Есть интересный пример — коллекция моделей R1 Multilingual от японской компании Lightblue, которая ранее создала открытый мультиязычный файнтюнг Llama 3 - Suzume. Эта новая коллекция содержит модели рассуждений на базе DeepSeek-R1-Distill-Qwen, дистиллированных с помощью DeepSeek R1 версий Qwen. Что более важно - эти модели получены путем файнтюнинга на мультиязычном CoT (Chain-of-Thoughts), и данные CoT опубликованы на HuggingFace.

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

Выполнена выборка промптов из открытых англоязычных датасетов с последующим переводом на различные языки. Для перевода использовалась GPT-4o, которая, кстати, хорошо показала себя при создании моего собственного датасета и русскоязычного файнтюна Llama 3 на нем. Далее авторы мультиязычного CoT-датасета сгенерировали ответы на полученные промпты с помощью deepseek-ai/DeepSeek-R1-Distill-Llama-70B восемь раз, и отфильтровали блоки <think> не на том языке, либо с нарушениями правил языка или логическими ошибками. Это достаточно интересный момент, так как разработчики полностью опубликовали код для генерации своего датасета, включая фильтрацию сгенерированных цепочек рассуждений. Если с автоматическим определением языка цепочки все достаточно просто, то для проверки ее соответствия нормам языка и, самое главное, логической корректности, пришлось опять-таки задействовать LLM. Принцип такой же, как и при использовании модели-судьи для выполнения автоматизированных evaluation-тестов.

Пример оценочного промпта из кода проекта:

fluency_system_message = f"""You are a {language} fluency evaluation AI. Given a piece of text, give the fluency and naturalness of the {language} in the text a score from 1-5. Only include your final number in your output."""

То есть модель-судья выставляет оценку от 1 до 5 правильности и естественности сгенерированного текста. Почему-то разработчики использовали GPT-4o-mini, хотя у нее самой, на мой взгляд, есть проблемы с мультиязычностью. Возможно, более правильной оценки можно добиться, используя тот же DeepSeek V3. В итоговый датасет попали только те ответы, у которых наилучшая оценка по пятибалльной шкале.

После этого датасет готов к файнтюнингу моделей рассуждений — дистиллированных на R1 версий Qwen. Для файнтюнинга моделей от 1.5 до 14B авторы использовали llamafactory (код доступен в репозитории на HF по ссылке выше) и достаточно скромные GPU-мощности: всего лишь около 10 минут на восьми NVIDIA L20. Т.е. Вы вполне можете взять GPU поменьше — например, из доступных моделей в облаке подошли бы две RTX 4090 или A10, или одна V100 - и за несколько часов достичь того же результата.

В остальном это обычный SFT-файнтюнинг в одну эпоху, без квантизации. Отдельно стоит отметить процесс evaluation — код можно найти здесь. Ниже — таблица оценок полученных моделей рассуждений для промптов на разных языках. Из нее можно сделать вывод, что модели генерируют более корректные цепочки на таких языках, как английский, немецкий, испанский и другие, наличие которых в корпусе базовой модели, можно предположить, было относительно высоким. Их оценка около 0.8, тогда как у менее распространенных в цифровом пространстве языков она ниже, например, 0.2 у тамильского.

Хорошая новость, что на русском модели научились генерировать цепочки мыслей достаточно неплохо, судя по результату evaluation — даже при том, что в датасете всего 54 примера на русском.

Показать полностью 5
2

Реализация AI агента на базе LLM с нуля – что включает цикл разработки

Разработка AI агента, использующего большие языковые модели (LLM) – это малоизвестный пока еще и потому интересный инженерный процесс, охватывающий весь цикл создания от идеи до финального развертывания. Технические стандарты разработки агентских систем пока еще формируются.  В данной статье я поделюсь своим опытом и рассмотрю ключевые этапы, технологии и практические нюансы, которые встречаются при разработке такой системы с нуля.

Начнем с подготовительного этапа постановки задач и сбора данных. Первым делом необходимо чётко определить цели и задачи будущего агента. Предположим, что в центре системы обычная LLM - в рамках этой статьи не будем рассматривать мультимодальные агенты или модели рассуждений. Важно понять, каким образом LLM будет интегрирована в общий процесс. В 99% центральным звеном интеграции будет Retrieval-Augmented Generation (RAG) пайплайн. Через него модель будет получать данные, релевантные тем задачам, которые агент должен решать. И на этапе построения пайплайна критически важен сбор и предварительная обработка данных. Собранные данные могут включать текстовые документы, логи общения пользователей, справочные материалы, которые потом помогут модели понимать контекст и давать релевантные ответы. Сложность этого этапа зависит от того, какие у вас источники данных, сколько их, насколько серьезной предварительной (перед загрузкой в индекс) обработки они требуют.

Реализация AI агента на базе LLM с нуля – что включает цикл разработки Программирование, Искусственный интеллект, ChatGPT, Чат-бот

От поставленных на предыдущем этапе целей для MVP вашего агента и от собранных данных зависит решение, какую именно LLM использовать, и какой будет архитектура всей системы. Выбор сейчас очень широкий - есть модели с открытым исходным кодом и коммерческие решения, и выбор, очевидно, влияет на последующую инфраструктуру и масштабирование. Например, многие разработчики обращаются к моделям с открытыми весами наподобие LLaMA, учитывая их гибкость и возможность дальнейшего файнтюнинга. Однако вычислительные требования и довольно сложный программный стек накладывают определенные ограничения. Необходимо рассчитать заранее мощности, ваша инфраструктура в большинстве случаев должна поддерживать CUDA или один из немногочисленных альтернативных фреймворков для GPU-ускорения (можно посмотреть в сторону облачных платформ, где CUDA-стек поставляется из коробки), а также возможность интеграции с ML-библиотеками, такими как PyTorch или TensorFlow.

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

Самая замечательная часть - обучение и оптимизация модели. Чаще всего это файнтюнинг - если используется предобученная LLM, то её можно адаптировать под конкретные задачи с помощью дополнительного обучения на специализированных датасетах. Затем происходит настройка гиперпараметров, промпт-инжиниринг и оптимизация модели под конкретные сценарии использования. На этом этапе не обходится без множества evaluation-тестов. Можно взять очень общий пример - бенчмарк MT-bench для проверки на следование инструкциям. Но агенты чаще всего специализированы под конкретные случаи использования, так что полезно будет собрать свой кастомный evaluation датасет. Это позволит облегчить ручное тестирование.

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

Для успешной эксплуатации AI агента необходимо проводить регулярное (лучше автоматизированное) тестирование системы - были уже упомянуты evaluation-тесты самой LLM, но не стоит забывать и о других компонентах системы, будь то API, БД или другие модули, которые тоже нужно тестировать.

Наконец, пару слов о финальном этапе разработки – это развертывание системы в рабочей среде и её последующее обслуживание. Нужно быть готовым к частым обновлениям - в стремительно развивающейся ML-отрасли LLM приходится постоянно дообучать, а то и менять на совершенно новые, сегодня GPT-4o, а завтра DeepSeek. Вычислительные ресурсы при этом то и дело приходится масштабировать. Поэтому для поддержки агентской системы понадобится полноценная MLOps-команда. Это лишь некоторые из трудностей, поскольку, возвращаясь к первоначальной мысли этой статьи, разработка агентских систем - во многом неисследованная территория.

Показать полностью 1
6

Современные требования к инфраструктуре для агентских AI-систем. Развертывание, поддержка и операционные расходы

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

Современные требования к инфраструктуре для агентских AI-систем. Развертывание, поддержка и операционные расходы Искусственный интеллект, Нейросеть Grok, Нейронные сети, Длиннопост

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

  • Облачные или локальные вычислительные ресурсы (GPU, TPU, CPU-кластеры). Лет шесть назад мне пришлось переоборудовать под GPU-кластер древнюю майнинг-ферму, где все необходимое для ML-стека окружение приходилось настраивать с нуля. Сейчас, как правило, я работаю с виртуальными GPU-серверами в облаке, используя готовые образы с необходимым набором библиотек (CUDA и т. д.);

  • Системы хранения данных (БД, хранилища файлов и объектов, распределенные файловые системы). В 99% случаев агенты будут работать с данными, получаемыми из различных внешних источников и загружаемыми в RAG пайплайн. Изначально эти данные могут представлять собой текстовые или другие файлы, и для операций с ними очень популярны объектные хранилища, которые сами по себе максимально просты - сложности возникают, когда эти файлы нужно передавать в пайплайн для дальнейшей обработки, обычно в больших объемах. Для этого тоже есть популярные решения, такие как AWS Kinesis, Kafka, Airflow;

  • Сетевые решения для обмена данными внутри кластера. Агентская система включает несколько компонентов, часто это несколько моделей-агентов, каждый работает с назначенной ему группой задач. Сетевой обмен между ними представляет довольно нетривиальный процесс. Хорошо, если разработчик использует API какой-то AI-платформы вроде OpenAI, т. е. он сам отвечает за реализацию только клиентской части. Тогда его забота - это обмен сообщениями между агентами по HTTP/gRPC, хотя все может быть несколько сложнее, если речь идет о мультимодальных агентах (могут понадобиться мультимедиа-протоколы - я, например, использовал RTP/UDP). A вот если система предполагает хостинг своих моделей локально или в облаке, то приходится думать и о пропускной способности видеопамяти каждого из GPU-серверов, о том, сколько запросов они могут обрабатывать параллельно при инференсе. Это требует отдельной специализированной инфраструктуры, такой как LLM-серверы с поддержкой continuous batching (TGI, vLLM). И, наконец, обмен данными между несколькими GPU в кластере. Есть hardware-решения и стандарты для этого, тот же NVIDIA NVLink.

  • Оркестрация и управление контейнерами (Docker, Kubernetes). В многокомпонентной системе, каковую представляют собой агенты, без контеризации никак. Несколько лет назад, разрабатывая систему в кластере из нескольких железных серверов на Centos 7, я просто запускал все сервисы в докере и docker-compose, включая несколько NLU-агентов на ранних трансформерах. Однозначно это не самое оптимальное решение, для облегчения оркестрации ваших контейнеров рекомендуется Kubernetes. Не забудем про средства мониторинга и логирования (Prometheus, Grafana, ELK-стек), автоматизированный CI/CD.

С учетом всего вышесказанного, чем больше перечисленного выбранная вами облачная платформа предоставляет из коробки, тем лучше она подходит для развертывания агентских AI-систем. Такие системы имеют тенденцию к масштабированию объемов данных и GPU ресурсов, так что вам будет жизненно необходимо иметь возможность увеличивать мощности по мере необходимость. Хорошо, если вашу инфраструктуру легко тестировать на совместимость с новыми конфигурациями.  Наконец, бонус в пользу облачных платформ - высокая доступность: SLA провайдеров обеспечивает надежность.

Есть,  однако, некоторые минусы и сложности - обычно в облаке достаточно высокие операционные расходы: почасовая тарификация GPU и TPU-ресурсов. Также вечная проблема облаков - ограничения по конфигурации: нельзя полноценно оптимизировать железо. Поэтому рассмотрим чуть подробнее развертывание агентской системы на выделенном кластере. Здесь очень важен выбор аппаратного обеспечения. Если агентская AI-система требует постоянных вычислений, то вместо стороннего API для инференса может быть выгоднее использовать собственный кластер с GPU-серверами. Для агентов, работающих с RAG и промежуточными шагами генерации, необходимыми для построения цепочек рассуждений, скорость генерации токенов имеет даже более критическое значение, чем для простых чатботов. Так что не стоит забывать сказанное выше про требования к сетевой инфраструктуре, и задействовать высокоскоростные сети, например, InfiniBand и упомянутый NVLink.

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

Однако первоначально кластер требует более высоких первоначальных инвестиций, даже если вы не строите, как Илон Маск, датацентр Colossus c 200K H100. И не только инвестиций в железо, но и в команду с более высоким уровнем экспертизы в области инфраструктуры, так как с первых дней перед вами встанет необходимость администрирования кластера. Наконец, есть такой существенный для агентских систем минус, как ограниченная по сравнению с облаком масштабируемость.

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

Трудности в эксплуатации кластера, к которым нужно быть готовым - это балансировка нагрузки: распределение вычислений по узлам, задача, которая никогда не была тривиальной; обновление и файнтюнинг моделей (если вы хотите использовать открытые веса) и организация CI/CD для ML. Наконец, необходим мониторинг и отладка - контроль метрик, журналирование.

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

Показать полностью 1
13

Grok 3 бета - эпоха "думающих" агентов

Grok 3 — это последняя серия моделей компании xAI Илона Маска. Представленная 17 февраля 2025 года, эта модель была обучена с использованием суперкомпьютера Colossus, оснащенного около 200 000 графических процессоров Nvidia H100, что в десять раз превышает вычислительные мощности, использованные для предыдущей версии Grok 2.

Согласно результатам бенчмарков, представленным xAI, Grok 3 превосходит другие передовые модели, такие как GPT-4o, Claude 3.5 Sonnet, Gemini-2 Pro и DeepSeek-V3, в областях математики, программирования и научных исследований.

Grok 3 бета - эпоха "думающих" агентов Искусственный интеллект, ChatGPT, DeepSeek, Чат-бот, Видео, YouTube, Длиннопост, Нейросеть Grok

Модель способна решать сложные математические задачи, проводить научные исследования и создавать простые игры. Например, во время презентации Grok 3 сгенерировал вариант игры, сочетающий элементы «Тетриса» и «три в ряд».

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

Помимо Grok 3 и Grok 3 mini, xAI выпустили в релиз две бета-модели рассуждений - Grok 3 (Think) и Grok 3 mini (Think). Как легко догадаться, они обучены на весах двух названных базовых моделей с помощью Reinforcement Learning совершенствовать процесс chain-of-thoughts. Это позволяет моделям Think находить оптимальные стратегии решения задач, находить ошибки в своих рассуждениях, то есть делать все то, чему обучены OpenAI o1 и DeepSeek R1. На процесс рассуждений у Grok 3 может уходить от нескольких секунд до нескольких минут.

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

Особенность Grok 3 в том, что Reinforcement Learning осуществлялся в GPU-кластере невиданных до этого масштабов.

Доступ к Grok 3 первоначально предоставлялся подписчикам X уровня Premium+, стоимость которой составляет около $40 в месяц. Кроме того, xAI предлагает подписку SuperGrok за $30 в месяц или $300 в год, предоставляющую расширенные возможности, включая доступ к новым функциям и неограниченное количество кредитов для генерации изображений.

Впоследствии, однако, xAI анонсировала в X, что доступ к чат-боту с Grok 3 в настоящее время предоставляется бесплатно, “пока наши сервера не расплавятся”.

Grok 3 бета - эпоха "думающих" агентов Искусственный интеллект, ChatGPT, DeepSeek, Чат-бот, Видео, YouTube, Длиннопост, Нейросеть Grok

В посте также говорится, что подписчики X Premium+ и SuperGrok получат расширенный функционал, а также ранний доступ к возможностям вроде Voice Mode, которые еще не вышли в релиз.

Здесь следует отметить, что речь идет об использовании модели Grok 3 через интерфейс чатбота. В ближайших планах xAI — добавить в Grok 3 голосовой режим и предоставить программный доступ к модели через API.

Особенный интерес представляют агенты на базе Grok 3, первый из них - DeepSearch - уже доступен через интерфейс чата. Он также будет доступен через корпоративный API, чтобы компании автоматизировали с его помощью свои бизнес-процессы.

Как заявили xAI в анонсе Grok 3:

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

Показать полностью 1 1
14

Почему DeepSeek способен конкурировать с OpenAI и как повторить их опыт

За последние два года - за время невероятной популярности Generative AI - появилось много перспективных компаний, создающих новые прорывные модели. Последний пример - это китайский стартап DeepSeek, благодаря которому у нас есть открытые аналоги OpenAI GPT-4o и o1. С теми же (что проверено бенчмарками) возможностями в плане выполнения текстовых инструкций, задач на математику, логику и кодинг.

Почему DeepSeek способен конкурировать с OpenAI и как повторить их опыт Искусственный интеллект, ChatGPT, Openai, DeepSeek

Становится любопытно, почему не особенно известный до сих пор стартап делает модели лучше, чем OpenAI?

OpenAI, получивший недавно 100 миллиардов долларов инвестиций на инфраструктуру, по их заявлению. А DeepSeek еще и выкладывает эти модели в опенсорс с MIT лицензией, бери и пользуйся. В чем их секрет?

Вспомним, на чем держится опенсорсная разработка больших языковых моделей (да и других, не только языковых моделей на базе трансформера).  Уже старый эксперимент в Стэнфорде с Альпакой показал неожиданную способность небольшой LLM на архитектуре Llama обучаться до качества тогдашней флагманской модели OpenAI - GPT-3 - на данных, ею сгенерированных. Таким образом, SFT, Supervised Fine-Tuning, в AI-разработке сейчас - это прекрасный способ раздвинуть границы возможностей AI с высокими шансами на успех.

Хороший пример - моя модель ruslandev/llama-3-8b-gpt-4o-ru1.0. Я получил эту модель путем файнтюнинга Llama 3 8B на данных GPT-4o, существенно повысив качество базовой модели. Это потребовало всего лишь 1 эпохи на 2 NVIDIA A100 в облаке.

Существует другой метод “переноса знаний” большой качественной модели на модель поменьше - дистилляция. Модель-ученик учится предсказывать не только следующий токен, который является результатом предсказания модели после применения софтмакс к значениям последнего слоя, но и промежуточные значения - логиты, еще до их преобразования в вероятности с помощью софтмакс. DeepSeek создали несколько моделей путем дистилляции из R1, размера 1.5B, 7B, 8B, 14B, 32B, 70B, на базе Llama и Qwen. Результат, на мой взгляд, ошеломляющий - даже 1.5 версия Qwen, полученная таким путем - DeepSeek-R1-Distill-Qwen-1.5B - существенно опередила GPT-4o и Claude-3.5 Sonnet на математическом бенчмарке AIME 2024, требующем от модели способности рассуждать последовательно.

Но как именно DeepSeek создали модель R1? А также V3 - обе имеют 671 миллиард параметров, реализуют MoE-архитектуру и наверняка требовали огромных вычислительных затрат на обучение. Что касается базовой модели, DeepSeek-V3-Base, она обучена на корпусе из 14.8 триллионов токенов - близко к Llama 3. На обучение ушло 2.788M H800 GPU-часов. Приблизительно 6 миллионов долларов. Это не идет ни в какое сравнение с бюджетами OpenAI.

R1 обучена на DeepSeek-V3-Base, причем первая стадия - RL-обучение с помощью Group Relative Policy Optimization (GRPO) - дала в результате R1-Zero, а финальный успех R1, когда модель обошла o1 на ряде бенчмарков, обусловлен как раз-таки файнтюнингом на небольшом, но качественном наборе размеченных данных, с приоритетом на рассуждения и следование инструкциям. Т.е. SFT-файнтюнинг - ключевой ингредиент для R1. К сожалению, датасет не опубликован. Вероятно, потому что он содержит выборки, сгенерированнные OpenAI o1? В любом случае, есть сама модель DeepSeek R1, и ничто не мешает использовать ее данные для файнтюнинга моделей.

Показать полностью 1
9

Развертывание Marco o1 на локальном PC. Языковая модель рассуждений

Недавно я запускал и тестировал Marco o1. Это одна из первых опенсорсных языковых моделей с многоступенчатой логикой, эта модель использует Chain-of-Thoughts и некоторые другие алгоритмы, которые помогают с решением задач на математику, логику и кодинг. Marco-o1 названа по аналогии с OpenAI o1, благодаря которой Chain-of-Thoughts промптинг и файнтюнинг получил особую популярность в GenAI индустрии.

В последнее время разные компании, в основном из Китая, стремятся повторить возможности o1. Самые впечатляющие результаты - у DeepSeek-R1-Lite-Preview, но веса этой модели не были опубликованы на момент проведения моих тестов. Однако разработчики DeepSeek R1 Lite обещали открыть доступ в свое время, и это будет очень интересно для нас.

А пока я решил поиграть с весами Marco-o1, модели хотя и легковесной, но реализующей те продвинутые алгоритмы, которые стоят за удивительными возможностями оригинальной o1. Как видно из карточки модели на HuggingFace, она создана путем файнтюнинга Qwen 2 7B на Chain-of-Thoughts датасете. Это комбинация датасетов Open-O1 и двух дополнительных наборов данных, которые разработчики из Alibaba Cloud сгенерировали, используя разные стратегии промптинга - Chain of Thoughts и обычные инструкции. Опубликована, к сожалению, только часть данных, но по ним ясно видно, какой формат использовали для файнтюнинга Chain-of-Thoughts:

Развертывание Marco o1 на локальном PC. Языковая модель рассуждений Искусственный интеллект, Программирование, Машинное обучение, Длиннопост

Сам по себе Chain-of-Thoughts - это формат промпта, который заставляет модель строить цепочки мыслей вроде этой. Но как в случае с моделью Marco, чтобы нейросеть могла эффективно работать с таким форматом, ее нужно файнтюнить на Chain-of-Thoughts датасете. Точно так же Instruct модель требует файнтюнинга на данных с определенной структурой промптов и ответов.

Marco o1 также использует алгоритм поиска по дереву Монте-Карло (MCTS), который, согласно статье разработчиков, позволяет исследовать несколько путей рассуждения, используя показатель достоверности, полученный из логарифмических вероятностей топ-K альтернативных токенов. К этому значению вероятности для каждого токена и к пяти альтернативным значениям применяют функцию softmax и получают показатель достоверности C(i) для i-того токена. Потом вычисляют среднее значение для всех пяти альтернатив. Более высокое среднее значение показывает большую уверенность в том, что выбранный путь рассуждения является более оптимальным.

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

Развертывание Marco o1 на локальном PC. Языковая модель рассуждений Искусственный интеллект, Программирование, Машинное обучение, Длиннопост

Изображение взято из статьи Marco-o1: Towards Open Reasoning Models for Open-Ended Solutions

Дальше есть еще пара интересных идей, например, Action Selection. Чтобы использовать только что описанный алгоритм MCTS, нужно определиться, что использовать в качестве единицы в пространстве решений, или одного шага рассуждения, и для этого разработчики применяли разные подходы - как целый шаг или действие в качестве единицы, так и мини-шаг - 32 или 63 токена.

Наконец, разработчики добавили механизм саморефлексии, в виде промпта в конце каждой цепочки рассуждений, который побуждает модель проверить свои решения: "Подожди, может быть я сделал какие-то ошибки, мне нужно обдумать все сначала". Это позволяет модели критически оценивать собственные рассуждения и находить в них ошибки.

А теперь немного практической части. Веса модели Marco-o1 имеют всего 7 миллиардов параметров. Я запускал ее и локально, и в облаке, в обоих случаях особо мощная видеокарта не требуется, особенно если применять квантизацию. Локально я запустил модель на RTX 4060 c 4-битной квантизацией bitsandbytes.

У меня была идея задеплоить полноценный LLM-server, совместимый с openai или gradio клиентом, и я выбрал два решения:

Первое - Text Generation Inference: на этот сервер уже был обзор на моем YouTube-канале, он высокопроизводительный, поддерживается платформой Huggingface, предлагает квантизацию и другие полезные фичи из коробки.

Запустить TGI локально не проблема, простой и правильный путь - в докере. Иначе придется устанавливать Rust и прочие зависимости, это ни к чему. Команда для запуска:

docker run --gpus all --shm-size 1g -p 8080:80 -v $path_to_volume:/data \

ghcr.io/huggingface/text-generation-inference:2.4.1 --model-id AIDC-AI/Marco-o1 --quantize bitsandbytes-nf4

Докер должен поддерживать GPU, что вообще не проблема на Linux или на Windows с WSL2. Флаг --quantize опциональный - можете выбрать опцию bitsandbytes (по умолчанию 8 бит) или вообще без сжатия, если есть достаточно видеопамяти.

В итоге на 4060 инференс получился очень быстрый. Я использовал следующий код для фронтенда на gradio:
статье.

import gradio as gr

from huggingface_hub import InferenceClient

client = InferenceClient("http://127.0.0.1:8080")

def respond(
message,

history: list[tuple[str, str]],

system_message,

max_tokens,

temperature,

top_p,

):
messages = [{"role": "system", "content": system_message}]

for val in history:

if val[0]:

messages.append({"role": "user", "content": val[0]})

if val[1]:

messages.append({"role": "assistant", "content": val[1]})

messages.append({"role": "user", "content": message})

response = ""
for message in client.chat_completion(

messages,

max_tokens=max_tokens,

stream=True,

temperature=temperature,

top_p=top_p,

):
token = message.choices[0].delta.content

response += token

yield response

system_prompt = """You are a well-trained AI assistant, your name is Marco-o1. Created by AI Business of Alibaba International Digital Business Group.

## IMPORTANT!!!!!!

When you answer questions, your thinking should be done in <Thought>, and your results should be output in <Output>.

<Thought> should be in English as much as possible, but there are 2 exceptions, one is the reference to the original text, and the other is that mathematics should use markdown format, and the output in <Output> needs to follow the language of the user input.

"""

demo = gr.ChatInterface(

respond,

additional_inputs=[

gr.Textbox(value=system_prompt, label="System message"),

gr.Slider(minimum=1, maximum=2048, value=1, step=1, label="Max new tokens"),

gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),

gr.Slider(

minimum=0.1,

maximum=1.0,

value=0.95,

step=0.05,

label="Top-p (nucleus sampling)",

),

],

)

if __name__ == "__main__":

demo.launch()

Однако я столкнулся с одной проблемой - системный промпт. Он взят из ollama, которая с таким промптом прекрасно работает. А вот TGI выдает ошибку, когда промпт превышает определенную длину. Так что для тех, кто не хочет возиться, предпочтительнее будет ollama, с ней все просто:

ollama pull marco-o1

ollama serve

А о том, как запустить ollama как сервис, чтобы создать таким образом свой LLM-сервер, я расскажу в следующей статье.

Показать полностью 2
6

Qwen 2.5 и Qwen 2.5 Coder - перспективная коллекция LLM для систем агентов

Разработчикам приложений Generative AI стоит обратить внимание на новую коллекцию моделей Qwen 2.5 и Qwen 2.5 Coder. С сентября 2024 года эти модели привлекают внимание разработчиков благодаря своей эффективности.

Во-первых, веса Qwen 2.5 доступны в версиях от 0.5B параметров — это очень легковесная модель — до 72B. Посередине есть 3, 7, 14 и 32B, каждую из которых вполне можно запускать локально, если у вас есть, например RTX 3080 с 16ГБ видеопамяти. В этом поможет квантизация (особенно в случае с 32B). Квантованные веса в форматах GGUF, GPTQ, AWQ есть в официальном репозитории.

Для более быстрого инференса и файнтюнинга Qwen 2.5 можно арендовать облачный GPU и работать с этой моделью так же, как с привычной нам Llama. Я показывал примеры файнтюнинга последней в предыдущих статьях, используя облачные видеокарты и стек Huggingface Transformers (код Qwen 2.5 добавлен в одну из последних версий transformers).

Есть базовая модель и версия Instruct, вы можете пробовать файнтюнить обе и смотреть, какой результат вам лучше подходит. Но если вы хотите взять готовую модель для инференса, то лучше конечно Instruct. Благодаря разнообразию размеров и форматов, Qwen может быть полезен для разных типов приложений - клиент-серверных, или десктопных, и даже на мобильных - вот как это выглядит:

Qwen 2.5 и Qwen 2.5 Coder - перспективная коллекция LLM для систем агентов Искусственный интеллект, Программирование, Машинное обучение, Deep learning, Длиннопост, Qwen

Изображение взято из треда про адаптацию Квен под мобильные платформы:

Но по-настоящему Qwen 2.5 привлек внимание разработчиков, когда вышла коллекция Qwen 2.5 Coder. Бенчмарки показали, что 32 B версия этой модели может конкурировать с GPT-4o по написанию кода, а это очень интересно, притом что 32 миллиарда параметров вполне можно запустить на средней мощности видеокарте, и получить хорошую скорость генерации токенов.

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

Разработчики говорят, что Qwen хорош для систем агентов.

Вот что написал недавно в Reddit один из них:

Qwen 2.5 и Qwen 2.5 Coder - перспективная коллекция LLM для систем агентов Искусственный интеллект, Программирование, Машинное обучение, Deep learning, Длиннопост, Qwen

Я длительное время использовал кастомный Chain-of-thoughts фреймворк с GPT-4, затем 4o.

Сегодня я развернул Qwen 2.5 14B и обнаружил, что его возможности вызова функций, Chain of Thoughts и следования инструкциям фантастические. Я бы даже сказал, лучше чем GPT 4/4o - для моих задач, во всяком случае

Кажется интересным не только то, что разработчик получил такую высокую производительность для сложных задач, требующих продвинутой логики, на  открытой LLM. Интересно и то, что для этого ему потребовались сравнительно небольшие мощности — ведь речь идёт о квантованной 14B модели:

Я использую одну видеокарту A40 для надёжности системы и высокой скорости генерации. Я выполнил установку через Ollama, взяв дефолтный квантованный Qwen 2.5 14B. A40 нужна для более высокой скорости, но я могу представить, что вам подойдёт и намного меньшая видеокарта для ваших задач

Мне нравится идея разработки агентских систем с помощью открытой модели на 14B параметров, для работы которой достаточно экономичной видеокарты A40 или даже менее мощной модели.

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

По поводу логического мышления, традиционный подход — это Chain of Thoughts, особая стратегия промптинга. Она побуждает LLM строить пошаговые рассуждения, более эффективные для решения задачи и самовалидации решения на каждом шаге. Некоторые модели специально обучены для работы с таким промптом, например, GPT-4o1. Непонятно, обучали ли Qwen строить цепочки мыслей, но, как видим, разработчики указывают на высокую производительность модели в этом отношении.

Показать полностью 2
Отличная работа, все прочитано!