ابزار تبدیل مایکروسافت برای اجرای CUDA روی AMD

مایکروسافت در حال توسعه ابزارهای تبدیل برای اجرای مدل‌های مبتنی بر CUDA روی GPUهای AMD است تا هزینه‌های استنتاج را کاهش دهد و وابستگی به اکوسیستم NVIDIA را کم کند؛ این تغییر می‌تواند بازار GPU ابری را دگرگون سازد.

8 نظرات
ابزار تبدیل مایکروسافت برای اجرای CUDA روی AMD

11 دقیقه

گزارش‌ها حاکی است مایکروسافت در حال توسعه مجموعه‌‌ابزاری برای تبدیل و اجرای مدل‌های هوش مصنوعی مبتنی بر CUDA روی شتاب‌دهنده‌های AMD است. هدف اصلی کاهش هزینه‌های استنتاج (inference)، کاهش وابستگی به اکوسیستم CUDA شرکت NVIDIA و فراهم کردن گزینه‌های اقتصادی‌تر برای بارهای سنگین استنتاج در فضای ابری است.

Why Microsoft is eyeing AMD for inference

ارائه‌دهندگان ابری و هایپر‌اسکیلرها در سال‌های اخیر تمایز واضحی بین فرآیند آموزش (training) و استنتاج (inference) برقرار کرده‌اند. آموزش مدل‌ها معمولاً به سریع‌ترین و بهینه‌ترین سخت‌افزار نیاز دارد؛ اما هنگام استنتاج در محیط تولید، معیارهای هزینه، بهره‌وری و کارایی عملیاتی اهمیت بیشتری می‌یابند. مایکروسافت با مشاهدهٔ حجم بسیار بالای درخواست‌های استنتاج در پلتفرم Azure، در پی راهکارهایی است تا بدون افزایش بیش از حد هزینه، بتواند این درخواست‌ها را مدیریت کند. شتاب‌دهنده‌های AI شرکت AMD می‌توانند جایگزین نسبتا مقرون‌به‌صرفه‌ای برای کارت‌های گران‌قیمت NVIDIA باشند؛ به شرطی که مدل‌های آموزش‌دیده با CUDA بتوانند روی سخت‌افزار AMD اجرا شوند.

قابلیت اقتصادی بودن این گزینه تنها زمانی معنا پیدا می‌کند که انتقال از CUDA به پشتهٔ نرم‌افزاری AMD مستلزم بازنویسی گستردهٔ کدها یا تغییرات بنیادین در معماری مدل نباشد. طبق گزارش‌ها، مجموعه‌ابزارهای مایکروسافت به دنبال ایجاد لایه‌ای هستند که فراخوانی‌های (calls) مربوط به CUDA را به فراخوانی‌های سازگار با ROCm یا معادل‌های قابل اجرا روی AMD تبدیل کند تا مدل‌ها بتوانند بدون بازنویسی عمیق روی GPUهای AMD اجرا شوند.

How these toolkits work — a pragmatic translation layer

شکستن قفل اکوسیستم CUDA کار ساده‌ای نیست؛ زیرا CUDA به‌طور گسترده توسط چارچوب‌ها، کتابخانه‌ها و زنجیرهٔ ابزارهای بهینه‌شده‌ برای NVIDIA پذیرفته شده است. بسیاری از خطوط تولید در محیط‌های سازمانی و ابری بر مبنای کتابخانه‌های بهینه‌شدهٔ NVIDIA مانند cuDNN، TensorRT، و کتابخانه‌های سفارشی نوشته شده‌اند. یکی از راه‌حل‌های عملی، پیاده‌سازی لایهٔ سازگاری در زمان اجرا (runtime compatibility layer) است که تماس‌های API مربوط به CUDA را رهگیری کرده و آن‌ها را در زمان اجرا به معادل‌های ROCm نگاشت می‌کند. پیش‌تر ابزارهایی مثل ZLUDA رویکردی مشابه را دنبال کردند و فراخوانی‌ها را بدون نیاز به بازکامپایل کامل منبع ترجمه می‌کردند.

