Эксперименты с большими языковыми моделями. LLaMA
Успехи ChatGPT никому не дают покоя. Ну и нам тоже. Для эксперимента c GPT-алгоритмами мы взяли LLaMA (Large Language Model Meta AI). Цель эксперимента - повысить скорость и качество вводимых данных в модели СиММА, добавить к естественному интеллекту архитектора помощь искусственного интеллекта.
Алгоритм нашего бота динамически считывает текущую мета-модель СиММА и на ее основе обрабатывает данные, вводимые пользователем. Если пользователь вводит не структурированные данные, то бот их структурирует: выделяет нужные поля, находит нужные связи и записывает их в репозиторий. Возможен и диалоговый режим, основанный на prompt engineering (инженерия запросов к AI-движку). Если данные пользователя уже структурированы, то появляется возможность предсказывать, какой следующий шаг бизнес-процесса "нарисует" аналитик и даже можно предложить варианты (intent engineering) этого шага.
Несколько интересных фактов касательно нашего эксперимента:
- Мы взяли модель в 7 млрд. параметров, самую маленькую из моделей LLaMA-2. Этого вполне достаточно чтобы общаться с чатом "просто так", но когда требуется точность и достоверность ответа, выясняется, что этого мало - LLaMA начинает галюцинировать: то говорит чушь, то переходит на родной английский:) Зато, весит всего 4.1 GB, нет проблем скачать ее к себе на сервер.
- Мы написали оболочку на Python для одного агента и LLaMA смога бежать на лаптопе со средненькой видео-картой. Время "раздумий" составляет от нескольких секунд до пары минут. Очевидно, что для подключения второго агента ресурсов уже не хватит. Для промышленного решения необходима гораздо более мощная видео-карта.
- Поддержка русского языка. LLaMA обучалась на русской Википедии и, в целом, претензий к качеству языка нет. Однако, размер контекста у неё всего 4096 токенов, это примерно 3000 слов на английском, а на русском в несколько раз меньше. Чем меньше контекст, тем меньше объём данных, которые модель может получить на вход, держать в памяти, учитывать при генерации ответа, ну и собственно сам ответ.
Надеемся в российских аналогах контекст увеличен с учетом особенностей русского языка или оптимизирован сам способ токенизации.
- Интеграция с СиММА: Мы использовали функционал "function calling", выпущенный LLaMA в июле, 2023. Function calling существенно облегчил выполнение нашей задачи: получение ответа чата в строго структурированном формате, легко конвертируемом в JSON. Примечание: замена этой функциональности инжинирингом промта (для тех движков, которые на дают function calling) не даёт устойчивого результата, так что будем выбирать только те языковые модели (движки), которые поддерживают function calling или некий его аналог.
Разработка выполнена ООО "Марк Аврелий" на языке Python с использованием API СиММА.
Следующий эксперимент проведем на российском NLP-процессоре, благо такие стали доступны хотя бы в бета-режиме. Следите за нашими новостями! Лабораторные успехи впечатляют, так что в начале 2024 года будем думать о том, как это коммерциализировать.