چه چیزی منتشر شده است

بخش اول یک مجموعه‌آموزش از آمازون در بلاگ Hugging Face نحوه تحلیل سیستماتیک عملکرد استنتاج روی AWS Trainium را توضیح می‌دهد. Trainium تراشه‌ای اختصاصی برای آموزش و استنتاج یادگیری عمیق است و TorchNeuron بک‌اند متن‌باز بومی PyTorch برای آن معرفی شده است. به گفته نویسنده، این بک‌اند جریان‌های استاندارد PyTorch از جمله حالت eager، torch.compile و APIهای رایج را با تغییر کد اندک پشتیبانی می‌کند و با Neuron Kernel Interface برای عملگرهای سفارشی یکپارچه است.

متن فرض می‌کند خواننده تجربه پروفایل‌گیری ندارد و مراحل را از ابتدا نشان می‌دهد.

برای بررسی:Profiling TorchNeuron (Part 1): System-level profiling on AWS Trainium.

روش کار: از تنظیم پروفایلر تا Neuron Explorer

برای ثبت داده، NeuronConfig تعیین می‌کند کدام جریان‌های داده و کدام NeuronCoreها ثبت شوند و خروجی کجا نوشته شود. سپس NeuronProfiler با callback خروجی، فایل trace.json را کنار ردیابی‌های سیستمی Neuron می‌نویسد. فعال‌کردن correlate_device_time زمان دستگاه را به جدول key_averages() می‌آورد تا زمان CPU و Neuron مقایسه شود. نویسنده تأکید می‌کند بدون فراخوانی torch.neuron.synchronize() داخل حلقه، ممکن است خروجی پیش از پایان کار دستگاه گرفته شود و ستون زمان Neuron خالی بماند.

Neuron Explorer ابزار مرورگرمحور برای دیدن ردیابی سیستم، خط زمانی دستگاه و تفکیک هر موتور است و از طریق تونل SSH یا افزونه Visual Studio Code در دسترس است. در آن می‌توان یک عملگر را از ارسال در فریم‌ورک، به زمان‌بندی در runtime و سپس اجرا روی NeuronCore دنبال کرد.

برای بررسی:Profiling TorchNeuron (Part 1): System-level profiling on AWS Trainium.

نتایج اندازه‌گیری RMSNorm

مثال، RMSNorm را در سه پیاده‌سازی مقایسه می‌کند: عملگرهای ساده PyTorch، تابع torch.rms_norm و همان کد ساده با torch.compile. ورودی تانسور bfloat16 با ابعاد ۴ در ۵۱۲ است و پیکربندی و زمان‌بندی پروفایلر در هر سه یکسان بوده است. این اعداد از یک اجرای مشخص همین مثال‌اند، نه برآورد برای مدل‌ها یا بارهای کاری گسترده‌تر.

در نسخه ساده، شش فراخوانی عملگر مجموعاً حدود ۲٬۳۵۵ میکروثانیه زمان Neuron داشتند و سه فراخوانی aten::mul بیشترین سهم را گرفتند (۱٬۱۶۴٫۵ میکروثانیه، ۴۹٫۵ درصد). torch.rms_norm به یک کرنل ادغام‌شده تبدیل شد و حدود ۴۰۳ میکروثانیه زمان Neuron داشت. نسخه torch.compile با backend نورون حدود ۳۷۶ میکروثانیه بود. بر اساس متن، هر دو روش ادغام در این اجراها حدود یک‌ششم زمان دستگاه نسخه ساده را مصرف کردند. دلیل ذکرشده حذف فاصله‌های بین اجراهای سخت‌افزاری و پرهیز از ساخت مقادیر میانی مانند x_sq و mean_sq است.

برای بررسی:Profiling TorchNeuron (Part 1): System-level profiling on AWS Trainium.

پیامدها و محدودیت‌ها

برای تیم‌هایی که روی Trainium کار می‌کنند، الگوی پیشنهادی روشن است: نقطه داغ را در جدول پیدا کنید، در ردیابی تأیید کنید و بررسی کنید که عملگر ادغام‌شده یا torch.compile هزینه را کم می‌کند یا نه. نویسنده می‌گوید همین روند برای مدل‌های بزرگ‌تر قابل استفاده است، اما نتیجه عددی را فقط برای RMSNorm نشان داده است.

محدودیت‌ها: اجرای نمونه‌ها نیازمند محیط Trainium با بسته torch_neuronx است و اسکریپت‌ها در پوشه نمونه‌های torch-neuronx منتشر شده‌اند. آزمون مستقل نتایج در این منبع ارائه نشده است. منبع درباره دسترسی در ایران چیزی نمی‌گوید. تحلیل سطح دستگاه، شامل TensorEngine، VectorEngine، DMA و مدل roofline، به بخش دوم موکول شده است.

برای بررسی:Profiling TorchNeuron (Part 1): System-level profiling on AWS Trainium.

پشت این نوشته

منابع و جزئیات

این خبر با کمک هوش مصنوعی نوشته شده و با بررسی خودکار منابع و متن منتشر شده است. تصویر، تصویرسازی مفهومی است.

این منابع را می‌توانی برای بررسی ادعاها و جزئیات بیشتر بخوانی. تاریخ کنار هر منبع، زمان بررسی آن برای این نوشته است.

  1. Profiling TorchNeuron (Part 1): System-level profiling on AWS Trainium.
    huggingface.coبررسی:

نخستین انتشار:

روش تهیه و بازبینی نوشته‌ها