LiteRT Next, özellikle cihaz üzerinde ML ve yapay zeka uygulamaları için donanım hızlandırma ve performans açısından LiteRT'yi iyileştiren yeni bir API grubudur. Alfa sürümündeki API'ler Kotlin ve C++'ta kullanılabilir.
LiteRT Next Compiled Model API, TensorFlow Lite Interpreter API'yi temel alır ve cihaz üzerinde makine öğrenimi için model yükleme ve yürütme sürecini basitleştirir. Yeni API'ler, donanım hızlandırmayı kullanmanın yeni ve basit bir yolunu sunarak model FlatBuffers, G/Ç arabelleği birlikte çalışabilirliği ve temsilcilerle uğraşma ihtiyacını ortadan kaldırır. LiteRT Next API'leri, LiteRT API'leriyle uyumlu değildir. LiteRT Next'teki özellikleri kullanmak için Başlangıç kılavuzunu inceleyin.
LiteRT Next'in örnek uygulamaları için aşağıdaki demo uygulamalarına bakın:
Hızlı başlangıç kılavuzu
LiteRT Next API'leriyle çıkarım çalıştırmak aşağıdaki temel adımları içerir:
- Uyumlu bir model yükleyin.
- Giriş ve çıkış tenör arabelleklerini ayırın.
- Derlenmiş modeli çağırın.
- Çıkarımları bir çıkış arabelleğine okuyun.
Aşağıdaki kod snippet'leri, sürecin tamamının Kotlin ve C++'ta temel bir uygulamasını göstermektedir.
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));
Kotlin
// 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()
Daha fazla bilgi için Kotlin'i kullanmaya başlama ve C++'yu kullanmaya başlama kılavuzlarına bakın.
Temel özellikler
LiteRT Next aşağıdaki temel avantajları ve özellikleri içerir:
- Yeni LiteRT API: Otomatik hızlandırıcı seçimi, gerçek eşzamansız yürütme ve verimli G/Ç arabelleği kullanımıyla geliştirmeyi kolaylaştırın.
- Sınıfının en iyisi GPU performansı: Cihaz üzerinde ML için en son GPU hızlandırmasını kullanın. Yeni arabellek birlikte çalışabilirliği, sıfır kopyalama sağlar ve çeşitli GPU arabellek türlerinde gecikmeyi en aza indirir.
- Üstün Üretken Yapay Zeka çıkarımıyla: Üretken yapay zeka modelleri için en iyi performansla en basit entegrasyonu etkinleştirin.
- Birleştirilmiş NPU Hızlandırması: Tutarlı bir geliştirici deneyimiyle büyük yonga seti sağlayıcıların NPU'larına sorunsuz erişim sunun. LiteRT NPU hızlandırması, Erken Erişim Programı aracılığıyla kullanılabilir.
Önemli iyileştirmeler
LiteRT Next (Derlenmiş Model API), LiteRT'de (TFLite Interpreter API) aşağıdaki önemli iyileştirmeleri içerir. Uygulamanızı LiteRT Next ile ayarlamayla ilgili kapsamlı bir kılavuz için Başlangıç kılavuzunu inceleyin.
- Hızlandırıcı kullanımı: LiteRT ile GPU'da model çalıştırmak için açık yetki verme oluşturma, işlev çağrıları ve grafik değişiklikleri gerekir. LiteRT ile,
- Doğal donanım arabelleği birlikte çalışabilirliği: LiteRT, arabellek seçeneği sunmaz ve tüm verileri CPU belleğinden geçmeye zorlar. LiteRT Next ile Android Donanım Arabellekleri (AHWB), OpenCL arabellekleri, OpenGL arabellekleri veya diğer özel arabellekleri iletebilirsiniz.
- Eş zamansız yürütme: LiteRT Next, senkronizasyon çitlerine dayalı gerçek bir eş zamansız mekanizma sağlayan, yeniden tasarlanmış bir eş zamansız API ile birlikte gelir. Bu sayede farklı görevler için CPU'lar, GPU'lar, CPU'lar ve NPU'lar gibi çeşitli donanımlar kullanılarak genel yürütme süreleri kısaltılabilir.
- Model yükleme: LiteRT Next, model yüklerken ayrı bir oluşturucu adımı gerektirmez.