LiteRT Next — это новый набор API, который улучшает LiteRT, особенно в плане аппаратного ускорения и производительности для приложений машинного обучения и искусственного интеллекта на устройстве. API — это альфа-версия, доступная на Kotlin и C++.
API LiteRT Next Compiled Model основан на API TensorFlow Lite Interpreter и упрощает процесс загрузки и выполнения модели для машинного обучения на устройстве. Новые API предоставляют новый оптимизированный способ использования аппаратного ускорения, устраняя необходимость иметь дело с FlatBuffers модели, совместимостью буферов ввода-вывода и делегатами. API LiteRT Next несовместимы с API LiteRT. Чтобы использовать функции из LiteRT Next, см. руководство «Начало работы» .
Примеры реализаций LiteRT Next см. в следующих демонстрационных приложениях:
Быстрый старт
Выполнение вывода с помощью API LiteRT Next включает следующие ключевые этапы:
- Загрузите совместимую модель.
- Выделите входные и выходные тензорные буферы.
- Вызовите скомпилированную модель.
- Считайте выводы в выходной буфер.
Следующие фрагменты кода показывают базовую реализацию всего процесса на Kotlin и C++.
С++
// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto model, Model::CreateFromFile("mymodel.tflite"));
LITERT_ASSIGN_OR_RETURN(auto env, Environment::Create({}));
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu));
// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers, compiled_model.CreateInputBuffers());
LITERT_ASSIGN_OR_RETURN(auto output_buffers, compiled_model.CreateOutputBuffers());
// Fill the first input
float input_values[] = { /* your data */ };
input_buffers[0].Write<float>(absl::MakeConstSpan(input_values, /*size*/));
// Invoke
compiled_model.Run(input_buffers, output_buffers);
// Read the output
std::vector<float> data(output_data_size);
output_buffers[0].Read<float>(absl::MakeSpan(data));
Котлин
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU)
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
Более подробную информацию можно найти в руководствах « Начало работы с Kotlin» и «Начало работы с C++» .
Основные характеристики
LiteRT Next содержит следующие основные преимущества и функции:
- Новый API LiteRT : оптимизируйте разработку с помощью автоматического выбора ускорителя, настоящего асинхронного выполнения и эффективной обработки буфера ввода-вывода.
- Лучшая в своем классе производительность GPU : используйте современное ускорение GPU для машинного обучения на устройстве. Новая совместимость буферов обеспечивает нулевое копирование и минимизирует задержку в различных типах буферов GPU.
- Превосходный генеративный вывод ИИ : обеспечивает максимально простую интеграцию с наилучшей производительностью для моделей GenAI.
- Унифицированное ускорение NPU : обеспечивает бесперебойный доступ к NPU от основных поставщиков чипсетов с единообразным опытом разработки. Ускорение LiteRT NPU доступно через программу раннего доступа .
Ключевые улучшения
LiteRT Next (Compiled Model API) содержит следующие ключевые улучшения LiteRT (TFLite Interpreter API). Для полного руководства по настройке вашего приложения с LiteRT Next см. руководство Get Started .
- Использование ускорителя : запуск моделей на GPU с LiteRT требует явного создания делегата, вызовов функций и модификации графа. С LiteRT Next просто укажите ускоритель.
- Совместимость с собственными аппаратными буферами : LiteRT не предоставляет опцию буферов и принудительно пропускает все данные через память ЦП. С LiteRT Next вы можете передавать в Android Hardware Buffers (AHWB), OpenCL-буферы, OpenGL-буферы или другие специализированные буферы.
- Асинхронное выполнение : LiteRT Next поставляется с переработанным асинхронным API, предоставляющим настоящий асинхронный механизм на основе синхронных ограждений. Это позволяет сократить общее время выполнения за счет использования разнообразного оборудования — например, ЦП, ГП, ЦП и НПУ — для различных задач.
- Загрузка модели : LiteRT Next не требует отдельного шага конструктора при загрузке модели.