۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

بالاخره محیط توسعه Arm-end-to-end مایکروسافت آمد

با عرضه سخت‌افزار توسعه‌دهنده Arm، ویندوز آماده است تا آینده‌ای با هوش مصنوعی مبتنی بر NPU را پذیرا باشد.

با عرضه سخت‌افزار توسعه‌دهنده Arm، ویندوز آماده است تا آینده‌ای با هوش مصنوعی مبتنی بر NPU را پذیرا باشد.

مدت زیادی می گذرد، اما مایکروسافت سرانجام به وعده خود مبنی بر مجموعه کاملی از ابزارهای توسعه دهنده برای Windows در Arm، از سخت افزار گرفته تا نرم افزار، با پشتیبانی از ویژگی های پلتفرم خاص Arm. به موقع است، زیرا آخرین نسل دستگاه های سرفیس، پردازنده SQ3 مبتنی بر کوالکام مایکروسافت را در همان سخت افزار i7 اینتل قرار می دهد.

شاید جالب‌ترین چیزی که در مورد تمرکز بازوی مایکروسافت وجود دارد، پیوند آن با ساخت برنامه‌های مبتنی بر یادگیری ماشین در ویندوز است. راه‌اندازی Surface با استفاده از واحد پردازش عصبی (NPU) SQ3 برای ارائه پردازش صوتی و تصویری در زمان واقعی، با استفاده از مدل‌های از پیش آموزش‌دیده برای مدیریت تاری پس‌زمینه و حذف نویزهای مزاحم به نمایش گذاشته شد. مایکروسافت بیان می کند که SQ3 NPU می تواند ۱۵ تریلیون عملیات در ثانیه انجام دهد، بنابراین فضای زیادی برای استفاده از آن در کد شما وجود دارد. این به معنای ۸۰ تا ۹۰ برابر سریع‌تر از اجرای مدل روی CPU و ۲۰ برابر سریع‌تر از GPU است.

تسریع هوش مصنوعی با پردازش عصبی

NPU ها برای ویندوز جدید هستند، اما این شتاب دهنده های تخصصی یکی از ویژگی های کلیدی ابر مقیاس بزرگ هستند. یک سیستم بازویی روی یک تراشه با NPU های خاص خود، بخش مهمی از “لبه هوشمند” مدیر عامل مایکروسافت ساتیا نادلا است. مایکروسافت قبلاً نمونه‌ای از این را در دستگاه‌های Azure Percept IoT خود ارائه کرده است که از سخت‌افزار NPU اینتل و پردازنده‌های NXP Arm استفاده می‌کنند. در این رویکرد، مدل‌های یادگیری ماشین قبل از اینکه به فرمت‌های استاندارد صادر شوند و در زمان‌های اجرایی محلی که از سخت‌افزار NPU استفاده می‌کنند، در فضای ابری ساخته و آموزش داده شوند.

این برای مدل‌های خود مایکروسافت بسیار خوب است، اما چگونه مدل‌های خود را بسازیم؟ هنوز سوالاتی وجود دارد که باید به آنها پاسخ داد، اما بسیاری از تصویر در نهایت مورد توجه قرار گرفت.

ابتدا، ما باید با سخت افزار توسعه دهنده مقرون به صرفه شروع کنیم. Surface Pro 9 مجهز به بازوی و نسل های قبلی آن Surface Pro X قطعات سخت افزاری دوست داشتنی هستند، اما دستگاه های شخصی سطح بالایی هستند و بعید است که به عنوان سخت افزار توسعه دهنده از آنها استفاده شود. مایکروسافت به خوبی از این موضوع آگاه است و رابطه خود را سخت‌افزار توسعه‌دهنده مبتنی بر Arm Project Volterra در اوایل سال جاری در Build.

بازیابی بلایا در فضای ابری

بعد از یک سری تاخیرهای مرتبط با زنجیره تامین، سخت افزار اکنون به عنوان Windows Dev Kit 2023، یک کامپیوتر دسکتاپ Arm 599 دلاری مقرون به صرفه بر اساس پردازنده Snapdragon 8cx Gen 3، با ۳۲ گیگابایت رم و ۵۱۲ گیگابایت حافظه داخلی. می‌توانید آن را به‌عنوان یک NUC مجهز به بازو در نظر بگیرید که از نوعی سخت‌افزار تلفن همراه مورد استفاده در دستگاه‌های Windows مبتنی بر Arm استفاده می‌کند، البته بدون اتصال ۵G.

