ساخت LiteRT برای بردهای ARM

این صفحه نحوه ساخت کتابخانه‌های LiteRT برای رایانه‌های مبتنی بر ARM را شرح می‌دهد.

LiteRT از دو سیستم ساخت پشتیبانی می‌کند و ویژگی‌های پشتیبانی‌شده از هر سیستم ساخت یکسان نیستند. برای انتخاب سیستم ساخت مناسب، جدول زیر را بررسی کنید.

ویژگی بازل سی‌میک
زنجیره ابزارهای از پیش تعریف شده armhf، aarch64 آرمل، آرم اچ اف، آرچ۶۴
زنجیر ابزارهای سفارشی استفاده از آن سخت‌تر است آسان برای استفاده
عملیات TF را انتخاب کنید پشتیبانی شده پشتیبانی نمی‌شود
نماینده پردازنده گرافیکی فقط برای اندروید موجود است هر پلتفرمی که از OpenCL پشتیبانی می‌کند
XNNPack پشتیبانی شده پشتیبانی شده
چرخ پایتون پشتیبانی شده پشتیبانی شده
رابط برنامه‌نویسی کاربردی سی پشتیبانی شده پشتیبانی شده
رابط برنامه‌نویسی کاربردی سی‌پلاس‌پلاس برای پروژه‌های Bazel پشتیبانی می‌شود برای پروژه‌های CMake پشتیبانی می‌شود

کامپایل متقابل برای ARM با CMake

اگر یک پروژه CMake دارید یا اگر می‌خواهید از یک زنجیره ابزار سفارشی استفاده کنید، بهتر است از CMake برای کامپایل متقابل استفاده کنید. یک صفحه جداگانه برای کامپایل متقابل LiteRT با CMake برای این کار موجود است.

کامپایل متقابل برای ARM با Bazel

اگر یک پروژه Bazel دارید یا می‌خواهید از TF ops استفاده کنید، بهتر است از سیستم ساخت Bazel استفاده کنید. شما از زنجیره ابزارهای یکپارچه ARM GCC 8.3 با Bazel برای ساخت یک کتابخانه مشترک ARM32/64 استفاده خواهید کرد.

معماری هدف پیکربندی بازل دستگاه‌های سازگار
آرم اچ اف (ARM32) --config=elinux_armhf RPI3، RPI4 با سیستم عامل 32 بیتی رزبری پای
AArch64 (ARM64) --پیکربندی=elinux_aarch64 کورال، RPI4 با اوبونتو ۶۴ بیتی

دستورالعمل‌های زیر روی اوبونتو ۱۶.۰۴.۳ نسخه ۶۴ بیتی (AMD64) و TensorFlow devel docker image tensorflow/tensorflow:devel آزمایش شده‌اند.

برای کامپایل کردن LiteRT با Bazel، مراحل زیر را دنبال کنید:

مرحله ۱. نصب Bazel

Bazel سیستم ساخت اصلی TensorFlow است. آخرین نسخه سیستم ساخت Bazel را نصب کنید.

مرحله 2. مخزن TensorFlow را کلون کنید

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

مرحله ۳. ساخت فایل باینری ARM

کتابخانه سی
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

می‌توانید یک کتابخانه مشترک را در bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so پیدا کنید.

برای جزئیات بیشتر، صفحه LiteRT C API را بررسی کنید.

کتابخانه سی++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

می‌توانید یک کتابخانه مشترک را در bazel-bin/tensorflow/lite/libtensorflowlite.so پیدا کنید.

در حال حاضر، هیچ راه ساده‌ای برای استخراج تمام فایل‌های هدر مورد نیاز وجود ندارد، بنابراین باید تمام فایل‌های هدر را در tensorflow/lite/ از مخزن TensorFlow قرار دهید. علاوه بر این، به فایل‌های هدر از FlatBuffers و Abseil نیز نیاز خواهید داشت.

و غیره

همچنین می‌توانید با استفاده از toolchain، اهداف Bazel دیگری بسازید. در اینجا چند هدف مفید آورده شده است.

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image