تتوفّر واجهة برمجة التطبيقات CompiledModel LiteRT في Python، ما يوفّر واجهة عالية المستوى لتجميع نماذج TFLite وتشغيلها باستخدام وقت تشغيل LiteRT.
يوضّح الدليل التالي عملية استنتاج أساسية لوحدة المعالجة المركزية باستخدام واجهة برمجة التطبيقات CompiledModel Python.
تثبيت حزمة pip
ثبِّت حزمة LiteRT pip في بيئة Python:
pip install ai-edge-litert
الاستنتاج الأساسي
إنشاء CompiledModel
إنشاء نموذج مجمَّع من ملف .tflite يتم تلقائيًا تجميع برنامج تضمين Python الحالي لوحدة المعالجة المركزية.
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)
تختار القيمة signature_index من 0 التوقيع الأول في النموذج.
إذا كنت تستخدم ذاكرة وحدة المعالجة المركزية، املأ المدخلات بكتابة مصفوفات 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 دعمًا مدمجًا لإمكانية التشغيل التفاعلي لمخزن بيانات الإدخال/الإخراج من خلال واجهة برمجة التطبيقات
TensorBuffer، التي تتيح كتابة مصفوفات 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},
)
للحصول على عرض أكثر اكتمالاً لطريقة تنفيذ واجهة برمجة التطبيقات TensorBuffer، راجِع رمز المصدر على TensorBuffer.
استخدام أداة تسريع وحدة معالجة الرسومات
إذا كان لديك وحدة معالجة الرسومات، يمكنك استخدامها فقط عن طريق إضافة الخيار HardwareAccelerator.GPU إلى واجهة برمجة التطبيقات لإنشاء 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)
اطّلِع على هذه الصفحة لمعرفة نظام الخلفية المتوافق مع منصتك.