به‌گفتهٔ منابع داخلی، مجموعه‌ابزارهای مایکروسافت مسیر مشابهی را در پیش گرفته‌اند: فراخوانی‌های CUDA را تبدیل یا هدایت می‌کنند تا روی پشتهٔ نرم‌افزاری ROCm اجرا شوند. این رویکرد می‌تواند به سازمان‌ها امکان دهد بارهای استنتاج را با حداقل تغییرات در آثار مدل (model artifacts) به نمونه‌های مبتنی بر AMD در Azure منتقل کنند. چنین راهکاری معمولاً شامل اجزایی مثل مبدل‌های API، لایه‌های تطبیق حافظه، و نگاشت هسته‌های محاسباتی (kernel mapping) است که رفتار توابع CUDA را با معادل‌های MIOpen/ROCm بازتولید می‌کنند.

بعلاوه، این ابزارها معمولاً با ابزارهای استاندارد عملیات مانند کانتینریزه‌سازی (Docker) و اورکستراسیون (Kubernetes) سازگار خواهند بود تا مهاجرت بین نمونه‌ها (instances) در محیط ابری آسان شود. سازگاری با چارچوب‌های یادگیری ماشینی رایج مثل PyTorch و TensorFlow نیز اهمیت زیادی دارد؛ زیرا بسیاری از مدل‌های تولیدی به صورت مستقیم از این چارچوب‌ها و از کتابخانه‌هایی مانند cuDNN استفاده می‌کنند. در مواردی که امکان استفاده از ONNX یا تبدیل‌های میانی وجود داشته باشد، مسیر مهاجرت ساده‌تر می‌شود؛ اما زمانی که کدهای سفارشی CUDA یا کرنل‌های به‌شدت بهینه‌شده وجود داشته باشد، کار پیچیده‌تر می‌شود.

Not a silver bullet — compatibility and performance caveats

ROCm هنوز نسبت به CUDA در مرحلهٔ بلوغ کمتری قرار دارد و هر API یا کرنل بهینه‌شدهٔ CUDA معادلِ یک‌به‌یک در ROCm ندارد. برخی از تفاوت‌ها به سطح ران‌تایم، مدیریت حافظه و تفاوت‌های معماری سخت‌افزاری بین نسل‌های GPU برمی‌گردد. در نتیجه، ترجمه‌های ساده و مستقیم ممکن است در برخی موارد به افت عملکرد منجر شوند یا در پردازش بارهای پیچیده شکست بخورند. برای دیتاسنترهای تولیدی که به تأخیر قابل پیش‌بینی (latency) و توان عملیاتی مشخص (throughput) نیاز دارند، این ریسک‌ها می‌تواند غیرقابل‌قبول باشد.

مایکروسافت به نظر می‌رسد که این ابزارها را با محتاطانه‌‌ترین رویکرد عرضه می‌کند: استفاده تدریجی در سناریوهای کنترل‌شده و همکاریِ نزدیک با AMD برای بهینه‌سازی‌های سخت‌افزاری و نرم‌افزاری. این همکاری احتمالاً شامل بهبودهای سطح درایور، کار روی MIOpen برای بهبود عملکرد عملیات مرسوم شبکه‌های عصبی، و هماهنگی برای پشتیبانی بهتر از قالب‌های داده‌ای رایج مانند FP16، BF16 و عملیات‌های کوانتیزه‌سازی (INT8) است. چنین رویکردی نشان می‌دهد که مایکروسافت در تلاش است بین صرفه‌جویی در هزینه و پایداری عملیاتی تعادل برقرار کند.

در عین حال، تیم‌های مهندسی باید مجموعه‌ای از تست‌های بنچ‌مارک، استرس و اعتبارسنجی را اجرا کنند تا مطمئن شوند ترجمه‌ها نه‌تنها عملکرد مناسبی دارند بلکه نتایج محاسباتی را نیز به درستی حفظ می‌کنند. موضوعاتی مانند همگام‌سازی بین دستگاهی (cross-device synchronization)، مدیریت صف‌ها (stream management)، و پشتیبانی از قابلیت‌هایی مانند mixed-precision training یا inference می‌توانند چالش‌ساز باشند. علاوه بر این، مشکلاتی نظیر تفاوت در میزان استفاده از حافظه در زمان اجرا، فونکسیون‌های اتمیک متفاوت، یا تغییرات در الگوهای کش (cache) می‌تواند باعث تغییر رفتار و کارایی شود.

