وقتی GPUهای فوقسنگین هم مجازی میشن
در این مقاله، تیم UbiCloud توضیح میده چطور تونستن ماشینهای NVIDIA HGX B200 رو با روشهای متنباز برای اجرای ماشین مجازیهای GPUدار آماده کنن؛ کاری که بهخاطر معماری خاص B200 حتی از H100 هم پیچیدهتره.
دلیل پیچیدگی اینجاست که B200ها بهصورت داخلی از NVLink و NVSwitch استفاده میکنن تا چند GPU با پهنای باند بسیار بالا به هم وصل باشن، اما همین ساختار، مجازیسازی رو سختتر از GPUهای معمولی PCIe میکنه.
سه روش اصلی برای مجازیسازی روی این سختافزار وجود داره: ۱. در حالت Passthrough کامل، یک یا چند GPU مستقیماً به یک VM داده میشن؛ یا هر هشت GPU با هم، یا بهصورت جدا بدون NVLink.
۲. در حالت اشتراکگذاری با NVSwitch، GPUها گروهبندی میشن و هر گروه (۱، ۲، ۴ یا ۸ GPU) همچنان پهنای باند NVLink کامل رو حفظ میکنه.
۳. در روش vGPU slicing، منابع یک GPU بین چند VM تقسیم میشن و بیشتر برای بارهای سبکتر مناسبه.
بهدلیل نیاز به تعادل بین کارایی و انعطافپذیری، تیم UbiCloud در نهایت از مدل Shared NVSwitch استفاده کرده؛ مدلی که امکان ساخت VMهای ۱ تا ۸ GPU رو فراهم میکنه بدون اینکه پهنای باند داخلی از بین بره.
در مسیر پیادهسازی، چند چالش مهم وجود داشت:
لازم بود GPUها برای passthrough از درایور معمولی جدا و به کرنل مناسب bind بشن
نسخه درایور NVIDIA روی Host و داخل VM باید دقیقاً یکی باشه تا CUDA درست کار کنه
برای شبیهسازی توپولوژی واقعی PCIe، استفاده از QEMU ضروری بود
حجم بالای PCI BAR در B200 باعث کندی شدید بوت میشد که با تنظیمات خاص و نسخههای جدید QEMU برطرف شد
در نهایت، وقتی همه این لایهها درست کنار هم قرار بگیرن، میشه روی HGX B200 با ابزارهای متنباز، ماشینهای مجازی با دسترسی کامل به GPUهای بسیار قدرتمند ساخت.
منبع:
UbiCloud Blog
@NobarCloud ☁️

Ubicloud
Virtualizing NVidia HGX B200 GPUs with Open Source
This blog post covers how we virtualized NVIDIA HGX B200 GPUs using open-source software. It talks about VFIO passthrough, QEMU PCI topology fixes, large BAR boot stalls, and Fabric Manager partitions.
3
2December 18, 2025 543 10