شتاب سخت افزاری استفاده از سخت افزار تخصصی کامپیوتر برای بهبود سرعت اجرا و کارایی یک مدل هوش مصنوعی است. برای LiteRT، این در درجه اول شامل استفاده از واحدهای پردازش گرافیکی (GPU) یا واحدهای پردازش عصبی (NPU) برای استنتاج هوش مصنوعی، و همچنین دستورالعملهای برداری واحدهای پردازش مرکزی (CPU) همه منظوره است.
LiteRT از شتاب سختافزاری از طریق استفاده از TFLite Delegates پشتیبانی میکند، که بخشهایی از گراف LiteRT را با جایگزین کردن عملیات خود در نمودار میگیرد. LiteRT Next با مدیریت شتاب سخت افزاری از طریق دو مرحله این فرآیند را بهبود می بخشد:
- کامپایل: یک مدل برای اجرا با یک سخت افزار خاص آماده کنید.
- Dispatch: اجرای عملیات انتخاب شده بر روی سخت افزار مربوطه.
فاز کامپایل یک مدل LiteRT را با یک رابط جدید تغییر میدهد که انعطافپذیری بیشتری را با افزونههای کامپایلر ارائه میدهد. کامپایل مدل قبل از اجرای نمودار پیش از زمان (AOT) اتفاق میافتد و یک گراف خاص را برای اجرا در دستگاه تنظیم میکند.
انواع شتاب دهنده
LiteRT سه نوع شتاب دهنده را ارائه می دهد: NPU، GPU و CPU.
- شتاب NPU از سختافزار تخصصی پشتیبانی میکند که در پشت یک رابط واحد متحد شدهاند. پشتیبانی NPU از طریق یک برنامه دسترسی اولیه در دسترس است.
- شتاب GPU از دستگاه های دارای WebGL و OpenCL پشتیبانی می کند.
- شتاب CPU از انواع پردازنده ها با استفاده از کتابخانه XNNPack پشتیبانی می کند. این سطح پیشفرض شتاب است و همیشه در دسترس است.
این شتابدهندهها ممکن است برای دستیابی به بهترین عملکرد ممکن در زمانی که برخی از عملیات پیچیده روی یک سختافزار در دسترس نیستند، ترکیب شوند. هنگامی که شتاب دهنده ها بر سر یک عملیات رقابت می کنند، LiteRT از ترتیب اولویت زیر استفاده می کند: NPU، GPU، CPU.
شتاب پردازنده گرافیکی
با شتاب GPU LiteRT Next، میتوانید بافرهای ورودی و خروجی سازگار با GPU ایجاد کنید، با دادههای خود در حافظه GPU به صفر کپی بردارید، و وظایف را به صورت ناهمزمان اجرا کنید تا موازیسازی را به حداکثر برسانید. LiteRT Next از یک نماینده GPU جدید و بهبود یافته استفاده می کند که توسط LiteRT ارائه نشده است.
اجرای مدلها روی GPU با LiteRT نیاز به ایجاد نماینده صریح، فراخوانی عملکرد و تغییرات گراف دارد. با LiteRT Next، فقط شتاب دهنده را مشخص کنید:
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
برای اطلاعات بیشتر در مورد شتاب GPU، شتاب GPU با LiteRT Acceleration را ببینید
شتاب NPU
LiteRT Next یک رابط یکپارچه برای مهار NPU ها بدون اینکه شما را مجبور کند به صورت جداگانه در کامپایلرهای خاص فروشنده، زمان اجرا یا وابستگی های کتابخانه حرکت کنید، فراهم می کند. استفاده از LiteRT Next برای شتاب NPU از بسیاری از پیچیدگیهای خاص فروشنده و دستگاه جلوگیری میکند، عملکرد را برای استنتاج واقعی و مدل بزرگ افزایش میدهد و کپیهای حافظه را با استفاده از بافر سختافزاری صفر کپی به حداقل میرساند.
استفاده از NPU با LiteRT شامل تبدیل و کامپایل یک مدل با Play for On-Device AI (PODAI) و استقرار مدل با Play AI Pack و Feature Module است.