What this means for cloud customers and the GPU market

  • Lower inference costs: اگر این مجموعه‌ابزارها در مقیاس عملیاتی کارآمد باشند، سازمان‌ها قادر خواهند بود سهم بیشتری از بارهای استنتاج را روی نمونه‌های مبتنی بر AMD اجرا کنند و هزینهٔ هر درخواست استنتاج را کاهش دهند. در مواردی که هزینهٔ سخت‌افزار و هزینه‌های متغیر شبکه و ذخیره‌سازی مجموعاً کاهش یابد، بهره‌وری کلی سرویس‌ها افزایش می‌یابد.
  • More vendor choice: مسیری قابل‌اعتماد برای تبدیل CUDA به ROCm می‌تواند قفل‌پذیری (vendor lock-in) به وسیلهٔ CUDA را تضعیف کند و به مشتریان ابری اهرم و انعطاف‌پذیری بیشتری بدهد. مشتریان می‌توانند بین نمونه‌های NVIDIA و AMD بر اساس نیازهای عملکردی و اقتصادی انتخاب کنند، یا حتی از ترکیبِ هتروژن (heterogeneous) برای بهینه‌سازی هزینه و عملکرد استفاده نمایند.
  • Gradual adoption: انتظار می‌رود مهاجرت به‌صورت مرحله‌ای صورت گیرد — ابتدا مدل‌های ساده‌تر و استنتاج دسته‌ای (batch inference) و سپس سیستم‌های حساس به تأخیرِ پایین (real-time) زمانی که زنجیره‌ابزارها و تست‌ها پخته‌تر شوند. این مسیرِ تدریجی به شرکت‌ها فرصت می‌دهد تا نقاط ضعف و مزایای عملکردی را شناسایی و اصلاح کنند.

تصور کنید نیمی از ناوگان استنتاجی شما به سخت‌افزار ارزان‌تر منتقل شود بدون اینکه مدل‌ها را از پایه بازنویسی کنید؛ این همان جذابیتی است که این راهکارها وعده می‌دهند. با این وجود واقعیت وابسته به این است که ROCm تا چه حد می‌تواند با پروفایل عملکردی CUDA همپوشانی داشته باشد و مایکروسافت و AMD تا چه اندازه سریع می‌توانند شکاف‌های سازگاری را ببندند. پارامترهای کلیدی شامل تاخیر پاسخ‌دهی (latency)، توان عملیاتی در هر نمونه (throughput per instance)، مقیاس‌پذیری افقی (horizontal scaling)، و هزینهٔ کلی مالکیت (TCO) خواهد بود.

در سطح بازار، اگر این ابزارها به‌طور گسترده پذیرفته شوند، می‌تواند تأثیر قابل‌توجهی بر جایگاه رقابتی NVIDIA داشته باشد. هرچند NVIDIA همچنان در زمینهٔ اکوسیستم نرم‌افزاری و ابزارهایی مثل TensorRT و cuDNN مزیت دارد، اما فشار رقابتی برای ارائهٔ قیمت‌های رقابتی‌تر یا توسعهٔ قابلیت‌های بین‌پلتفرمی افزایش خواهد یافت. در نهایت، این حرکت می‌تواند به تنوع در منبع سخت‌افزار GPU در فضای ابری منجر شود و چشم‌انداز هتروژن‌سازی GPU در ابر را تقویت کند.

برای مشتریان کسب‌وکار، تصمیم‌گیری دربارهٔ مهاجرت مستلزم تحلیل دقیق هزینه-فایده است: تحلیل هزینهٔ ساعتیِ نمونه‌های AMD در مقابل NVIDIA، هزینه‌های احتمالیِ مهندسی برای سازگارسازی و تست، ریسک‌های عملیاتی و سطح سرویس مورد نیاز (SLA). ابزاری که بتواند با کمترین تغییرات روی لایه‌های بالاتر چارچوب‌ها (مثل PyTorch یا TensorFlow) کار کند، ارزش اقتصادی زیادی خواهد داشت، زیرا زمان و تلاش توسعه را کاهش می‌دهد و مهاجرت را تسهیل می‌کند.

