1. 🏁 Введение и обзор CLI
Добро пожаловать на практическую работу по интерфейсу командной строки LiteRT! В этом руководстве вы найдете пошаговые инструкции по настройке среды и развертыванию оптимизированных периферийных вычислений.
🌟 Фон
Для работы периферийного ИИ необходимо перенести сложные нейронные модели непосредственно на мобильные телефоны, носимые устройства и встроенное оборудование.
- LiteRT (ранее TensorFlow Lite / TFLite) – это фреймворк Google для устройств, который позволяет развертывать высокопроизводительные модели машинного обучения и генеративного ИИ на периферийных платформах с помощью эффективного преобразования, среды выполнения и оптимизации.
- LiteRT CLI интегрирует стеки Google AI Edge в отдельную команду оболочки (
litert), чтобы упростить рабочие процессы разработки, связанные с LiteRT, включая преобразование, квантование, компиляцию, запуск, тестирование и визуализацию моделей LiteRT (TFLite) на различном оборудовании (ЦП, графический процессор, NPU) на разных платформах (настольные компьютеры, мобильные устройства или облако).
2. 🔄 Базовые рабочие процессы: преобразование, квантование и запуск
В этом разделе мы рассмотрим полный жизненный цикл моделирования ИИ-модели Edge с помощью интерфейса командной строки LiteRT: оболочка модели PyTorch ➔ преобразование трассировки ➔ квантование модели ➔ вывод на ПК ➔ контрольные показатели производительности.
📝 Этап 1. Подготовьте скрипт-оболочку для модели PyTorch
Создайте файл resnet18.py в текущем каталоге. Он предоставляет хуки динамической трассировки, чтобы построитель графов мог захватывать формы:
import torch
import torchvision
def get_model(batch_size: int = 1) -> torch.nn.Module:
model = torchvision.models.resnet18(
weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1
)
model.eval()
return model
def get_args(batch_size: int = 1) -> tuple[torch.Tensor, ...]:
return (torch.randn(batch_size, 3, 224, 224),)
🔄 Этап 2. Преобразование модели PyTorch в LiteRT с помощью LiteRT Torch
Вызовите конвертер LiteRT Torch, чтобы создать стандартную целевую модель Float32 .tflite:
# Convert PyTorch source to LiteRT
litert convert resnet18.py --output resnet18
# Verify target was exported
ls -lh resnet18/resnet18.tflite
📉 Этап 3. Квантизация весов до INT8
Применяйте динамические и весовые рецепты, чтобы уменьшить размер изображений примерно в четыре раза.
# 1. Dynamic Range Quantization (Dynamic activations + static INT8 weights)
litert quantize resnet18/resnet18.tflite \
--recipe dynamic_wi8_afp32 \
--output resnet18/resnet18_int8_dynamic.tflite
# 2. Weight-Only Quantization (Float32 activations + static INT8 weights)
litert quantize resnet18/resnet18.tflite \
--recipe weight_only_wi8_afp32 \
--output resnet18/resnet18_int8_weight_only.tflite
🚀 Этап 4. Запустите вывод локально
Выполните тестовые операции с фиктивными входными параметрами, чтобы проверить блоки производительности:
# Run original Float32 model inference
litert run resnet18/resnet18.tflite --desktop --cpu
# Run optimized Dynamic INT8 model inference
litert run resnet18/resnet18_int8_dynamic.tflite --cpu --iterations 1
📊 Этап 5. Сравните эффективность модели
Измеряйте высокоточные показатели, включая среднюю задержку, затраты на инициализацию, пропускную способность ЦП и динамический объем потребляемой памяти.
# Benchmark original Float32 model
litert benchmark resnet18/resnet18.tflite --desktop --cpu
# Benchmark optimized Dynamic range INT8 model
litert benchmark resnet18/resnet18_int8_dynamic.tflite --desktop --cpu
3. 🔌 Настройка и проверка локальной среды
Как создать изолированную чистую песочницу на рабочей станции (macOS или Linux)
🔌 Вариант А. Сверхбыстрая настройка (uv)
uv позволяет изолировать библиотеки за считанные секунды, устраняя конфликты кеша среды.
# Create active workspace sandbox
uv venv --clear --python=3.13 --seed
source .venv/bin/activate
# Install litert-cli from pypi
uv pip install litert-cli-nightly
🐍 Вариант Б. Стандартная настройка (pip)
Если uv отсутствует, используйте стандартные конфигурации виртуальной среды Python:
# Create active workspace sandbox
python3 -m venv .venv
source .venv/bin/activate
# Install litert-cli from pypi
pip install --upgrade pip setuptools wheel
pip install litert-cli-nightly
🛠️ Вариант В. Настройка редактируемых локальных переменных
Если вы разрабатываете или тестируете непосредственно в клоне каталога с исходными файлами репозитория:
# Create active workspace sandbox
uv venv --clear --python=3.13 --seed
source .venv/bin/activate
# Install from local directory root
uv pip install -e .
🔍 Как проверить настройки
Убедитесь, что путь правильно направляет команду litert:
litert --help
💡 Центральный каталог Model Reference (model-ref)
Чтобы скрипты и разработка были надежными, в CLI LiteRT реализован централизованный каталог моделей:
- Формат. Назначьте скачанной или импортированной модели уникальное название (псевдоним), например
mobilenet. - Варианты. Используйте целевые двоеточия, чтобы ссылаться на оптимизированные варианты, например
mobilenet:int8илиmobilenet:gpu. - Простота. Все команды CLI принимают этот псевдоним
без пути напрямую, автоматически разрешая физическое хранилище файлов на лету.
4. 📲 Развертывание устройств и профилирование
Мы можем оптимизировать работу модели, выполнив точные локальные тесты, развернув ее на реальных USB-устройствах, реализовав делегатов оборудования, выполнив предварительную компиляцию и облачные тесты.
📊 Показатели локального профилирования
Скачайте EfficientNet-B1 и статистику производительности профиля на хост-компьютер:
# Download and register model alias in central catalog
litert download litert-community/efficientnet_b1 --file "*.tflite" --output efficientnet
litert import efficientnet/efficientnet_b1.tflite --model-ref efficientnet_b1
# Run high-precision benchmark on desktop CPU
litert benchmark efficientnet_b1 --desktop --cpu
Обратите внимание на ключевые заголовки производительности в журнале тестирования:
Model initialization– время загрузки структурных сетей.Warmup (avg): время компиляции.Inference (avg)– время обработки математических операций.Overall footprint: максимальный объем ОЗУ, использованный во время выполнения.
📲 Цель А: ЦП мобильного устройства (подключение по USB)
Подключите устройство Android с включенной отладкой по USB и разверните приложение:
# 1. Confirm device connection
adb devices
# 2. Push and execute model on mobile CPU
litert run efficientnet_b1 --android --cpu
CLI автоматически отправляет модель на целевое устройство, выполняет цикл инференса и возвращает выходные данные.
🎮 Цель Б: мобильный графический процессор
Динамически переносить на графический процессор ресурсоемкие задачи с помощью OpenCL или WebGPU:
# Benchmark model performance on mobile GPU
litert benchmark efficientnet_b1 --android --gpu
# Run inference with GPU acceleration and CPU fallback
litert run efficientnet_b1 --android --accelerator gpu,cpu
⚙️ Цель C: JIT Android NPU
Перенесите параметры выполнения непосредственно в NPU на современных чипсетах:
# Run with on-device JIT NPU acceleration
litert run efficientnet_b1 --android --accelerator npu,cpu
- Предупреждение. Динамические графы, создаваемые во время выполнения на устройстве, страдают от значительных задержек при инициализации JIT.
🚀 Цель D: NPU, скомпилированный AOT
Чтобы избежать издержек на JIT-компиляцию во время выполнения и максимально ускорить работу, выполните предварительную компиляцию офлайн:
# 1. Offline compile for Qualcomm SM8750 NPU (Linux host)
litert compile efficientnet/efficientnet_b1.tflite --target sm8750
# 2. Execute compiled AOT binary with zero JIT warmup latency
litert run efficientnet_b1_Qualcomm_SM8750.tflite --android --npu
☁️ Профилирование в облаке (портал Google AI Edge)
Запускайте тесты на удаленных аппаратных профилях в фермах устройств Google Cloud.
# Log in to your Google Cloud project
gcloud auth login
# Push benchmark metrics to Pixel 7 CPU
litert benchmark efficientnet_b1 --gcp --device "pixel 7" --cpu --gcp-project "your-project-id"
# Push benchmark metrics to Snapdragon GPU targets
litert benchmark efficientnet_b1 --gcp --devices "pixel 7, sm-s931u1" --gpu --gcp-project "your-project-id"
5. 🧠 Продвинутые темы: LLM и распознавание речи
Давайте рассмотрим продвинутые модели, преобразовав и запустив большие языковые модели (LLM) и модели автоматического распознавания речи (ASR).
💬 Генеративный искусственный интеллект (большие языковые модели)
LLM на периферийных устройствах ограничены объемом памяти. Мы решаем эту проблему, применяя квантование Weight-Only INT4/INT8, сжимая веса и сохраняя каналы выполнения в формате Float32:
# 1. Automated download & conversion from Hugging Face
litert convert Qwen/Qwen1.5-0.5B-Chat --output models/qwen
# 2. Quantize model weights to INT4
litert convert Qwen/Qwen1.5-0.5B-Chat \
--quantize-recipe weight_only_wi4_afp32 \
--output models/qwen_w4
# 3. Generation once
litert lm run models/qwen/model.litertlm --prompt "Introduce San Francisco."
# 4. Interactive chat
litert lm run models/qwen/model.litertlm
🎙️ Обработка речи (ASR)
В моделях ASR, таких как Whisper или Parakeet, есть модули кодировщика и декодера. Вы можете тестировать отдельные модули, используя ключи подписи.
# 1. Download prepackaged Whisper-Tiny
litert download litert-community/whisper-tiny --file "whisper_tiny_30s_f32.tflite" --output "models/whisper_tiny"
# 2. Profile audio encoding
litert benchmark models/whisper_tiny/whisper_tiny_30s_f32.tflite --android --gpu --signature-key "encode"
# 3. Profile text token decoding loop
litert benchmark models/whisper_tiny/whisper_tiny_30s_f32.tflite --android --cpu --signature-key "decode"
6. 🤖 Использование в агентном программировании
LiteRT CLI удобен для агентов, и вы можете интегрировать его непосредственно с агентами для написания кода.
Вот несколько примеров. Добавьте навык LiteRT CLI SKILL.md в своего агента кодирования (например, Google Antigravity) и попробуйте запросы, подобные приведенным ниже.
7. 🚀 Поздравляем! Что дальше?
🎉 Отлично! Вы завершили практическую работу "Основы использования LiteRT CLI"!
Теперь вы обладаете навыками, необходимыми для разработки машинного обучения на периферии:
- Преобразуйте модели PyTorch в модели LiteRT.
- Квантование весов модели до INT4/INT8.
- Запускайте модели на мобильных ЦП, графических и нейронных процессорах.
- Компиляция для NPU.
- Тестирование на компьютерах, мобильных устройствах и в облаке.
- Конвертировать и запускать модели LLM.
- Используйте в агентном программировании.
🔗 Ресурсы
- LiteRT CLI: https://github.com/google-ai-edge/LiteRT-CLI
- LiteRT: https://ai.google.dev/edge/litert
- Примеры: https://github.com/google-ai-edge/LiteRT-CLI/tree/main/examples.