Wafer: اجرای GLM-5.2 رو کارتهای AMD هم بهصرفهست
خلاصهٔ کاملتر
تقاضای اینفرنس مدلهای هوش مصنوعی اینروزها خیلی بیشتر از عرضهست و مدلهای جدید مثل Claude Fable، GLM-5.2 و Minimax M3 پشتسرهم میان بیرون. قیمت کارتهای NVIDIA داره میره بالا و توکنها گرونتر میشن. تیم Wafer معتقده جواب این مشکل رو باید توی کارتهای AMD پیدا کرد؛ کارت MI355X در مقایسه با B300 حدود ۲.۷۵ برابر ارزونتره و مشخصات مشابهی هم داره، ولی چون اکوسیستم نرمافزاری NVIDIA (CUDA) خیلی جاافتادهتره، معمولاً سرویسدهندهها روی کارتهای NVIDIA راحتتر و سریعتر مدلهای جدید رو سرو میکنن.
Wafer توی این مقاله میگه با یه سری بهینهسازی، تونسته روی MI355X به ۸۰٪ سرعت یه B200 برسه، اونم با کمتر از نصف قیمت. توی یه سناریوی واقعی (۲۰ هزار توکن ورودی، ۱ هزار توکن خروجی، ۶۰٪ نرخ اصابت کش) به توان عملیاتی ۲۶۲۶ توکن بر ثانیه روی هر نود، با ۲.۴ درخواست بر ثانیه و تاخیر شروع پاسخ زیر ۵ ثانیه رسیدن. توی حالت تکجریانی هم روی ۲۱۳ توکن بر ثانیه گرفتن که طبق استاندارد Artificial Analysis سنجیده شده و از نظر قیمت به عملکرد، برندهست.
اولین قدم انتخاب روش کوانتایز و فریمورک بود. وزنهای اصلی مدل که با فرمت bf16 بودن رو با ابزار AMD Quark به MXFP4 تبدیل کردن. طبق تستهای استاندارد مثل GSM8K و GPQA-Diamond، این کوانتایز تقریباً هیچ افت کیفیتی نسبت به نسخهی رسمی FP8 شرکت z-ai نداشت.
برای فریمورک اینفرنس هم سه گزینه داشتن: vLLM، ATOM و sglang. vLLM هنوز مسیر MXFP4 رو با معماری خاص GLM (GlmMoeDsa) درست پشتیبانی نمیکرد، ATOM هم توی کانتکستهای طولانی کیفیتش افت میکرد. برای همین sglang رو انتخاب کردن، چون کمترین اصطکاک رو برای استفاده از کوانتایز داشت.
برای بالابردن سرعت، فعال کردن رمزگشایی گمانهزنیشده (speculative decode) قدم بعدی بود، ولی ایمیج آمادهی sglang روی ROCm این قابلیت رو پشتیبانی نمیکرد. یه مشکل این بود که وزن اشتراکی لایهی MTP با یه اسم متفاوت از بقیهی لایهها ثبت شده بود، برای همین سیستم کوانتایز اشتباهی میخواست اون رو هم فشرده کنه و موقع بارگذاری کرش میکرد؛ راهحلش این بود که همون لایه رو توی لیست وزنهای کوانتایزنشده، زیر اسم درستش هم اضافه کنن. مشکل دوم یه include مخصوص CUDA توی یکی از کرنلها بود که برای ROCm گارد نداشت؛ با یه #ifdef USE_ROCM حلش کردن. همین دو تا تغییر کوچیک، سرعت تکجریانی رو تقریباً ۳ برابر کرد.
اما برای توان عملیاتی کلی، چون بار کاری بیشتر روی مرحلهی prefill (پردازش اولیهی ورودی) گیر بود، فقط بهینهسازی رمزگشایی کافی نبود. تنظیم TP8 که برای تکجریانی خوب بود، روی این بار کاری فقط ۱۴۶۱ توکن بر ثانیه میداد؛ با عوضکردنش به TP4×DP2 به ۱۹۴۴ رسیدن. بعدش فهمیدن کرنل MoE مدل توی حالت fp4 داشت از یه مسیر کند و پیشفرض استفاده میکرد، چون کتابخونهی aiter فقط برای مسیر fp8 تنظیم شده بود؛ با تنظیم دستی این کرنل برای شکل خاص GLM، به ۲۶۲۶ توکن بر ثانیه روی هر نود رسیدن.
به گفتهی نویسنده، اینبار برخلاف کارشون روی مدل Qwen3.5 397B، اصلاً نیازی به نوشتن کرنل اختصاصی نبود و رسیدن به بهترین نسبت قیمت به عملکرد روی AMD، کار سختی نبود. نتیجهای که میگیره اینه که فاصلهی نرمافزاری AMD با NVIDIA داره توی عمل کم میشه و دیگه موضوع اصلی، پشتیبانی روز-صفر از مدلهای جدیده، نه خود قدرت سختافزار.
نکات کلیدی:
- کارت MI355X حدود ۲.۷۵ برابر از B300 ارزونتره ولی پشتیبانی نرمافزاری NVIDIA هنوز جلوتره
- Wafer با کوانتایز MXFP4 (بهجای FP8) و انتخاب sglang، افت کیفیت محسوسی نداشت
- دو باگ کوچیک توی پشتیبانی speculative decode روی ROCm پیدا و رفع کردن که سرعت تکجریانی رو ۳ برابر کرد
- تنظیم مجدد موازیسازی (TP4×DP2) و کرنل MoE، توان عملیاتی رو به ۲۶۲۶ توکن بر ثانیه روی هر نود رسوند
- نتیجه: روی این بار کاری، MI355X به ۸۰٪ سرعت B200 رسید با کمتر از نصف قیمت