این برنامه به گونه‌ای طراحی شده است که قابلیت انباشته شدن داشته باشد، با این هدف که توسعه‌دهندگان بتوانند بیش از یک دستگاه را روی میز خود داشته باشند تا بتوانند به راحتی کدنویسی، ساختن و آزمایش کنند. این قدرت و فضای ذخیره‌سازی کافی برای اجرای یک نمونه کامل ویژوال استودیو و همچنین هر مهار آزمایشی است. کارهای پیچیده تر را می توان در سرورهای Ampere Altera در حال اجرا در Azure بارگذاری کرد.

NPU در ویندوز

مایکروسافت NPU را به‌عنوان آینده ویندوز معرفی می‌کند، بنابراین به یک پلت‌فرم توسعه مبتنی بر NPU مانند این جعبه‌های مجهز به بازو نیاز دارد. کوالکام ادعا می‌کند ۲۹ TOPS برای NPU AI Engine خود دارد، که می‌گوید از «مدل‌های کلاس ابری که روی لپ‌تاپ‌های باریک و سبک اجرا می‌شوند» پشتیبانی می‌کند. بارگذاری اینها از CPU به NPU باید به برنامه ها اجازه دهد تا با استفاده از ۸ هسته Arm و GPU برای استفاده و رندر خروجی های NPU پاسخگو باقی بمانند. نمونه برنامه‌هایی که مایکروسافت در راه‌اندازی اخیر Surface نشان داد این رویکرد را در عمل نشان می‌دهد: NPU SQ3 وظایف پیچیده صوتی و تصویری را مدیریت می‌کند و نتایج را از طریق برنامه دوربین موجود در ابزارهایی مانند Teams ترکیب و نمایش می‌دهد.

در قلب پشتیبانی NPU مایکروسافت، قالب شبکه عصبی قابل حمل ONNX (مبادله شبکه عصبی باز) است. این به شما امکان می‌دهد از قابلیت‌های محاسباتی پلت‌فرم یادگیری ماشینی Azure برای ساخت و آموزش مدل‌ها استفاده کنید، قبل از اینکه آن‌ها را برای اجرا به‌صورت محلی بر روی یک دستگاه ویندوزی از طریق Windows ML یا ML.NET API یا مستقیماً با استفاده از Qualcomm Neural Processing SDK.

FlyteInteractive: توسعه تعاملی برای مدل‌های یادگیری ماشین

در حال حاضر، دستگاه های Windows Arm باید از ابزار Qualcomm برای دسترسی به NPU های خود استفاده کنند. اگرچه اگر مایکروسافت و کوالکام بر روی یک پوشش DirectCompute برای APIهای موتور هوش مصنوعی خود همکاری کنند، از Windows ML و ML.NET احتمالاً پشتیبانی می‌شود، در حال حاضر، به نظر می‌رسد که باید بسازید. اگر می‌خواهید ONNX را روی دستگاه‌های Arm مبتنی بر Qualcomm یا سخت‌افزار اینتل اجرا کنید، نسخه‌های جداگانه‌ای از برنامه‌های خود را اجرا کنید. از آنجایی که در حال حاضر یک نسخه بهینه سازی شده توسط Qualcomm از کتابخانه .NET ONNX Runtime وجود دارد، پیاده سازی آن برای ابزارهای سطح بالاتر باید نسبتاً آسان باشد.

مایکروسافت و کوالکام یک زنجیره ابزار کامل برای ساخت برنامه‌های NPU بر روی سخت‌افزار Windows Dev Kit 2023 ارائه می‌کنند، همراه با یک نسخه Arm از Visual Studio 2022 که به عنوان پیش‌نمایش در دسترس است، همراه با نسخه بهینه‌سازی شده برای Arm از .NET 7 آینده. اینها، برای نسخه بسته ویندوز SDK پردازش عصبی کوالکام برای هوش مصنوعی، اغلب با نام قدیمی خود: Snapdragon Neural Processing Engine (SNPE) شناخته می شود. این دارای یک زمان اجرا SNPE برای مدل‌های ONNX است.

یک برنامه NPU روی سخت افزار Windows Dev Kit بسازید