در حوزهٔ فنی، چند عامل کلیدی که تیم‌ها باید به آن توجه کنند عبارت‌اند از:

  • پروفایلینگ دقیق: استفاده از ابزارهای پروفایلینگ برای شناسایی گلوگاه‌های محاسباتی و حافظه‌ای قبل و بعد از مهاجرت.
  • بنچ‌مارک‌های کاربردی: اجرای بنچ‌مارک‌های مبتنی بر بارهای واقعی برای اندازه‌گیری تاخیر و توان عملیاتی در شرایط متفاوت.
  • آزمایش رگرسیون: بررسی هرگونه اختلاف عددی بین خروجی‌های CUDA و ROCm برای تضمین دقت مدل.
  • نیازهای نرم‌افزاری: تعیین اینکه کدام کتابخانه‌ها و امکانات CUDA مورد استفاده قرار گرفته‌اند و آیا معادل‌های آن‌ها در ROCm یا MIOpen وجود دارد.
  • بررسی هزینهٔ کل مالکیت: محاسبهٔ هزینه‌های سخت‌افزار، انرژی، مجوزها و نیروی انسانی برای مقایسهٔ جامع.

اگرچه این فرایند چالش‌برانگیز است، اما برای بسیاری از شرکت‌ها که حجم استنتاج بالایی دارند، صرفه‌جویی احتمالی می‌تواند محرک قوی‌ای برای سرمایه‌گذاری در این مسیر باشد. به‌علاوه، در بلندمدت، افزایش رقابت میان عرضه‌کنندگان GPU می‌تواند به رشد اکوسیستم نرم‌افزاری میان‌پلتفرمی و استانداردهای باز کمک کند، که به نفع توسعه‌دهندگان و مشتریان نهایی خواهد بود.

در سطح فنی‌تر، چند سناریو‌ی احتمالی کاربردی وجود دارد که نشان می‌دهد چگونه این ابزارها می‌توانند پیاده‌سازی شوند و چه مزایا و محدودیت‌هایی خواهند داشت:

  • مهاجرت مدل‌های آمادهٔ تولید که از توابع پایهٔ PyTorch/TensorFlow و عملیات استاندارد شبکه‌های عصبی استفاده می‌کنند: چنین مدل‌هایی معمولاً ساده‌ترین کاندیدها برای انتقال به ROCm هستند، چرا که وابستگی کمتری به کرنل‌های خاص CUDA دارند.
  • مهاجرت مدل‌هایی با کرنل‌های سفارشی و بهینه‌سازی‌های سطح پایین: این دسته نیازمند تحلیل عمیق‌تر و احتمالاً بازنویسی برخی کرنل‌ها یا پیاده‌سازی معادل‌هایی در ROCm است. در این موارد هزینهٔ مهندسی می‌تواند مزیت اقتصادی انتقال را کاهش دهد.
  • استفاده ترکیبی از تسریع‌کننده‌ها: سازمان‌ها می‌توانند استنتاج‌های حساس به زمان را روی نمونه‌های NVIDIA نگه دارند و بارهای کم‌اهمیت‌تر یا دسته‌ای را روی AMD اجرا کنند؛ این استراتژی به حداکثر رساندن استفاده از منابع و کاهش هزینه کمک می‌کند.

در نهایت، رویکرد مایکروسافت به عنوان نمونه‌ای از تغییرات ساختاری در اکوسیستم ابر و هوش مصنوعی قابل توجه است: زمانی که هزینهٔ انجام استنتاج به اندازهٔ قابل توجهی اهمیت پیدا می‌کند، مهندسی نرم‌افزار و لایه‌های سازگارکنندهٔ نرم‌افزاری می‌توانند نقش محوری در تعیین انتخاب سخت‌افزار و معماری‌های ابری ایفا کنند.

