API LLM Inference позволяет запускать большие языковые модели (LLM) полностью на устройстве для веб-приложений, которые можно использовать для выполнения широкого спектра задач, таких как генерация текста, получение информации в форме естественного языка и обобщение документов. Задача обеспечивает встроенную поддержку нескольких больших языковых моделей преобразования текста в текст, поэтому вы можете применять новейшие генеративные модели искусственного интеллекта на устройстве к своим веб-приложениям.
Чтобы быстро добавить API вывода LLM в свое веб-приложение, следуйте инструкциям в кратком руководстве . Базовый пример веб-приложения, использующего LLM Inference API, см. в примере приложения . Для более глубокого понимания того, как работает API LLM Inference, обратитесь к разделам «Параметры конфигурации» , «Преобразование модели » и «Настройка LoRA» .
Вы можете увидеть эту задачу в действии с помощью демо-версии MediaPipe Studio . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Быстрый старт
Выполните следующие шаги, чтобы добавить API вывода LLM в свое веб-приложение. Для API вывода LLM требуется веб-браузер, совместимый с WebGPU. Полный список совместимых браузеров см. в разделе «Совместимость браузеров с графическим процессором» .
Добавить зависимости
API вывода LLM использует пакет @mediapipe/tasks-genai
.
Установите необходимые пакеты для локального промежуточного хранения:
npm install @mediapipe/tasks-genai
Для развертывания на сервере используйте службу сети доставки контента (CDN), например jsDelivr , чтобы добавить код непосредственно на вашу HTML-страницу:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Скачать модель
Загрузите Gemma-2 2B в 8-битном квантованном формате с Kaggle Models . Дополнительную информацию о доступных моделях см. в документации по моделям .
Сохраните модель в каталоге вашего проекта:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Укажите путь к модели с помощью параметра modelAssetPath
объекта baseOptions
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Инициализировать задачу
Инициализируйте задачу с базовыми параметрами конфигурации:
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
llmInference = await LlmInference.createFromOptions(genai, {
baseOptions: {
modelAssetPath: '/assets/gemma-2b-it-gpu-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
Запустить задачу
Используйте функцию generateResponse()
для запуска выводов.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Для потоковой передачи ответа используйте следующее:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Образец заявления
Пример приложения представляет собой пример базового приложения для создания текста в Интернете с использованием API вывода LLM. Вы можете использовать приложение в качестве отправной точки для своего собственного веб-приложения или обращаться к нему при изменении существующего приложения. Код примера размещен на GitHub .
Клонируйте репозиторий git, используя следующую команду:
git clone https://github.com/google-ai-edge/mediapipe-samples
Дополнительную информацию см. в Руководстве по установке для Интернета .
Варианты конфигурации
Используйте следующие параметры конфигурации для настройки веб-приложения:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
modelPath | Путь к хранению модели в каталоге проекта. | ПУТЬ | Н/Д |
maxTokens | Максимальное количество токенов (входные токены + выходные токены), которые обрабатывает модель. | Целое число | 512 |
topK | Количество токенов, которые модель учитывает на каждом этапе генерации. Ограничивает прогнозы первыми k наиболее вероятными токенами. | Целое число | 40 |
temperature | Количество случайности, введенной во время генерации. Более высокая температура приводит к большей креативности в сгенерированном тексте, а более низкая температура обеспечивает более предсказуемую генерацию. | Плавать | 0,8 |
randomSeed | Случайное начальное число, используемое при генерации текста. | Целое число | 0 |
loraRanks | Ранги LoRA будут использоваться моделями LoRA во время выполнения. Примечание. Это совместимо только с моделями графических процессоров. | Целочисленный массив | Н/Д |
Преобразование модели
API вывода LLM совместим со следующими типами моделей, некоторые из которых требуют преобразования модели. Используйте таблицу, чтобы определить метод необходимых шагов для вашей модели.
Модели | Метод преобразования | Совместимые платформы | Тип файла |
---|---|---|---|
Джемма-3 1Б | Никакого преобразования не требуется | Андроид, веб | .задача |
Джемма 2Б, Джемма 7Б, Джемма-2 2Б | Никакого преобразования не требуется | Android, iOS, веб | .bin |
Фи-2, СтойлЛМ, Сокол | Скрипт преобразования MediaPipe | Android, iOS, веб | .bin |
Все модели PyTorch LLM | Генеративная библиотека AI Edge Torch | Андроид, iOS | .задача |
Чтобы узнать, как конвертировать другие модели, см. раздел «Преобразование модели» .
Кастомизация ЛоРА
API вывода LLM поддерживает настройку LoRA (адаптация низкого ранга) с использованием библиотеки PEFT (точная настройка с эффективным использованием параметров). Настройка LoRA настраивает поведение LLM посредством экономически эффективного процесса обучения, создавая небольшой набор обучаемых весов на основе новых обучающих данных, а не переобучая всю модель.
API вывода LLM поддерживает добавление весов LoRA к слоям внимания моделей Gemma-2 2B , Gemma 2B и Phi-2 . Загрузите модель в формате safetensors
.
Базовая модель должна быть в формате safetensors
, чтобы можно было создавать веса LoRA. После обучения LoRA вы можете преобразовать модели в формат FlatBuffers для запуска в MediaPipe.
Подготовьте гири LoRA
Используйте руководство по методам LoRA от PEFT, чтобы обучить точно настроенную модель LoRA на собственном наборе данных.
API LLM Inference поддерживает 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 доступны в adapter_model.safetensors
. Файл safetensors
— это контрольная точка LoRA, используемая во время преобразования модели.
Преобразование модели
Используйте пакет Python MediaPipe для преобразования весов модели в формат Flatbuffer. ConversionConfig
определяет параметры базовой модели, а также дополнительные параметры LoRA.
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_FILE ,
)
converter.convert_checkpoint(config)
Конвертер создаст два файла, совместимых с MediaPipe: один для базовой модели, а другой для модели LoRA.
Вывод модели LoRA
Интернет поддерживает динамический LoRA во время выполнения, то есть пользователи объявляют ранги LoRA во время инициализации. Это означает, что вы можете заменять разные модели LoRA во время выполнения.
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
const llmInference = await LlmInference.createFromOptions(genai, {
// options for the base model
...
// LoRA ranks to be used by the LoRA models during runtime
loraRanks: [4, 8, 16]
});
Загрузите модели LoRA во время выполнения после инициализации базовой модели. Запустите модель LoRA, передав ссылку на модель при создании ответа LLM.
// Load several LoRA models. The returned LoRA model reference is used to specify
// which LoRA model to be used for inference.
loraModelRank4 = await llmInference.loadLoraModel(loraModelRank4Url);
loraModelRank8 = await llmInference.loadLoraModel(loraModelRank8Url);
// Specify LoRA model to be used during inference
llmInference.generateResponse(
inputPrompt,
loraModelRank4,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
API LLM Inference позволяет запускать большие языковые модели (LLM) полностью на устройстве для веб-приложений, которые можно использовать для выполнения широкого спектра задач, таких как генерация текста, получение информации в форме естественного языка и обобщение документов. Задача обеспечивает встроенную поддержку нескольких больших языковых моделей преобразования текста в текст, поэтому вы можете применять новейшие генеративные модели искусственного интеллекта на устройстве к своим веб-приложениям.
Чтобы быстро добавить API вывода LLM в свое веб-приложение, следуйте инструкциям в кратком руководстве . Базовый пример веб-приложения, использующего LLM Inference API, см. в примере приложения . Для более глубокого понимания того, как работает API LLM Inference, обратитесь к разделам «Параметры конфигурации» , «Преобразование модели » и «Настройка LoRA» .
Вы можете увидеть эту задачу в действии с помощью демо-версии MediaPipe Studio . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Быстрый старт
Выполните следующие шаги, чтобы добавить API вывода LLM в свое веб-приложение. Для API вывода LLM требуется веб-браузер, совместимый с WebGPU. Полный список совместимых браузеров см. в разделе «Совместимость браузеров с графическим процессором» .
Добавить зависимости
API вывода LLM использует пакет @mediapipe/tasks-genai
.
Установите необходимые пакеты для локального промежуточного хранения:
npm install @mediapipe/tasks-genai
Для развертывания на сервере используйте службу сети доставки контента (CDN), например jsDelivr , чтобы добавить код непосредственно на вашу HTML-страницу:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Скачать модель
Загрузите Gemma-2 2B в 8-битном квантованном формате с Kaggle Models . Дополнительную информацию о доступных моделях см. в документации по моделям .
Сохраните модель в каталоге вашего проекта:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Укажите путь к модели с помощью параметра modelAssetPath
объекта baseOptions
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Инициализировать задачу
Инициализируйте задачу с базовыми параметрами конфигурации:
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
llmInference = await LlmInference.createFromOptions(genai, {
baseOptions: {
modelAssetPath: '/assets/gemma-2b-it-gpu-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
Запустить задачу
Используйте функцию generateResponse()
для запуска выводов.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Для потоковой передачи ответа используйте следующее:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Образец заявления
Пример приложения представляет собой пример базового приложения для создания текста в Интернете с использованием API вывода LLM. Вы можете использовать приложение в качестве отправной точки для своего собственного веб-приложения или обращаться к нему при изменении существующего приложения. Код примера размещен на GitHub .
Клонируйте репозиторий git, используя следующую команду:
git clone https://github.com/google-ai-edge/mediapipe-samples
Дополнительную информацию см. в Руководстве по установке для Интернета .
Варианты конфигурации
Используйте следующие параметры конфигурации для настройки веб-приложения:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
modelPath | Путь к хранению модели в каталоге проекта. | ПУТЬ | Н/Д |
maxTokens | Максимальное количество токенов (входные токены + выходные токены), которые обрабатывает модель. | Целое число | 512 |
topK | Количество токенов, которые модель учитывает на каждом этапе генерации. Ограничивает прогнозы первыми k наиболее вероятными токенами. | Целое число | 40 |
temperature | Количество случайности, введенной во время генерации. Более высокая температура приводит к большей креативности в сгенерированном тексте, а более низкая температура обеспечивает более предсказуемую генерацию. | Плавать | 0,8 |
randomSeed | Случайное начальное число, используемое при генерации текста. | Целое число | 0 |
loraRanks | Ранги LoRA будут использоваться моделями LoRA во время выполнения. Примечание. Это совместимо только с моделями графических процессоров. | Целочисленный массив | Н/Д |
Преобразование модели
API вывода LLM совместим со следующими типами моделей, некоторые из которых требуют преобразования модели. Используйте таблицу, чтобы определить метод необходимых шагов для вашей модели.
Модели | Метод преобразования | Совместимые платформы | Тип файла |
---|---|---|---|
Джемма-3 1Б | Никакого преобразования не требуется | Андроид, веб | .задача |
Джемма 2Б, Джемма 7Б, Джемма-2 2Б | Никакого преобразования не требуется | Android, iOS, веб | .bin |
Фи-2, СтойлЛМ, Сокол | Скрипт преобразования MediaPipe | Android, iOS, веб | .bin |
Все модели PyTorch LLM | Генеративная библиотека AI Edge Torch | Андроид, iOS | .задача |
Чтобы узнать, как конвертировать другие модели, см. раздел «Преобразование модели» .
Кастомизация ЛоРА
API вывода LLM поддерживает настройку LoRA (адаптация низкого ранга) с использованием библиотеки PEFT (точная настройка с эффективным использованием параметров). Настройка LoRA настраивает поведение LLM посредством экономически эффективного процесса обучения, создавая небольшой набор обучаемых весов на основе новых обучающих данных, а не переобучая всю модель.
API вывода LLM поддерживает добавление весов LoRA к слоям внимания моделей Gemma-2 2B , Gemma 2B и Phi-2 . Загрузите модель в формате safetensors
.
Базовая модель должна быть в формате safetensors
, чтобы можно было создавать веса LoRA. После обучения LoRA вы можете преобразовать модели в формат FlatBuffers для запуска в MediaPipe.
Подготовьте гири LoRA
Используйте руководство по методам LoRA от PEFT, чтобы обучить точно настроенную модель LoRA на собственном наборе данных.
API LLM Inference поддерживает 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 доступны в adapter_model.safetensors
. Файл safetensors
— это контрольная точка LoRA, используемая во время преобразования модели.
Преобразование модели
Используйте пакет Python MediaPipe для преобразования весов модели в формат Flatbuffer. ConversionConfig
определяет параметры базовой модели, а также дополнительные параметры LoRA.
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_FILE ,
)
converter.convert_checkpoint(config)
Конвертер создаст два файла, совместимых с MediaPipe: один для базовой модели, а другой для модели LoRA.
Вывод модели LoRA
Интернет поддерживает динамический LoRA во время выполнения, то есть пользователи объявляют ранги LoRA во время инициализации. Это означает, что вы можете заменять разные модели LoRA во время выполнения.
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
const llmInference = await LlmInference.createFromOptions(genai, {
// options for the base model
...
// LoRA ranks to be used by the LoRA models during runtime
loraRanks: [4, 8, 16]
});
Загрузите модели LoRA во время выполнения после инициализации базовой модели. Запустите модель LoRA, передав ссылку на модель при создании ответа LLM.
// Load several LoRA models. The returned LoRA model reference is used to specify
// which LoRA model to be used for inference.
loraModelRank4 = await llmInference.loadLoraModel(loraModelRank4Url);
loraModelRank8 = await llmInference.loadLoraModel(loraModelRank8Url);
// Specify LoRA model to be used during inference
llmInference.generateResponse(
inputPrompt,
loraModelRank4,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
API LLM Inference позволяет запускать большие языковые модели (LLM) полностью на устройстве для веб-приложений, которые можно использовать для выполнения широкого спектра задач, таких как генерация текста, получение информации в форме естественного языка и обобщение документов. Задача обеспечивает встроенную поддержку нескольких больших языковых моделей преобразования текста в текст, поэтому вы можете применять новейшие генеративные модели искусственного интеллекта на устройстве к своим веб-приложениям.
Чтобы быстро добавить API вывода LLM в свое веб-приложение, следуйте инструкциям в кратком руководстве . Базовый пример веб-приложения, использующего LLM Inference API, см. в примере приложения . Для более глубокого понимания того, как работает API LLM Inference, обратитесь к разделам «Параметры конфигурации» , «Преобразование модели » и «Настройка LoRA» .
Вы можете увидеть эту задачу в действии с помощью демо-версии MediaPipe Studio . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Быстрый старт
Выполните следующие шаги, чтобы добавить API вывода LLM в свое веб-приложение. Для API вывода LLM требуется веб-браузер, совместимый с WebGPU. Полный список совместимых браузеров см. в разделе «Совместимость браузеров с графическим процессором» .
Добавить зависимости
API вывода LLM использует пакет @mediapipe/tasks-genai
.
Установите необходимые пакеты для локального промежуточного хранения:
npm install @mediapipe/tasks-genai
Для развертывания на сервере используйте службу сети доставки контента (CDN), например jsDelivr , чтобы добавить код непосредственно на вашу HTML-страницу:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Скачать модель
Загрузите Gemma-2 2B в 8-битном квантованном формате с Kaggle Models . Дополнительную информацию о доступных моделях см. в документации по моделям .
Сохраните модель в каталоге вашего проекта:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Укажите путь к модели с помощью параметра modelAssetPath
объекта baseOptions
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Инициализировать задачу
Инициализируйте задачу с базовыми параметрами конфигурации:
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
llmInference = await LlmInference.createFromOptions(genai, {
baseOptions: {
modelAssetPath: '/assets/gemma-2b-it-gpu-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
Запустить задачу
Используйте функцию generateResponse()
для запуска выводов.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Для потоковой передачи ответа используйте следующее:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Образец заявления
Пример приложения представляет собой пример базового приложения для создания текста в Интернете с использованием API вывода LLM. Вы можете использовать приложение в качестве отправной точки для своего собственного веб-приложения или обращаться к нему при изменении существующего приложения. Код примера размещен на GitHub .
Клонируйте репозиторий git, используя следующую команду:
git clone https://github.com/google-ai-edge/mediapipe-samples
Дополнительную информацию см. в Руководстве по установке для Интернета .
Варианты конфигурации
Используйте следующие параметры конфигурации для настройки веб-приложения:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
modelPath | Путь к хранению модели в каталоге проекта. | ПУТЬ | Н/Д |
maxTokens | Максимальное количество токенов (входные токены + выходные токены), которые обрабатывает модель. | Целое число | 512 |
topK | Количество токенов, которые модель учитывает на каждом этапе генерации. Ограничивает прогнозы первыми k наиболее вероятными токенами. | Целое число | 40 |
temperature | Количество случайности, введенной во время генерации. Более высокая температура приводит к большей креативности в сгенерированном тексте, а более низкая температура обеспечивает более предсказуемую генерацию. | Плавать | 0,8 |
randomSeed | Случайное начальное число, используемое при генерации текста. | Целое число | 0 |
loraRanks | Ранги LoRA будут использоваться моделями LoRA во время выполнения. Примечание. Это совместимо только с моделями графических процессоров. | Целочисленный массив | Н/Д |
Преобразование модели
API вывода LLM совместим со следующими типами моделей, некоторые из которых требуют преобразования моделей. Используйте таблицу, чтобы определить метод необходимых шагов для вашей модели.
Модели | Метод преобразования | Совместимые платформы | Тип файла |
---|---|---|---|
Джемма-3 1Б | Никакого преобразования не требуется | Андроид, веб | .задача |
Джемма 2Б, Джемма 7Б, Джемма-2 2Б | Никакого преобразования не требуется | Android, iOS, веб | .bin |
Фи-2, СтойлЛМ, Сокол | Скрипт преобразования MediaPipe | Android, iOS, веб | .bin |
Все модели PyTorch LLM | Генеративная библиотека AI Edge Torch | Андроид, iOS | .задача |
Чтобы узнать, как конвертировать другие модели, см. раздел «Преобразование модели» .
Кастомизация ЛоРА
API вывода LLM поддерживает настройку LoRA (адаптация низкого ранга) с использованием библиотеки PEFT (точная настройка с эффективным использованием параметров). Настройка LoRA настраивает поведение LLM посредством экономически эффективного процесса обучения, создавая небольшой набор обучаемых весов на основе новых обучающих данных, а не переобучая всю модель.
API вывода LLM поддерживает добавление весов LoRA к слоям внимания моделей Gemma-2 2B , Gemma 2B и Phi-2 . Загрузите модель в формате safetensors
.
Базовая модель должна быть в формате safetensors
, чтобы можно было создавать веса LoRA. После обучения LoRA вы можете преобразовать модели в формат FlatBuffers для запуска в MediaPipe.
Подготовьте гири LoRA
Используйте руководство по методам LoRA от PEFT, чтобы обучить точно настроенную модель LoRA на собственном наборе данных.
API LLM Inference поддерживает 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 доступны в adapter_model.safetensors
. Файл safetensors
— это контрольная точка LoRA, используемая во время преобразования модели.
Преобразование модели
Используйте пакет Python MediaPipe для преобразования весов модели в формат Flatbuffer. ConversionConfig
определяет параметры базовой модели, а также дополнительные параметры LoRA.
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_FILE ,
)
converter.convert_checkpoint(config)
Конвертер создаст два файла, совместимых с MediaPipe: один для базовой модели, а другой для модели LoRA.
Вывод модели LoRA
Интернет поддерживает динамический LoRA во время выполнения, то есть пользователи объявляют ранги LoRA во время инициализации. Это означает, что вы можете заменять разные модели LoRA во время выполнения.
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
const llmInference = await LlmInference.createFromOptions(genai, {
// options for the base model
...
// LoRA ranks to be used by the LoRA models during runtime
loraRanks: [4, 8, 16]
});
Загрузите модели LoRA во время выполнения после инициализации базовой модели. Запустите модель LoRA, передав ссылку на модель при генерации ответа LLM.
// Load several LoRA models. The returned LoRA model reference is used to specify
// which LoRA model to be used for inference.
loraModelRank4 = await llmInference.loadLoraModel(loraModelRank4Url);
loraModelRank8 = await llmInference.loadLoraModel(loraModelRank8Url);
// Specify LoRA model to be used during inference
llmInference.generateResponse(
inputPrompt,
loraModelRank4,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
API LLM Inference позволяет запускать большие языковые модели (LLM) полностью на устройстве для веб-приложений, которые можно использовать для выполнения широкого спектра задач, таких как генерация текста, получение информации в форме естественного языка и обобщение документов. Задача обеспечивает встроенную поддержку нескольких больших языковых моделей преобразования текста в текст, поэтому вы можете применять новейшие генеративные модели искусственного интеллекта на устройстве к своим веб-приложениям.
Чтобы быстро добавить API вывода LLM в свое веб-приложение, следуйте инструкциям в кратком руководстве . Базовый пример веб-приложения, использующего LLM Inference API, см. в примере приложения . Для более глубокого понимания того, как работает API LLM Inference, обратитесь к разделам «Параметры конфигурации» , «Преобразование модели » и «Настройка LoRA» .
Вы можете увидеть эту задачу в действии с помощью демо-версии MediaPipe Studio . Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Быстрый старт
Выполните следующие шаги, чтобы добавить API вывода LLM в свое веб-приложение. Для API вывода LLM требуется веб-браузер, совместимый с WebGPU. Полный список совместимых браузеров см. в разделе «Совместимость браузеров с графическим процессором» .
Добавить зависимости
API вывода LLM использует пакет @mediapipe/tasks-genai
.
Установите необходимые пакеты для локального промежуточного хранения:
npm install @mediapipe/tasks-genai
Для развертывания на сервере используйте службу сети доставки контента (CDN), например jsDelivr , чтобы добавить код непосредственно на вашу HTML-страницу:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Скачать модель
Загрузите Gemma-2 2B в 8-битном квантованном формате с Kaggle Models . Дополнительную информацию о доступных моделях см. в документации по моделям .
Сохраните модель в каталоге вашего проекта:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Укажите путь к модели с помощью параметра modelAssetPath
объекта baseOptions
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Инициализировать задачу
Инициализируйте задачу с базовыми параметрами конфигурации:
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
llmInference = await LlmInference.createFromOptions(genai, {
baseOptions: {
modelAssetPath: '/assets/gemma-2b-it-gpu-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
Запустить задачу
Используйте функцию generateResponse()
для запуска выводов.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Для потоковой передачи ответа используйте следующее:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Образец заявления
Пример приложения представляет собой пример базового приложения для создания текста в Интернете с использованием API вывода LLM. Вы можете использовать приложение в качестве отправной точки для своего собственного веб-приложения или обращаться к нему при изменении существующего приложения. Код примера размещен на GitHub .
Клонируйте репозиторий git, используя следующую команду:
git clone https://github.com/google-ai-edge/mediapipe-samples
Дополнительную информацию см. в Руководстве по установке для Интернета .
Варианты конфигурации
Используйте следующие параметры конфигурации для настройки веб-приложения:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
modelPath | Путь к хранению модели в каталоге проекта. | ПУТЬ | Н/Д |
maxTokens | Максимальное количество токенов (входные токены + выходные токены), которые обрабатывает модель. | Целое число | 512 |
topK | Количество токенов, которые модель учитывает на каждом этапе генерации. Ограничивает прогнозы первыми k наиболее вероятными токенами. | Целое число | 40 |
temperature | Количество случайности, введенной во время генерации. Более высокая температура приводит к большей креативности в сгенерированном тексте, а более низкая температура обеспечивает более предсказуемую генерацию. | Плавать | 0,8 |
randomSeed | Случайное начальное число, используемое при генерации текста. | Целое число | 0 |
loraRanks | Ранги LoRA будут использоваться моделями LoRA во время выполнения. Примечание. Это совместимо только с моделями графических процессоров. | Целочисленный массив | Н/Д |
Преобразование модели
API вывода LLM совместим со следующими типами моделей, некоторые из которых требуют преобразования модели. Используйте таблицу, чтобы определить метод необходимых шагов для вашей модели.
Модели | Метод преобразования | Совместимые платформы | Тип файла |
---|---|---|---|
Джемма-3 1Б | Никакого преобразования не требуется | Андроид, веб | .задача |
Джемма 2Б, Джемма 7Б, Джемма-2 2Б | Никакого преобразования не требуется | Android, iOS, веб | .bin |
Фи-2, СтойлЛМ, Сокол | Скрипт преобразования MediaPipe | Android, iOS, веб | .bin |
Все модели PyTorch LLM | Генеративная библиотека AI Edge Torch | Андроид, iOS | .задача |
Чтобы узнать, как конвертировать другие модели, см. раздел «Преобразование модели» .
Кастомизация ЛоРА
API вывода LLM поддерживает настройку LoRA (адаптация низкого ранга) с использованием библиотеки PEFT (точная настройка с эффективным использованием параметров). Настройка LoRA настраивает поведение LLM посредством экономически эффективного процесса обучения, создавая небольшой набор обучаемых весов на основе новых обучающих данных, а не переобучая всю модель.
API вывода LLM поддерживает добавление весов LoRA к слоям внимания моделей Gemma-2 2B , Gemma 2B и Phi-2 . Загрузите модель в формате safetensors
.
Базовая модель должна быть в формате safetensors
, чтобы можно было создавать веса LoRA. После обучения LoRA вы можете преобразовать модели в формат FlatBuffers для запуска в MediaPipe.
Подготовьте гири LoRA
Используйте руководство по методам LoRA от PEFT, чтобы обучить точно настроенную модель LoRA на собственном наборе данных.
API LLM Inference поддерживает 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 доступны в adapter_model.safetensors
. Файл safetensors
— это контрольная точка LoRA, используемая во время преобразования модели.
Преобразование модели
Используйте пакет Python MediaPipe для преобразования весов модели в формат Flatbuffer. ConversionConfig
определяет параметры базовой модели, а также дополнительные параметры LoRA.
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_FILE ,
)
converter.convert_checkpoint(config)
Конвертер создаст два файла, совместимых с MediaPipe: один для базовой модели, а другой для модели LoRA.
Вывод модели LoRA
Интернет поддерживает динамический LoRA во время выполнения, то есть пользователи объявляют ранги LoRA во время инициализации. Это означает, что вы можете заменять разные модели LoRA во время выполнения.
const genai = await FilesetResolver.forGenAiTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
const llmInference = await LlmInference.createFromOptions(genai, {
// options for the base model
...
// LoRA ranks to be used by the LoRA models during runtime
loraRanks: [4, 8, 16]
});
Загрузите модели LoRA во время выполнения после инициализации базовой модели. Запустите модель LoRA, передав ссылку на модель при создании ответа LLM.
// Load several LoRA models. The returned LoRA model reference is used to specify
// which LoRA model to be used for inference.
loraModelRank4 = await llmInference.loadLoraModel(loraModelRank4Url);
loraModelRank8 = await llmInference.loadLoraModel(loraModelRank8Url);
// Specify LoRA model to be used during inference
llmInference.generateResponse(
inputPrompt,
loraModelRank4,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});