ابزار بهینهسازی منبع باز و آگاه به سختافزار مایکروسافت برای مدلهای ONNX بخش مهمی از زنجیره ابزار توسعه برنامههای هوش مصنوعی آن است.
فشار هوش مصنوعی مایکروسافت فراتر از فضای ابری است، زیرا این شرکت به وضوح در حال آماده شدن برای سخت افزار دسکتاپ با شتاب دهنده های هوش مصنوعی داخلی است. شما فقط باید به همکاری مایکروسافت با کوالکام نگاه کنید، که سری SQ پردازنده های Arm را تولید کرد، که همگی با شتاب دهنده های هوش مصنوعی ارائه می شوند که ویژگی های جدید بینایی کامپیوتر را در ویندوز ارائه می دهند.
شتابدهندههای هوش مصنوعی جدید نیستند. اساساً آنها توسعهای از GPU آشنا هستند، فقط اکنون برای تسریع شبکههای عصبی طراحی شدهاند. این توضیح میدهد که مایکروسافت نامی را که برای آنها در نظر گرفته است: NPU، واحدهای پردازش عصبی.
NPU ها یک نیاز مهم را برطرف می کنند. کاربران نهایی می خواهند بتوانند بارهای کاری هوش مصنوعی را به صورت محلی اجرا کنند، بدون تکیه بر محاسبات ابری، و داده های خود را در سخت افزار خود نگه دارند، اغلب به دلایل امنیتی و نظارتی. در حالی که سختافزارهای مجهز به NPU هنوز نادر هستند، نشانههایی از فروشندگان اصلی سیلیکون وجود دارد که نشان میدهد این شتابدهندهها یکی از ویژگیهای کلیدی نسلهای پردازندههای آینده خواهند بود.
پشتیبانی از برنامه های کاربردی هوش مصنوعی در معماری های سخت افزاری
در حالی که فناوریهایی مانند ONNX (مبادله شبکه عصبی باز) به قابل حمل بودن مدلهای آموزشدیده کمک میکنند، با ONNX زمان اجرا برای پشتیبانی از Windows و ONNX در اکثر پلتفرمهای توسعه ویندوز، از جمله .NET، همچنان موانع قابل توجهی برای پشتیبانی گستردهتر از برنامههای هوش مصنوعی محلی وجود دارد: زنجیرههای ابزار مختلف برای پیادهسازیهای سختافزاری مختلف.
اگر میخواهید برنامههای یادگیری ماشینی بنویسید که بر روی NPUهای Arm سری SQ استنباط میکنند، باید در برنامه توسعهدهنده Qualcomm ثبت نام کنید تا به SDK و کتابخانههای مورد نیاز خود دسترسی داشته باشید. آنها بخشی از توزیع استاندارد .NET یا بخشی از Windows C++ SDK نیستند و در GitHub نیز موجود نیستند.
این امر نوشتن برنامه های کاربردی هوش مصنوعی با هدف عمومی را دشوار می کند. همچنین ویژگیهایی مانند پردازش تصویر دوربین بیدرنگ مایکروسافت را به ویندوز در دستگاههای Arm با NPU محدود میکند، حتی اگر کارت شتابدهنده Intel ML یا GPU پیشرفته Nvidia دارید. کد باید خاص باشد و توزیع آن را از طریق مکانیسمهایی مانند فروشگاه مایکروسافت یا حتی از طریق ابزار مدیریت برنامههای کاربردی سازمانی مانند Microsoft Intune دشوار میکند.
بهینه سازی مدل های ONNX با Olive
Build 2023 مایکروسافت شروع به عبور از شکاف سختافزاری میکند، و جزئیات آنچه را که به عنوان یک “حلقه ترکیبی” بر اساس ONNX و ابزار جدید پایتون به نام Olive، که قصد دارد همان سطح دسترسی به ابزارهای هوش مصنوعی را به شما بدهد که تیم ویندوز خود مایکروسافت. با استفاده از زیتون، میتوانید مدلها را برای اجرا در دستگاههای محلی فشرده، بهینهسازی و کامپایل کنید. (با نام مستعار لبه) یا در فضای ابری، اجازه میدهد در مواقع ضروری عملیات اولیه را انجام دهد و زمانی که ملاحظات حاکمیت داده و پهنای باند اجازه میدهد، به Azure میرسد.
پس، زیتون دقیقاً چیست؟ این راهی برای سادهسازی فرآیند بستهبندی برای بهینهسازی استنتاج برای سختافزار خاص است و به شما امکان میدهد کدی بسازید که بتواند موتورهای استنتاج را در صورت نیاز تغییر دهد. در حالی که هنوز بسته های استنتاج متفاوتی را برای ترکیب های سخت افزاری مختلف می سازید، کد شما می تواند بسته مناسب را در زمان اجرا بارگذاری کند. یا در مورد Windows on Arm، کد شما میتواند با یک بسته NPU Qualcomm که همزمان با معادلهای x86 شما ساخته میشود، کامپایل شود.
مانند بسیاری از ابزارهای توسعهدهنده اخیر مایکروسافت، Olive منبع باز است و در GitHub موجود است. هنگامی که Olive در محیط توسعه شما نصب شد، می توانید از آن برای خودکارسازی فرآیند تنظیم و بهینه سازی مدل ها برای سخت افزار هدف استفاده کنید. Olive طیف وسیعی از گزینه های تنظیم را ارائه می دهد که انواع مدل های مختلف را هدف قرار می دهد. برای مثال، اگر از ترانسفورماتور استفاده میکنید، Olive میتواند بهینهسازیهای مناسب را اعمال کند و همچنین به تعادل محدودیتهای مدل شما برای مدیریت تأخیر و دقت کمک کند.
بهینهسازی در Olive یک فرآیند چند پاسی است، که با یک مدل PyTorch یا صادرات ONNX از هر پلت فرم آموزشی دیگری. شما نیازهای خود را برای مدل و برای هر پاس، که بهینه سازی خاصی را انجام می دهد، تعریف می کنید. میتوانید با استفاده از ماشینهای مجازی Azure، سختافزار توسعه محلی خود، یا کانتینری که میتوانید در هر جایی که منابع محاسباتی کافی دارید، پاسها (بهینهسازیها) را اجرا کنید. Olive جستجویی را در میان تنظیمهای مختلف ممکن انجام میدهد و به دنبال بهترین پیادهسازی مدل شما قبل از بستهبندی آن برای آزمایش در برنامه شما میگردد.
Olive را بخشی از فرآیند توسعه هوش مصنوعی خود کنید
از آنجایی که بیشتر عملیات Olive خودکار است، بافتن آن در زنجیرههای ابزار موجود و فرآیندهای ساخت باید نسبتاً آسان باشد. Olive توسط یک CLI ساده فعال می شود، که بر اساس پارامترهای تنظیم شده توسط یک فایل پیکربندی کار می کند، بنابراین می تواند در گردش کار CI/CD شما به عنوان یک GitHub Action یا به عنوان بخشی از خط لوله Azure گنجانده شود. از آنجایی که خروجی مدلها و زمانهای اجرا از پیش بستهبندی شده و همچنین کد نمونه است، میتوانید از Olive برای تولید مصنوعات ساختی استفاده کنید که میتوانند در یک بسته استقرار، یا در یک ظرف برای برنامههای توزیعشده، یا در یک نصبکننده برای برنامههای دسکتاپ گنجانده شوند.< /p>
شروع با Olive به اندازه کافی ساده است. یک بسته Python، Olive با استفاده از pip نصب شده است، با برخی وابستگیها برای محیطهای هدف خاص .
قبل از اجرای بهینهسازی باید یک فایل پیکربندی Olive JSON بنویسید. این برای مبتدیان نیست، اگرچه تنظیمات نمونه در اسناد Olive وجود دارد که به شما در شروع کار کمک می کند. قبل از اینکه عملکرد و دقت مورد نظر خود را تعریف کنید، با انتخاب نوع مدل و ورودی و خروجی آن شروع کنید. در نهایت، پیکربندی شما تعیین میکند که چگونه Olive مدل شما را بهینه میکند، به عنوان مثال، یک مدل PyTorch را به ONNX تبدیل میکند و کمیسازی پویا را اعمال میکند.
نتایج می تواند چشمگیر باشد و تیم کاهش قابل توجهی در زمان تاخیر و اندازه مدل نشان می دهد. این امر Olive را به ابزاری مفید برای استنباط محلی تبدیل میکند، زیرا تضمین میکند که میتوانید از محیطهای محدود با قابلیتهای محاسباتی محدود و فضای ذخیرهسازی محدود، به عنوان مثال برای استقرار برنامههای بینایی کامپیوتری حیاتی برای ایمنی در سختافزار لبه، بیشترین استفاده را ببرید.
آماده شدن برای نسل بعدی سیلیکون هوش مصنوعی
در Olive سطح قابل توجهی از محافظت از آینده وجود دارد. این ابزار حول یک مدل پلاگین بهینه سازی ساخته شده است که به فروشندگان سیلیکون اجازه می دهد مجموعه های بهینه سازی خود را تعریف کرده و آنها را به کاربران Olive تحویل دهند. هم اینتل و هم AMD قبلاً ابزارهایی را ارائه کردهاند که با سختافزار و نرمافزار خودشان کار میکنند، که باید بهبود عملکرد مدل را آسانتر کند و در عین حال محاسبات لازم برای انجام بهینهسازیهای لازم را کاهش دهد. این رویکرد به Olive اجازه میدهد تا به سرعت از سختافزار هوش مصنوعی جدید، هم چیپستهای یکپارچه و هم شتابدهندههای خارجی پشتیبانی کند.
Olive با یک زمان اجرا ویندوز ONNX جدید همراه شده است که به شما امکان می دهد بر اساس منطق کد خود بین استنتاج محلی و نقطه پایانی ابری جابجا شوید. برای عملیاتهای حساس میتوان آن را مجبور کرد به صورت محلی اجرا شود، در حالی که برای عملیاتهای محدودتر میتواند در هر جایی که مقرون به صرفهتر است اجرا شود.
یک ویژگی مفید دیگر در Olive، امکان اتصال مستقیم آن به حساب Azure Machine Learning است، بنابراین میتوانید مستقیماً از مدلهای سفارشی خود به بستههای ONNX بروید. اگر قصد استفاده از استنتاج ترکیبی یا ابری را دارید، Olive مدلهای شما را برای اجرا در Azure بهینه میکند.
بهینهسازی مدلهای با فرمت ONNX برای سختافزار خاص مزایای زیادی دارد و داشتن ابزاری مانند Olive که از چندین محیط هدف پشتیبانی میکند باید به ارائه برنامهها با عملکردی که کاربران در سختافزاری که استفاده میکنند انتظار دارند و نیاز دارند، کمک کند. اما این تنها بخشی از داستان است. برای توسعهدهندگانی که وظیفه ساخت برنامههای یادگیری ماشینی بهینهسازی شده برای پلتفرمهای سختافزاری متعدد را دارند، Olive راهی برای غلبه بر چند مانع اول ارائه میکند.
پست های مرتبط
با Olive برنامههای هوش مصنوعی شتابدار برای NPU بسازید
با Olive برنامههای هوش مصنوعی شتابدار برای NPU بسازید
با Olive برنامههای هوش مصنوعی شتابدار برای NPU بسازید