API вывода LLM позволяет полностью запускать большие языковые модели (LLM) на устройстве, что позволяет выполнять широкий спектр задач, таких как генерация текста, извлечение информации на естественном языке и реферирование документов. Эта задача обеспечивает встроенную поддержку нескольких больших языковых моделей преобразования текста в текст, что позволяет применять новейшие модели генеративного ИИ на устройстве в своих приложениях и продуктах.
Задача обеспечивает встроенную поддержку различных LLM. Модели, размещённые на странице сообщества LiteRT , доступны в формате, совместимом с MediaPipe, и не требуют дополнительных этапов конвертации или компиляции.
С помощью AI Edge Torch можно экспортировать модели PyTorch в мультисигнатурные модели LiteRT ( tflite
), которые объединяются с параметрами токенизатора для создания пакетов задач. Модели, преобразованные с помощью AI Edge Torch, совместимы с API вывода LLM и могут работать на процессорном сервере, что делает их подходящими для приложений Android и iOS.
Начать
Начните работу с этой задачей, следуя одному из этих руководств по реализации для вашей целевой платформы. Эти руководства, ориентированные на конкретные платформы, проведут вас через базовую реализацию этой задачи с примерами кода, использующими доступную модель, и рекомендуемыми параметрами конфигурации:
Веб :
Андроид :
iOS
Подробности задачи
В этом разделе описываются возможности, входы, выходы и параметры конфигурации этой задачи.
Функции
API вывода LLM содержит следующие ключевые функции:
- Генерация текста в текст — генерация текста на основе введенной текстовой подсказки.
- Выбор программы магистратуры (LLM) — используйте несколько моделей, чтобы адаптировать приложение к вашим конкретным сценариям использования. Вы также можете переобучить модель и применить к ней собственные веса.
- Поддержка LoRA . Расширьте и настройте возможности LLM с помощью модели LoRA, либо обучив ее на вашем полном наборе данных, либо взяв готовые предварительно созданные модели LoRA из сообщества с открытым исходным кодом (несовместимо с моделями, преобразованными с помощью AI Edge Torch Generative API).
Входные данные задачи | Результаты задач |
---|---|
API вывода LLM принимает следующие входные данные:
| API вывода LLM выдает следующие результаты:
|
Варианты конфигураций
Эта задача имеет следующие параметры конфигурации:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
modelPath | Путь к месту хранения модели в каталоге проекта. | ПУТЬ | Н/Д |
maxTokens | Максимальное количество токенов (входные токены + выходные токены), которые обрабатывает модель. | Целое число | 512 |
topK | Количество токенов, которые модель учитывает на каждом этапе генерации. Ограничивает прогнозы k наиболее вероятными токенами. | Целое число | 40 |
temperature | Степень случайности, вносимая при генерации. Более высокая температура приводит к большей креативности в генерируемом тексте, тогда как более низкая температура обеспечивает более предсказуемую генерацию. | Плавать | 0,8 |
randomSeed | Случайное начальное число, используемое при генерации текста. | Целое число | 0 |
loraPath | Абсолютный путь к модели LoRA локально на устройстве. Примечание: совместимо только с моделями на базе графических процессоров. | ПУТЬ | Н/Д |
resultListener | Настраивает прослушиватель результатов на асинхронное получение результатов. Применимо только при использовании метода асинхронной генерации. | Н/Д | Н/Д |
errorListener | Устанавливает необязательный прослушиватель ошибок. | Н/Д | Н/Д |
Модели
API вывода LLM поддерживает множество моделей преобразования текста в текст, включая встроенную поддержку нескольких моделей, оптимизированных для работы в браузерах и на мобильных устройствах. Эти облегченные модели можно использовать для выполнения вывода непосредственно на устройстве.
Перед инициализацией LLM Inference API загрузите модель и сохраните файл в каталоге вашего проекта. Вы можете использовать предварительно сконвертированную модель из репозитория LiteRT Community HuggingFace или преобразовать модель в формат, совместимый с MediaPipe, с помощью AI Edge Torch Generative Converter .
Если у вас еще нет LLM для использования с LLM Inference API, начните с одной из следующих моделей.
Джемма-3н
Gemma-3n E2B и E4B — новейшие модели семейства Gemma, представляющие собой лёгкие, современные открытые модели, созданные на основе тех же исследований и технологий, что и модели Gemini . Модели Gemma 3n разработаны для эффективной работы на устройствах с низким потреблением ресурсов. Они поддерживают мультимодальный ввод, обработку текста, изображений и аудиоданных, а также генерацию текстовых выходных данных.
Модели Gemma 3n используют технологию выборочной активации параметров для снижения требований к ресурсам. Эта технология позволяет моделям работать с эффективным размером параметров 2B и 4B, что меньше общего числа содержащихся в них параметров.
Модели Gemma-3n E2B и E4B от HuggingFace доступны в формате .litertlm
и готовы к использованию с API вывода LLM для Android и Web.
Джемма-3 1Б
Gemma-3 1B — самая лёгкая модель в семействе Gemma, состоящем из лёгких, современных открытых моделей, созданных на основе тех же исследований и технологий, что и модели Gemini . Модель содержит параметры 1B и открытые веса.
Модель Gemma-3 1B от HuggingFace доступна в формате .task
/ .litertlm
и готова к использованию с API вывода LLM для Android и веб-приложений.
При запуске Gemma-3 1B с API вывода LLM настройте следующие параметры соответствующим образом:
-
preferredBackend
: используйте этот параметр для выбора междуCPU
иGPU
. Этот параметр доступен только для Android. -
supportedLoraRanks
: API вывода LLM невозможно настроить для поддержки низкоранговой адаптации (LoRA) с моделью Gemma-3 1B. Не используйте параметрыsupportedLoraRanks
илиloraRanks
. -
maxTokens
: значениеmaxTokens
должно соответствовать размеру контекста, встроенному в модель. Это также может называться кэшем «ключ-значение» (KV) или длиной контекста. -
numResponses
: всегда должно быть равно 1. Эта опция доступна только для Web.
При запуске Gemma-3 1B в веб-приложениях инициализация может привести к длительной блокировке текущего потока. По возможности всегда запускайте модель из рабочего потока.
Джемма-2 2Б
Gemma-2 2B — это вариант Gemma-2 2B, работающий на всех платформах.
Модель содержит параметры 2B и открытые веса. Gemma-2 2B известна своими передовыми навыками рассуждения для моделей своего класса.
Преобразование модели PyTorch
Генеративные модели PyTorch можно преобразовать в формат, совместимый с MediaPipe, с помощью API AI Edge Torch Generative . Этот API можно использовать для преобразования моделей PyTorch в модели LiteRT (TensorFlow Lite) с мультисигнатурой. Подробнее о сопоставлении и экспорте моделей см. на странице AI Edge Torch на GitHub .
Преобразование модели PyTorch с помощью AI Edge Torch Generative API включает следующие этапы:
- Загрузите контрольные точки модели PyTorch.
- Используйте API AI Edge Torch Generative для создания, преобразования и квантования модели в формат файла, совместимый с MediaPipe (
.tflite
). - Создайте пакет задач (
.task
/.litertlm
) из файла tflite и токенизатора модели.
Конвертер Torch Generative выполняет конвертацию только для ЦП и требует наличия машины Linux с объемом оперативной памяти не менее 64 ГБ.
Чтобы создать пакет задач , используйте скрипт связывания . В процессе связывания сопоставленная модель упаковывается в дополнительные метаданные (например, параметры токенизатора), необходимые для выполнения сквозного вывода.
Для сборки модели требуется пакет MediaPipe PyPI. Скрипт конвертации доступен во всех пакетах MediaPipe после 0.10.14
.
Установите и импортируйте зависимости с помощью следующей команды:
$ python3 -m pip install mediapipe
Используйте библиотеку genai.bundler
для сборки модели:
import mediapipe as mp
from mediapipe.tasks.python.genai import bundler
config = bundler.BundleConfig(
tflite_model=TFLITE_MODEL,
tokenizer_model=TOKENIZER_MODEL,
start_token=START_TOKEN,
stop_tokens=STOP_TOKENS,
output_filename=OUTPUT_FILENAME,
enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
Параметр | Описание | Принятые значения |
---|---|---|
tflite_model | Путь к экспортированной модели TFLite AI Edge. | ПУТЬ |
tokenizer_model | Путь к модели токенизатора SentencePiece. | ПУТЬ |
start_token | Начальный токен, специфичный для модели. Начальный токен должен присутствовать в предоставленной модели токенизатора. | НИТЬ |
stop_tokens | Стоп-токены, специфичные для модели. Стоп-токены должны присутствовать в предоставленной модели токенизатора. | СПИСОК[СТРОКА] |
output_filename | Имя выходного файла пакета задач. | ПУТЬ |
Настройка LoRA
API вывода LLM Mediapipe можно настроить для поддержки низкоранговой адаптации (LoRA) для больших языковых моделей. Используя точно настроенные модели LoRA, разработчики могут настраивать поведение LLM посредством экономичного процесса обучения.Поддержка LoRA в LLM Inference API работает для всех вариантов Gemma и моделей Phi-2 для бэкэнда на GPU, при этом веса LoRA применяются только к слоям внимания. Эта начальная реализация служит экспериментальным API для будущих разработок, и в следующих обновлениях планируется поддержка большего количества моделей и различных типов слоёв.
Подготовка моделей LoRA
Следуйте инструкциям на HuggingFace , чтобы обучить точно настроенную модель LoRA на вашем собственном наборе данных с поддерживаемыми типами моделей: Gemma или Phi-2. Модели Gemma-2 2B , Gemma 2B и Phi-2 доступны на HuggingFace в формате safetensors. Поскольку LLM Inference API поддерживает LoRA только на уровнях внимания, укажите уровни внимания только при создании LoraConfig
следующим образом:
# For Gemma
from peft import LoraConfig
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)
# For Phi-2
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)
Для тестирования доступны публично настроенные модели LoRA, соответствующие API вывода LLM, доступные на HuggingFace. Например, monsterapi/gemma-2b-lora-maths-orca-200k для Gemma-2B и lole25/phi-2-sft-ultrachat-lora для Phi-2.
После обучения на подготовленном наборе данных и сохранения модели вы получаете файл adapter_model.safetensors
, содержащий точно настроенные веса модели LoRA. Файл safetensors — это контрольная точка LoRA, используемая при конвертации модели.
На следующем этапе необходимо преобразовать веса модели в плоский буфер TensorFlow Lite с помощью пакета MediaPipe Python. ConversionConfig
должны быть указаны базовые параметры модели, а также дополнительные параметры LoRA. Обратите внимание: поскольку API поддерживает вывод LoRA только с использованием графического процессора, бэкенд должен быть установлен на 'gpu'
.
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
# Other params related to base model
...
# Must use gpu backend for LoRA conversion
backend='gpu',
# LoRA related params
lora_ckpt=LORA_CKPT,
lora_rank=LORA_RANK,
lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
Конвертер выведет два файла TFLite flatbuffer: один для базовой модели, а другой для модели LoRA.
Вывод модели LoRA
API вывода LLM для Web, Android и iOS обновлены для поддержки вывода модели LoRA.
Android поддерживает статическую модель LoRA во время инициализации. Для загрузки модели LoRA пользователи указывают путь к модели LoRA, а также базовый LLM.// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
.setModelPath('<path to base model>')
.setMaxTokens(1000)
.setTopK(40)
.setTemperature(0.8)
.setRandomSeed(101)
.setLoraPath('<path to LoRA model>')
.build()
// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)
Чтобы запустить вывод LLM с LoRA, используйте те же методы generateResponse()
или generateResponseAsync()
что и в базовой модели.