NVIDIA CompileIQ: بهینهسازی کامپایلر با هوش مصنوعی
خلاصهٔ کاملتر
تیمهایی که روی pipeline استنتاج مدلهای زبانی بزرگ (LLM) کار میکنن معمولاً هفتهها وقت میذارن تا batch size، کوانتیزاسیون FP8، flash attention و kernel fusion رو بهینه کنن. ولی کامپایلر GPU هنوز از یه سری heuristic پیشفرض استفاده میکنه که برای همه workloadها «به اندازه کافی خوب» طراحی شده، نه برای workload خاص شما. NVIDIA CompileIQ که با CUDA 13.3 منتشر شده، این مشکل رو هدف قرار داده.
CompileIQ یه فریمورک Python-based هست که با الگوریتمهای تکاملی و ژنتیک، فضای گستردهای از پارامترهای داخلی کامپایلر رو جستجو میکنه؛ پارامترهایی مثل استراتژی تخصیص رجیستر، زمانبندی دستورالعملها و تبدیلهای حلقه که از طریق فلگهای عمومی در دسترس نیستن. خروجی این جستجو یه فایل ACF (Advanced Controls File) هست که با فلگ --apply-controls به کامپایلر داده میشه.
کار با CompileIQ سادهست: یه تابع objective تعریف میکنی که یه کانفیگ کامپایلر میگیره، kernel رو با اون کانفیگ میسازه، بنچمارک میکنه و یه عدد (مثلاً زمان اجرا) برمیگردونه. بقیه کار رو الگوریتم تکاملی انجام میده:
def objective(config_blob):
with open("config.acf", "wb") as f:
f.write(bytes.fromhex(config_blob))
result = subprocess.run([
"ptxas", "-v", "-arch=sm_90a",
"--apply-controls", "config.acf",
"my_kernel.ptx"
], capture_output=True, text=True)
return extract_runtime(result.stdout)موتور جستجو یه جمعیت اولیه از کانفیگهای کامپایلر میسازه، هر کدوم رو با تابع objective ارزیابی میکنه، بهترینها رو انتخاب میکنه، جهش (mutation) و ترکیب (crossover) اعمال میکنه و این چرخه رو تکرار میکنه تا به کانفیگ بهینه برسه.
یه مزیت مهم CompileIQ پشتیبانی از بهینهسازی چندهدفه هست. بیشتر ابزارهای auto-tuning فقط زمان اجرا رو بهینه میکنن، ولی CompileIQ میتونه همزمان چند معیار مثل زمان اجرا، زمان کامپایل و مصرف برق رو در نظر بگیره. خروجی یه Pareto frontier هست؛ یعنی مجموعهای از کانفیگها که هیچکدوم رو نمیشه بهتر کرد بدون اینکه معیار دیگهای بدتر بشه. تیم میتونه بر اساس محدودیتهای خودش (مثلاً دیتاسنتر محدود به برق) انتخاب کنه.
CompileIQ روی workloadهای production اعتبارسنجی شده و بهبودهایی تا ۱۵٪ روی benchmarkهای Triton و Helion گزارش شده؛ روی kernelهایی که نویسندههاشون فکر میکردن کاملاً بهینه شدن. لابراتوارهای AI پیشرو هماکنون از این ابزار در محیط production استفاده میکنن و فایلهای ACF رو کنار سورس کد kernel در version control نگه میدارن.
نکات کلیدی:
- CompileIQ بخشی از CUDA 13.3 هست و با pip install compileiq نصب میشه
- فضای جستجو برای هر دو کامپایلر PTXAS و NVCC موجوده
- تنها کاری که باید انجام بدی تعریف تابع objective هست؛ بقیه کار رو الگوریتم ژنتیک انجام میده
- بهینهسازی چندهدفه (runtime، power، compile time) با محاسبه Pareto frontier پشتیبانی میشه
- workload کاربر هیچوقت از محیط خودش خارج نمیشه؛ فقط فایل ACF تولید میشه
- این ابزار برای کدی که از قبل نسبتاً بهینه هست بهترین نتیجه رو میده، نه برای کد ضعیف




