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

Недавний релиз 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 на своей виртуальной машине - вот как я это сделал в облаке immers.cloud. Кстати, видеокарты RTX 4090 более чем достаточно для работы мультимодальной 11B. Если хотите версию 90B, можете выбрать другой GPU или несколько. Llama Stack поддерживает мульти-GPU и квантизацию.

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

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

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

Если вы занимаетесь рендерингом, ИИ или просто любите играть, подписывайтесь на наш Telegram-канал. В нем мы проводим интересные активности, делимся новостями компании и разыгрываем призы

Читать также:

Начать дискуссию