LiteRT CompiledModel Python API, LiteRT CompiledModel Python API, LiteRT CompiledModel Python API

رابط CompiledModel LiteRT در پایتون موجود است و رابطی سطح بالا برای کامپایل و اجرای مدل‌های TFLite با زمان اجرای LiteRT ارائه می‌دهد.

راهنمای زیر استنتاج اولیه CPU را با رابط برنامه‌نویسی CompiledModel پایتون (CPA) نشان می‌دهد.

بسته pip را نصب کنید

بسته LiteRT pip را در محیط پایتون خود نصب کنید:

pip install ai-edge-litert

استنتاج پایه

ایجاد CompiledModel

یک مدل کامپایل شده از یک فایل .tflite ایجاد کنید. بسته‌بندی فعلی پایتون به طور پیش‌فرض برای CPU کامپایل می‌شود.

from ai_edge_litert.compiled_model import CompiledModel

model = CompiledModel.from_file("mymodel.tflite")

همچنین می‌توانید یک مدل کامپایل شده را از یک بافر درون حافظه ایجاد کنید:

from ai_edge_litert.compiled_model import CompiledModel

with open("mymodel.tflite", "rb") as f:
  model = CompiledModel.from_buffer(f.read())

ایجاد بافرهای ورودی و خروجی

ساختارهای داده لازم (بافرها) را برای نگهداری داده‌های ورودی که برای استنتاج به مدل وارد می‌کنید و داده‌های خروجی که مدل پس از اجرای استنتاج تولید می‌کند، ایجاد کنید.

signature_index = 0
input_buffers = model.create_input_buffers(signature_index)
output_buffers = model.create_output_buffers(signature_index)

مقدار 0 signature_index ، اولین امضا را در مدل انتخاب می‌کند.

اگر از حافظه CPU استفاده می‌کنید، ورودی‌ها را با نوشتن مستقیم آرایه‌های NumPy در بافرهای ورودی پر کنید.

import numpy as np

input_data = np.array([[1.0, 2.0, 3.0, 4.0]], dtype=np.float32)
input_buffers[0].write(input_data)

مدل را فراخوانی کنید

با فراهم کردن بافرهای ورودی و خروجی، مدل را اجرا کنید.

model.run_by_index(signature_index, input_buffers, output_buffers)

بازیابی خروجی‌ها

با خواندن مستقیم خروجی مدل از حافظه، خروجی‌ها را بازیابی کنید.

import numpy as np

# Replace num_elements with the size of your model's output tensor.
num_elements = 4
output_array = output_buffers[0].read(num_elements, np.float32)

استفاده از TensorBuffer

LiteRT از طریق API TensorBuffer ، پشتیبانی داخلی برای قابلیت همکاری بافر I/O ارائه می‌دهد که از نوشتن آرایه‌های NumPy ( write ) و خواندن آرایه‌های NumPy ( read ) پشتیبانی می‌کند. انواع داده پشتیبانی شده عبارتند از np.float32 ، np.int32 و np.int8 .

همچنین می‌توانید یک بافر با پشتیبانی حافظه میزبان موجود ایجاد کنید:

import numpy as np
from ai_edge_litert.tensor_buffer import TensorBuffer

input_array = np.array([[1.0, 2.0, 3.0, 4.0]], dtype=np.float32)
input_buffer = TensorBuffer.create_from_host_memory(input_array)

برای اجرا بر اساس نام امضا، ابتدا امضاهای مدل را بررسی کنید و سپس نقشه‌ها را از نام‌های ورودی/خروجی به نمونه‌های TensorBuffer ارائه دهید:

from ai_edge_litert.tensor_buffer import TensorBuffer

signatures = model.get_signature_list()
# Example signature structure:
# {"serving_default": {"inputs": ["input_0"], "outputs": ["output_0"]}}

input_buffer = TensorBuffer.create_from_host_memory(input_array)
output_buffer = model.create_output_buffer_by_name("serving_default", "output_0")

model.run_by_name(
  "serving_default",
  {"input_0": input_buffer},
  {"output_0": output_buffer},
)

برای مشاهده کامل‌تر نحوه پیاده‌سازی API تنسوربافر، به کد منبع در تنسوربافر مراجعه کنید.

استفاده از شتاب‌دهنده پردازنده گرافیکی

اگر GPU دارید، می‌توانید با اضافه کردن گزینه HardwareAccelerator.GPU به API ایجاد CompiledModel از آن استفاده کنید.

from ai_edge_litert.compiled_model import CompiledModel
from ai_edge_litert.compiled_model import HardwareAccelerator

model = CompiledModel.from_file("mymodel.tflite", HardwareAccelerator.GPU)

برای اینکه ببینید کدام backend برای پلتفرم شما پشتیبانی می‌شود، این را بررسی کنید.