در حال اجرا شدن مدلی بر روی NPU 8cx AI Engine  کاملاً ساده نیست. برای ایجاد یک فایل ONNX بهینه شده از یک مدل از پیش آموزش دیده، به هر دو نسخه لینوکس و ویندوز ابزار NPU Qualcomm نیاز دارد. از آنجایی که ویندوز ۱۱ و WSL2 از باینری های Arm پشتیبانی می کنند، می توانید همه این کارها را در سیستم Dev Kit انجام دهید، ابتدا یک محیط WSL Ubuntu را راه اندازی کنید و سپس ابزارهای کوالکام را نصب کنید و محیط لینوکس خود را برای استفاده از آنها پیکربندی کنید. البته می توانید از هر سیستم اوبونتو استفاده کنید. برای مدل‌های پیچیده، ممکن است نمونه‌های Azure Arm را به مدل‌های پردازش ترجیح دهید.

با نصب پایتون ۳ در سیستم لینوکس خود شروع کنید، سپس از pip برای نصب ابزارهای ONNX، پیروی از دستورالعمل های GitHub استفاده کنید. اکنون می‌توانید ابزارهای SNPE را نصب کنید، ابتدا فایل را از حالت فشرده خارج کنید فایل را در یک دایرکتوری توزیع کنید و سپس بررسی کننده وابستگی SNPE را اجرا کنید تا مطمئن شوید همه چیز مورد نیاز برای اجرای SDK را دارید. هنگامی که همه پیش نیازها در محل قرار گرفتند، از اسکریپت پیکربندی آن برای تنظیم متغیرهای محیطی برای استفاده با ONNX استفاده کنید.

چرا ما چند ابری هستیم

اکنون آماده پردازش یک مدل ONNX موجود برای استفاده با یک NPU کوالکام هستید. مدل خود و یک فایل نمونه را به همراه داده های برچسب آن دانلود کنید. مثالی که مایکروسافت از آن استفاده می‌کند یک تشخیص‌دهنده تصویر است، بنابراین برای پیش‌پردازش تصویر نمونه قبل از تبدیل مدل ONNX به فرمت DLC داخلی SNPE، به ابزارهای SNPE نیاز دارید. هنگامی که این فرآیند کامل شد، از SNPE برای کمی کردن مدل قبل از صادرات یک فایل DLC با پوشش ONNX و آماده برای استفاده در کد خود استفاده کنید.

فایل ONNX را از WSL در ویندوز کپی کنید. اکنون می توانید بسته Microsoft.ML.OnnxRuntime.Snpe را از Nuget نصب کنید تا در برنامه های خود استفاده کنید. این یک نسخه بهینه شده از ابزار ONNX Runtime موجود مایکروسافت است، بنابراین افزودن آن به کد موجود یا ساخت آن باید نسبتاً ساده باشد. یک برنامه جدید اگر به شکار نیاز دارید، نمونه کد C# در مثال Windows SNPE repository به شما کمک می کند از نمونه مدل ONNX در یک برنامه کنسول پایه استفاده کنید.

در ترکیب ابزار یادگیری ماشین کوالکام و پلتفرم Arm مایکروسافت به اندازه کافی وجود دارد تا کدهای ساخت اولین نسل سخت‌افزار NPU ویندوز را دریافت کنید. ویژگی‌های ویدیویی و صوتی مبتنی بر NPU مایکروسافت در ویندوز ۱۱ باید به الهام بخشیدن به کد شما کمک کند، اما با شتاب‌دهنده‌های شبکه عصبی سخت‌افزاری می‌توان کارهای زیادی انجام داد، برای مثال، استفاده از آنها برای سرعت بخشیدن به ابزارهای پردازش تصویر مانند ابزارهای مورد استفاده در خلاقیت Adobe. ابزارها یا استفاده از سخت‌افزار Arm شتاب‌دهنده NPU که Windows 11 IoT Enterprise را در لبه شبکه شما اجرا می‌کند تا داده‌ها را قبل از تحویل به Azure IoT Hubs پیش پردازش کند.

این مرحله اولیه یک جهت جدید برای ویندوز است، و در حالی که مایکروسافت مدتی است از این ابزارها به صورت داخلی استفاده می کند، اکنون آنها در دسترس همه ما هستند—آماده استفاده از نسل جدید ویندوز مبتنی بر Arm سیستم های روی میز ما، روی لبه، و در ابر.