برای تیم‌های مهندسی که قصد آزمایش یا پیاده‌سازی این نوع مهاجرت را دارند، مجموعه‌ای از اقدامات عملی پیشنهاد می‌شود:

  1. ایجاد معیارهای پایه (baseline): قبل از هر تغییری، بنچ‌مارک‌های دقیق بر روی نمونه‌های NVIDIA فعلی تهیه کنید تا معیارهای تاخیر، توان عملیاتی، مصرف حافظه و مصرف انرژی مشخص شوند.
  2. آزمایش نمونه‌های کوچک: مدل‌های کم‌حجم یا ماژول‌های غیرفعال را ابتدا روی نمونه‌های AMD و با استفاده از لایهٔ ترجمه اجرا کنید تا رفتار پایه‌ای سنجیده شود.
  3. تست اتوماسیون و CI/CD: گردش‌های کاری توسعه و استقرار را طوری تنظیم کنید که تست‌های عملکردی و رگرسیون به‌صورت خودکار در زنجیرهٔ CI اجرا شوند.
  4. برنامهٔ بازگشت (rollback): برای هر تغییر بزرگ، طرح بازیابی سریع در صورت افت عملکرد یا خطاهای بحرانی در محیط تولید طراحی کنید.
  5. همکاری نزدیک با تامین‌کننده‌ها: تعامل مستقیم با AMD و تیم پشتیبانی ROCm به منظور بهینه‌سازی هسته‌های بحرانی و دریافت به‌روزرسانی‌های درایور و کتابخانه‌ها.

در چشم‌انداز بلندمدت، اگر این ابزارها بتوانند در طیف وسیعی از بارها کارایی و ثبات ارائه دهند، نتیجهٔ نهایی احتمالاً افزایش تنوع سخت‌افزاری در ابر خواهد بود، که می‌تواند به کاهش قیمت‌ها، نوآوری سریع‌تر و انعطاف‌پذیری بیشتر برای توسعه‌دهندگان منجر شود. این تغییر می‌تواند همچنین زمینه را برای توسعهٔ استانداردهای میان‌پلتفرمی قوی‌تر، مانند گسترش پشتیبانی ONNX یا سایر قالب‌های میانی، فراهم کند؛ قالب‌هایی که به‌طور مؤثر امکان انتقال مدل‌ها بین پشته‌های مختلف سخت‌افزاری را تسهیل می‌کنند.

در خاتمه، تلاش مایکروسافت نشان‌دهندهٔ جهتی است که بازار هوش مصنوعی و خدمات ابری در پیش گرفته: افزایش حجم استنتاج، فشار برای کاهش هزینه‌ها و نیاز به اکوسیستم نرم‌افزاری باز و قابل‌انتقال. اگر این مجموعه‌ابزارها در مقیاس صنعتی جواب دهند، ممکن است گامی تعیین‌کننده به سوی چشم‌اندازی هتروژن‌تر برای پردازش‌های AI در فضای ابری باشند؛ چشم‌اندازی که در آن انتخاب GPU براساس ترکیبی از عملکرد فنی و معیارهای اقتصادی انجام می‌شود و نه صرفاً بر اساس وابستگی به یک اکوسیستم بسته.

منبع: wccftech

ارسال نظر

نظرات

پمپزون

امیدوارم عملیاتی باشه؛ قیمت کمتر یعنی سرویس ارزون‌تر. فقط مراقب رگرسیون عددی و تست‌های طولانی باشین.

مکس_ایکس

اگه بدون بازنویسی بزرگ کار کنه، تحولی بزرگه. ولی بعیده همه مدل‌ها سرِ خوشی منتقل شن، دردسر دارن.

آرمین

کمی خوشبینانه بنظر میاد، ترجمه‌ی ساده معمولا افت داره، مخصوصا برای latency حساس؛ اما ارزش امتحان رو داره

سیتی‌لاین

تحلیل متعادل و منطقیه، TCO و انرژی مهمن. رقابت لازمه، اگر AMD بتونه همپوشانی کنه همه برنده‌ان.

بیونیکس

تو پروژه‌ای شبیه دیدم؛ مسائل cache و sync لعنتی بودن. ایده خوبه ولی مرحله‌ی اجرا دردسر داره، باید تدریجی باشه.

توربو

این ادعا واقعیه؟ یه لایه runtime همه کرنل‌های سفارشی رو می‌تونه ترجمه کنه؟ خیلی از کرنل‌ها دست‌سازن…

کوین‌فلو

معقول به نظر میاد، مخصوصا برای inference‌ حجیم. فقط امیدوارم بنچمارک‌ها واقعی باشن و نه شبیه‌سازی شده.

رودایکس

وای اگه این واقعیه، کلی هزینه استنتاج تو Azure میوفته پایین؛ ولی می‌ترسم بعضی مدل‌های بهینه‌شده از کار بیفتن...

مطالب مرتبط