LiteRT Përmbledhje tjetër

LiteRT Next është një grup i ri API-sh që përmirësohet në lidhje me LiteRT, veçanërisht për sa i përket përshpejtimit të harduerit dhe performancës për aplikacionet ML dhe AI ​​në pajisje. API-të janë një version alfa dhe disponohen në Kotlin dhe C++.

LiteRT Next Compiled Model API bazohet në TensorFlow Lite Interpreter API dhe thjeshton procesin e ngarkimit dhe ekzekutimit të modelit për mësimin e makinerive në pajisje. API-të e reja ofrojnë një mënyrë të re të efektshme për të përdorur përshpejtimin e harduerit, duke hequr nevojën për t'u marrë me modelin e FlatBuffers, ndërveprimin e tamponëve I/O dhe delegatët. API-të LiteRT Next nuk janë të pajtueshme me API-të LiteRT. Për të përdorur veçoritë nga LiteRT Next, shihni udhëzuesin Fillimi .

Për shembull, zbatimet e LiteRT Next, referojuni aplikacioneve demo të mëposhtme:

Fillimi i shpejtë

Ekzekutimi i konkluzioneve me LiteRT Next API përfshin hapat kryesorë të mëposhtëm:

  1. Ngarko një model të përputhshëm.
  2. Alokoni buferët tensor të hyrjes dhe daljes.
  3. Thirrni modelin e përpiluar.
  4. Lexoni konkluzionet në një tampon të daljes.

Pjesët e mëposhtme të kodit tregojnë një zbatim bazë të të gjithë procesit në Kotlin dhe C++.

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()

Për më shumë informacion, shihni udhëzuesit Get Started with Kotlin dhe Get Started with C++ .

Karakteristikat kryesore

LiteRT Next përmban përfitimet dhe veçoritë kryesore të mëposhtme:

  • API i ri LiteRT : Drejtoni zhvillimin me zgjedhjen e automatizuar të përshpejtuesit, ekzekutimin e vërtetë asinkronik dhe trajtimin efikas të buferit I/O.
  • Performanca më e mirë e GPU-së në klasë : Përdorni përshpejtimin më të fundit të GPU-së për ML në pajisje. Ndërveprueshmëria e re e buferit mundëson kopjimin zero dhe minimizon vonesën në lloje të ndryshme tampon GPU.
  • Konkluzionet superiore gjeneruese të AI : Aktivizoni integrimin më të thjeshtë me performancën më të mirë për modelet GenAI.
  • Përshpejtimi i unifikuar NPU : Ofroni akses të qetë në NPU nga ofruesit kryesorë të çipave me një përvojë të qëndrueshme zhvilluesi. Përshpejtimi i LiteRT NPU është i disponueshëm përmes një Programi të Qasjes së Hershme .

Përmirësimet kryesore

LiteRT Next (API i modelit të përpiluar) përmban përmirësimet kryesore të mëposhtme në LiteRT (TFLite Interpreter API). Për një udhëzues gjithëpërfshirës për konfigurimin e aplikacionit tuaj me LiteRT Next, shihni udhëzuesin Fillimi .

  • Përdorimi i përshpejtuesit : Ekzekutimi i modeleve në GPU me LiteRT kërkon krijimin e qartë të delegatëve, thirrjet e funksioneve dhe modifikimet e grafikut. Me LiteRT Next, thjesht specifikoni përshpejtuesin.
  • Ndërveprueshmëria e buferit të harduerit vendas : LiteRT nuk ofron opsionin e buferave dhe i detyron të gjitha të dhënat përmes memories CPU. Me LiteRT Next, ju mund të kaloni në "Android Hardware Buffer" (AHWB), "Buffers" OpenCL, "buffers" OpenGL ose buffers të tjerë të specializuar.
  • Ekzekutimi asinkronik : LiteRT Next vjen me një API të ridizajnuar asinkronike, duke ofruar një mekanizëm të vërtetë asinkronik të bazuar në gardhe sinkronizimi. Kjo mundëson kohë më të shpejta të ekzekutimit të përgjithshëm përmes përdorimit të pajisjeve të ndryshme - si CPU, GPU, CPU dhe NPU - për detyra të ndryshme.
  • Ngarkimi i modelit : LiteRT Next nuk kërkon një hap të veçantë ndërtues kur ngarkon një model.