‫LiteRT CompiledModel Python API

‫LiteRT CompiledModel API זמין ב-Python ומציע ממשק ברמה גבוהה להידור ולהרצה של מודלים של TFLite עם זמן הריצה של LiteRT.

במדריך הבא מוצגת מסקנה בסיסית של CPU באמצעות CompiledModel Python API.

התקנת חבילת pip

מתקינים את חבילת ה-pip של LiteRT בסביבת Python:

pip install ai-edge-litert

הסקה בסיסית

יצירה של CompiledModel

יוצרים מודל שעבר קומפילציה מקובץ .tflite. ה-wrapper הנוכחי של Python עובר קומפילציה למעבד (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)

הערך 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 API, שתומך בכתיבה של מערכי 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 API, אפשר לעיין בקוד המקור בכתובת TensorBuffer.

שימוש במאיץ GPU

אם יש לכם 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)

כדי לראות איזה קצה עורפי נתמך בפלטפורמה שלכם, אפשר לעיין במאמר הזה.