این صفحه نحوه ساخت کتابخانههای 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