ساخت خوشههای آموزش مدلهای زبانی بزرگ (LLM) بیشتر به معماری اتصالات بین آنها بستگی دارد تا خرید GPUهای تکی. با مقیاسپذیری مدلها از میلیاردها به تریلیونها پارامتر، «دیوار شبکه» به گلوگاه اصلی تبدیل میشود. مهندسان باید بین NVLink اختصاصی انویدیا برای اتصال نزدیک و ترنت (بهویژه InfiniBand یا RoCE) برای مقیاسپذیری خارجی انتخاب کنند. این پست تفاوتهای فنی را برای کمک به طراحی توپولوژی مناسب بررسی میکند.
درک منظره پهنای باند
تفاوت بنیادین در پهنای باند و تأخیر نهفته است. NVLink یک زیرساخت با پهنای باند بالا و تأخیر کم را مستقیماً بین GPUها فراهم میکند و عملاً چندین GPU را مانند یک واحد حافظه بزرگ و واحد رفتار میدهد. اترنت، اگرچه با فناوریهایی مانند 400GbE یا 800GbE و RDMA (دسترسی مستقیم حافظه از راه دور) به شدت بهبود یافته است، به دلیل لایه سوئیچ و سربار پروتکل، تأخیر بیشتری ایجاد میکند.
برای موازیسازی دادهها، جایی که هر GPU کپیای از مدل را نگه میدارد و دستههای مختلف داده را پردازش میکند، اترنت اغلب کافی است. با این حال، برای موازیسازی مدل یا موازیسازی لولهای (Pipeline Parallelism)—جایی که تانسورهای فعالسازی باید به طور مکرر در طول پسرو (backward passes) مبادله شوند—پهنای باند برتر NVLink از بیکار ماندن واحدهای محاسباتی در انتظار داده جلوگیری میکند.
ملاحظات توپولوژی
هنگام طراحی خوشه خود، باید در نظر بگیرید که GPUها چگونه گروهبندی شدهاند. یک تصور نادرست رایج این است که میتوانید GPUها را برای همه چیز به صورت زنجیرهای از طریق اترنت به هم متصل کنید. در اینجا یک تجزیه و تحلیل عملی آورده شده است:
- توپولوژی NVLink: معمولاً در داخل یک نود واحد استفاده میشود (مثلاً 8 عدد GPU H100 که از طریق NVSwitch متصل شدهاند). این اثر «سوپر-GPU» را ایجاد میکند.
- توپولوژی اترنت/InfiniBand: برای ارتباطات بین نودی استفاده میشود. اینجاست که شما هزاران نود را به هم متصل میکنید.
برای عملکرد بهینه در چارچوبهای آموزش توزیعشده مانند PyTorch Distributed Data Parallel (DDP) یا DeepSpeed، باید هدف خود را بر NVLink در داخل نودها و InfiniBand پرسرعت (با استفاده از بکاند NCCL) بین نودها قرار دهید.
مثال پیادهسازی: پیکربندی NCCL
هنگام راهاندازی اسکریپت آموزش خود، متغیر محیطی NCCL_IB_DISABLE تعیین میکند که از کدام بکاند استفاده شود. برای اطمینان از بهرهبرداری از اتصال پرسرعت، باید NVLink را غیرفعال کنید اگر تأخیر خالص شبکه را آزمایش میکنید، یا InfiniBand را برای ارتباطات بین نودی فعال کنید.
# مثال: اجبار NCCL به استفاده از InfiniBand برای ارتباطات بین نودی
# این برای عملکرد آموزش LLM چند نودی حیاتی است
export NCCL_SOCKET_IFNAME=eth0 # رابط پشتیبان
export NCCL_IB_HCA=mlx5 # آداپتور InfiniBand را مشخص کنید
export NCCL_DEBUG=INFO # بررسی لاگهای راهاندازی
# اجرای وظیفه آموزش خود
python -m torch.distributed.run \
--nproc_per_node=8 \
--nnodes=4 \
--node_rank=$RANK \
--master_addr=$MASTER_ADDR \
--master_port=$MASTER_PORT \
train.py
همیشه لاگهای NCCL خود را نظارت کنید. اگر هشدارهای مکرری درباره «NCCL WARN net/socket failed» میبینید، این نشان میدهد که پشتیبان اترنت شما فعال شده است که این امر پهنای باند آموزش را به شدت کاهش میدهد.
تفاوتهای هزینه و مقیاسپذیری
NVLink گران است. این فناوری به سوئیچهای PCIe تخصصی و توپولوژی خاص در داخل کیس سرور نیاز دارد. اترنت، بهویژه با استفاده از سوئیچهای اترنت استاندارد 400Gb/800Gb، مسیر مقرونبهصرفهتری برای مقیاسپذیری به صدها یا هزاران نود ارائه میدهد. با این حال، «هزینه» اترنت اغلب به صورت زمان توسعهدهنده و تلاش برای تنظیم پرداخت میشود. بهینهسازی تنظیمات RDMA، اندازه بافرها و الگوریتمهای کنترل ازدحام برای اترنت به طور قابل توجهی پیچیدهتر از اتصال به یک زیرساخت NVSwitch است.
نتیجهگیری
پاسخی برای همه موارد وجود ندارد. برای تنظیم دقیق مقیاس کوچک (<100 GPU)، خوشههای فقط NVLink اغلب بیش از حد نیاز هستند و اترنت استاندارد کافی است. برای پیشآموزش مدلهای بنیادی، NVLink برای ارتباطات درون نودی غیرقابل مذاکره است، در حالی که اترنت/InfiniBand با عملکرد بالا برای مقیاسپذیری بین نودی حیاتی است. با درک این نقشهای متمایز، میتوانید یک زیرساخت LLM بسازید که هزینه، پیچیدگی و قدرت محاسبات خام را به طور موثر متعادل کند.