Мультимодальные приложения на Llama 3.2 и Llama Stack

2ad4ca698e66aa593c8c6c3a4b3e0f3e

Недавний релиз Llama 3.2 с мультимодальными версиями 11B и 90B открывает возможности для создания AI приложений, анализирующих визуальный ввод.

Мультимодальные модели были и раньше, но это первая официальная версия Llama с такими функциями. Модель может быть использована для распознавания объектов и текста на изображении, как это делает GPT-4o. Довольно интересен технический рецепт создания мультимодальной Llama 3.2. За основу была взята предыдущая версия — 3.1, обычная текстовая LLM. Логично, если принять во внимание, что конечная цель — извлекать признаки изображения и «транслировать» их в текстовые токены. 

К LLM добавили image encoder, это модуль, который встраивает представление картинки-ввода в векторное пространство. А также слои image adapter«а — для того, чтобы полученные визуальные признаки передавать в языковую модель. Подробнее об энкодерах и адаптерах изображений можно прочитать, например, в статье Bordes et al. 2024 — введение в визуально-языковые модели. Обучают VLM на парах изображение-текст, именно так обучали и Llama 3.2. Причем в несколько этапов — сначала на большом корпусе данных, а затем применили файнтюнинг на меньшей, но более качественной выборке. Как показывает прошлый опыт работы с моделями Llama 3, такой подход дает хорошие результаты. Базовая модель, обученная на большом корпусе данных (например, 15трлн токенов Llama 3), хорошо генерализуется при файнтюнинге и меньше подвержена оверфиттингу. Пример — моя модель ruslandev/llama-3–8b-gpt-4o-ru1.0, которая после обучения на небольшом, но качественном датасете превзошла GPT-3.5 на русскоязычном бенчмарке.

Архитектура мультимодальных моделей Llama 3.2 — вопрос интересный, но в этой статье я хочу рассказать и о прикладной стороне, то есть о разработке AI приложений с использованием этих моделей.

Создатели Llama предложили Llama Stack — фреймворк для работы с их моделями, который позволяет деплоить многофункциональные API (для инференса, систем агентов, генерации собственных данных для обучения и других задач). У Llama Stack есть несколько клиентских SDK, в том числе на Python. С недавнего времени поддерживается мобильная платформа iOS — потому что модели Llama 3.2 1B и 3B могут работать на мобильном девайсе. Это обычные текстовые, только очень легковесные модели. По качеству сопоставимы с Gemma 2 и Phi-3. 

Но если вас интересует именно мультимодальная Llama 3.2, то для ее деплоя на Llama Stack потребуется GPU —  особенно для версии 90B. Я развернул Llama Stack с мультимодальной 11B в облаке immers.cloud на видеокарте RTX 4090 и протестировал через Inference API и Python-клиент. По моим впечатлениям, и модель, и API вполне себе готовы к запуску в продакшен. Llama Stack поддерживает разнообразные API-бэкенды, как self-hosted (например, TGI) так и cloud-hosted (AWS Bedrock, Together и другие).

Если вам нужно развернуть Llama Stack на своей виртуальной машине — вот как я это сделал в облаке. Кстати, видеокарты RTX 4090 более чем достаточно для работы мультимодальной 11B. Если хотите версию 90B, можете выбрать другой GPU или несколько. Llama Stack поддерживает мульти-GPU и квантизацию. 

Я установил фреймворк, используя anaconda, но есть и вариант для тех, кто предпочитает докер. Мой тест модели и фреймворка можно посмотреть в этом видео:

Из минусов фреймворка — не помешала бы более подробная документация. В репозитории Llama Stack есть пример из демо — приложение-помощник дизайнера интерьера. Оно демонстрирует несколько концепций фреймворка, в том числе — создание и конфигурация агента, мультимодальный инференс, работа с памятью и RAG. 

Чем хорошо наличие еще одного фреймворка для Generative AI? На первый взгляд функционал Llama Stack напоминает то, что уже было до него — LangChain, LlamaIndex и другие подобные фреймворки. Хорошо то, что этот инструмент является частью экосистемы Llama и, вероятно, станет официальным открытым API последующих версий ламы. Прицел на кроссплатформенность и многозадачность говорит о том же. Ранние доморощенные решения, скорее всего, перестанут быть актуальными, что относится и к моему собственному фреймворку — gptchain. Однако это верный признак того, что прикладная отрасль Generative AI становится более зрелой.

© Habrahabr.ru