بنچمارک TensorRT-LLM ارائه شده توسط شرکت انویدیا (NVIDIA) است. در این مقاله قصد دارم به معرفی این ابزار پرداخته و نتایج اولیه استنتاج (Inference) را روی مجموعهای از کارتهای گرافیک NVIDIA به اشتراک بگذارم.

بنچمارک TensorRT چیست؟ (مقدمه و آشنایی با ابزار انویدیا)
شرکت انویدیا پلتفرم تخصصی خود را اینگونه توصیف میکند:
«TensorRT-LLM یک API پایتون با کاربری آسان را در اختیار کاربران قرار میدهد تا مدلهای زبانی بزرگ (LLM) را تعریف کرده و موتورهای TensorRT (TensorRT engines) بسازند. این موتورها حاوی پیشرفتهترین بهینهسازیها برای اجرای کارآمد استنتاج (Inference) روی پردازندههای گرافیکی NVIDIA هستند.
افزونه TensorRT-LLM همچنین شامل کامپوننتهایی برای ساخت رانتایمهای Python و ++C است که آن موتورهای TensorRT را اجرا میکنند.»
تنها با توجه به نام این ابزار، میتوان با اطمینان فرض کرد که نتایج بنچمارک TensorRT ارتباط و مقیاسپذیری رو به بالایی با عملکرد هستههای تنسور (Tensor Cores) داشته باشد.
از آنجایی که تمام پردازندههای گرافیکی (GPU) تست شده در این مقاله دارای هستههای تنسور نسل چهارم هستند، مقایسه تعداد هستههای تنسور در هر کارت گرافیک باید معیار معقولی برای تخمین عملکرد هر مدل به ما بدهد.
اما همانطور که نتایج در ادامه نشان خواهند داد، پردازش مدلهای زبانی بزرگ (LLM) چیزی فراتر از قدرت محاسباتی خام است. عرض باس حافظه GPU و به طور کلیتر، پهنای باند کلی حافظه، متغیر بسیار مهمی است که باید هنگام انتخاب کارت گرافیک برای وظایف یادگیری ماشین در نظر گرفته شود.
جدول مشخصات فنی پردازندههای گرافیکی انویدیا در تست
| نام کارت گرافیک (NVIDIA GPU) | حافظه ویدئویی (VRAM) | تعداد هستههای تنسور | عرض باس حافظه | پهنای باند حافظه (تقریبی) |
| NVIDIA GeForce RTX 4090 | 24 GB | 512 | 384-bit | ~1000 GB/s |
| NVIDIA GeForce RTX 4080 SUPER | 16 GB | 320 | 256-bit | ~735 GB/s |
| NVIDIA GeForce RTX 4080 | 16 GB | 304 | 256-bit | ~715 GB/s |
| NVIDIA GeForce RTX 4070 Ti SUPER | 16 GB | 264 | 256-bit | ~670 GB/s |
| NVIDIA GeForce RTX 4070 Ti | 12 GB | 240 | 192-bit | ~500 GB/s |
| NVIDIA GeForce RTX 4070 SUPER | 12 GB | 224 | 192-bit | ~500 GB/s |
| NVIDIA GeForce RTX 4070 | 12 GB | 184 | 192-bit | ~500 GB/s |
| NVIDIA GeForce RTX 4060 Ti | 8 GB | 136 | 128-bit | ~290 GB/s |
۲. چالشها و محدودیتهای تست فرآیند بنچمارک TensorRT
انویدیا پکیج TensorRT-LLM v0.5.0 را برای ما ارسال کرد که شامل چندین اسکریپت برای سادهسازی نصب نیازمندیها، ساخت محیطهای مجازی (Virtual Environments) و پیکربندی صحیح متغیرهای محیطی بود.
این قابلیت زمانی که میخواهید بنچمارکها را روی تعداد زیادی سیستم اجرا کنید، بسیار مفید و کاربردی است! علاوه بر این، این اسکریپتها برای راهاندازی TensorRT-LLM روی ویندوز طراحی شدهاند که پیادهسازی آن را در مجموعه تستهای فعلی ما بسیار آسانتر میکند.
با این حال، اگرچه TensorRT-LLM از موازیسازی تنسور (Tensor-Parallelism) و موازیسازی خط لوله (Pipeline Parallelism) پشتیبانی میکند، اما به نظر میرسد استفاده از چند کارت گرافیک (Multi-GPU) محدود به لینوکس باشد؛ چرا که در مستندات رسمی آمده است:
«ابزار TensorRT-LLM روی سیستمهای ویندوزی بدون واسطه (Bare-metal Windows) فقط برای استنتاج تک کارت گرافیک (Single-GPU Inference) پشتیبانی میشود.»
محدودیت دیگر این ابزار این است که ما فقط میتوانیم از آن برای تست کارتهای گرافیک انویدیا استفاده کنیم و امکان تست استنتاج با CPU، کارتهای گرافیک AMD و پردازندههای گرافیکی اینتل وجود ندارد. البته با توجه به وضعیت فعلی و هژمونی انویدیا در این حوزه، این ابزار هنوز هم برای مقایسه توانمندیها و عملکرد نسبی GPUهای انویدیا ارزش بالایی دارد.

نکته دیگری که باید در نظر گرفت این است که دقیقاً مانند فرآیند TensorRT برای مدل تولید تصویر Stable Diffusion، در اینجا نیز باید برای هر ترکیب از مدل LLM و کارت گرافیک، یک موتور اختصاصی (Engine) تولید شود.
با این حال، تعجب کردم وقتی دیدم موتوری که برای یک کارت گرافیک تولید شده بود، مانع از اجرای بنچمارک روی کارت گرافیک دیگر نشد! البته استفاده از موتورهای ناسازگار بسته به متغیرهای تست، گاهی اوقات روی عملکرد تأثیر منفی میگذاشت؛ بنابراین همانطور که انتظار میرفت، بهترین راهکار این است که برای هر کارت گرافیک یک موتور جدید ایجاد شود.
همچنین گمان میکنم که در صورت استفاده از موتور اشتباه، متن خروجی تولید شده احتمالاً بیمعنی خواهد بود، هرچند که این بنچمارکها خروجی متنی را نمایش نمیدهند.
با وجود تمام این نکات و محدودیتها، ما مشتاقیم که ببینیم کارتهای گرافیک مختلف با این پکیج LLM بهینهسازی شده توسط TensorRT چگونه عمل میکنند.
ما کار خود را برای بنچمارک TensorRT-LLM تنها با بررسی سری GeForce انویدیا شروع میکنیم، اما امیدواریم در آینده این آزمایش را توسعه داده و کارتهای حرفهای RTX (سری ورکاستیشن) و مجموعهای از پکیجهای دیگر LLM را نیز شامل شود.
۳. پیکربندی سیستم تست بنچمارک TensorRT-LLM
برای دقت بالا در اجرای بنچمارک TensorRT-LLM، از سختافزارهای ردهبالا و پیکربندی زیر استفاده شده است:
- پردازنده (CPU): AMD Threadripper PRO 5995WX 64-Core
- خنککننده پردازنده: Noctua NH-U14S TR4-SP3 (AMD TR4)
- مادربرد: ASUS Pro WS WRX80E-SAGE SE WIFI (نسخه بایوس: 1201)
- حافظه رم: 8x Micron DDR4-3200 16GB ECC Reg (مجموعاً ۱۲۸ گیگابایت)
- کارتهای گرافیک مورد آزمایش:
- NVIDIA GeForce RTX 4090 24GB Founders Edition
- NVIDIA GeForce RTX 4080 SUPER 16GB Founders Edition (نسخه درایور: 551.31)
- NVIDIA GeForce RTX 4080 16GB Founders Edition
- PNY GeForce RTX 4070 Ti SUPER Verto 16GB
- Asus GeForce RTX 4070 Ti STRIX OC 12GB
- NVIDIA GeForce RTX 4070 SUPER 12GB Founders Edition
- NVIDIA GeForce RTX 4070 12GB Founders Edition
- Asus GeForce RTX 4060 Ti TUF OC 8GB
- نسخه درایور عمومی: 551.23
- منبع تغذیه (PSU): Super Flower LEADEX Platinum 1600W
- حافظه ذخیرهسازی: Samsung 980 Pro 2TB
- سیستم عامل: Windows 11 Pro 22H2 build 22621.3007
- نرمافزارهای مورد استفاده: TensorRT-LLM v0.50 / TensorRT 9.1.0.4 / cuDNN 8.9.5 / CUDA 12
توضیحات تکمیلی مدل: پکیج TensorRT-LLM که دریافت کردیم برای استفاده از مدل Llama-2-7b پیکربندی شده بود که به فرمت ۴ بیتی AWQ کوانتیزه (Quantized) شده بود. اگرچه TensorRT-LLM از مدلها و روشهای کوانتیزاسیون متنوعی پشتیبانی میکند، من ترجیح دادم از این مدل نسبتاً سبک استفاده کنم تا بتوانم کارتهای گرافیک متعدد را بدون نگرانی زیاد از محدودیتهای VRAM تست کنم.
برای هر ردیف از متغیرهای زیر، من پنج تست متوالی به ازای هر کارت گرافیک انجام دادم و میانگین نتایج را محاسبه کردم:
- طول ورودی (Input Length): 100 | طول خروجی (Output Length): 100 | اندازه بچ (Batch Size): 1
- طول ورودی: 100 | طول خروجی: 100 | اندازه بچ: 8
- طول ورودی: 2048 | طول خروجی: 512 | اندازه بچ: 1
- طول ورودی: 2048 | طول خروجی: 512 | اندازه بچ: 8
۴. نتایج و تحلیل بنچمارک TensorRT
تست اول: ابعاد ۱۰۰/۱۰۰ با حجم دسته (Batch Size) ۱
به طور کلی، نتایج عملکرد کاملاً با انتظارات ما بر اساس تعداد هستههای تنسور هر کارت همخوانی دارد. با این حال، میبینیم که عملکرد کارتهای دارای عرض باس حافظه یکسان، با وجود تفاوتهای نسبی در تعداد هستههای تنسور، بسیار به هم نزدیک است.
Lama-2-7b 4bit AWQ – GPU Performance
Input length 100, Output length 100, Batch size 1
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
بارزترین نمونه این اتفاق بین دو کارت RTX 4070 و RTX 4070 Ti رخ داد. اگرچه کارت 4070 Ti تقریباً ۳۰ درصد هستههای تنسور بیشتری نسبت به 4070 معمولی دارد، اما این تفاوت در عمل تنها به اختلاف حدود ۲ توکن در ثانیه (Tokens per Second) منجر شد.
Lama-2-7b 4bit AWQ – GPU Performance
Input length 100, Output length 100, Batch size 1
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
تست دوم: ابعاد ۱۰۰/۱۰۰ با حجم دسته (Batch Size) ۸
با حفظ طول ورودی و خروجی ۱۰۰، اما افزایش اندازه بچ به ۸، شاهد پراکندگی و فاصله بیشتری در میان کارتهایی هستیم که پیش از این بر اساس پهنای باند حافظه نسبی خود همگروه شده بودند. این تغییر باعث شد که نتایج تمایل بیشتری به همبستگی مستقیم با تعداد هستههای تنسور نشان دهند.
Lama-2-7b 4bit AWQ – GPU Performance
Input length 100, Output length 100, Batch size 8
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
Lama-2-7b 4bit AWQ – GPU Performance
Input length 100, Output length 100, Batch size 8
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
تست سوم: ابعاد ۲۰۴۸/۵۱۲ با حجم دسته (Batch Size) ۱
با افزایش طول ورودی و خروجی به حداکثر مقدار توصیهشده توسط انویدیا برای این مدل خاص، بار دیگر دریافتیم که با اندازه بچ ۱، نتایج به شدت تحت تأثیر پهنای باند حافظه در دسترس قرار میگیرند.
Lama-2-7b 4bit AWQ – GPU Performance
Input length 2048, Output length 512, Batch size 1
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
این پدیده کمی کمرنگتر از تستهای کوچکتر «100,100» بود و گمان میکنم که متن و کانتکست بزرگتر به محاسبات بیشتری نیاز دارد و در نتیجه، مزیت داشتن هستههای تنسور بیشتر را برجسته میکند. با وجود این، واضح است که پهنای باند حافظه همچنان نقش مهمی در این تست ایفا میکند.
Lama-2-7b 4bit AWQ – GPU Performance
Input length 2048, Output length 512, Batch size 1
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
تست چهارم: ابعاد ۲۰۴۸/۵۱۲ با حجم دسته (Batch Size) ۸ (محدودیت شدید VRAM)
در این تست، اگر در نهایت با محدودیت حجم حافظه ویدئویی (VRAM) مواجه نمیشدم، حدس میزنم که شاهد همان الگوی قبلی میبودیم؛ یعنی اندازه بچ بزرگتر، مقیاسپذیری بهتری با تعداد هستههای تنسور نشان میداد.
Lama-2-7b 4bit AWQ – GPU Performance
Input length 2048, Output length 512, Batch size 8
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
نیازمندیهای حافظه VRAM در این تست به کمی بیش از ۱۶ گیگابایت جهش کرد (در مقایسه با حدود ۷ گیگابایت در تستهای قبلی)، به همین دلیل دیدیم کارتهای دارای ۱۲ گیگابایت حافظه VRAM و کمتر، به شدت به مشکل خوردند و آسیب دیدند.
Lama-2-7b 4bit AWQ – GPU Performance
Input length 2048, Output length 512, Batch size 8
RTX 4090 24GB
RTX 4080 SUPER 16GB
RTX 4080 16GB
RTX 4070 Ti SUPER 16GB
RTX 4070 Ti 12GB
RTX 4070 SUPER 12GB
RTX 4070 12GB
RTX 4060 Ti 8GB
یک فاکتور کلیدی در این تست این بود که معیار توکن در ثانیه کاملاً با زمان کل صرف شده برای اتمام یک دور بنچمارک مطابقت داشت. کارت RTX 4090 این تست را در حدود ۳۵ ثانیه به پایان رساند و کارتهای ۱۶ گیگابایتی هر کدام کمی بیش از ۵۰ ثانیه زمان بردند.
با این حال، بدون حافظه VRAM کافی، زمان اتمام بنچمارک برای کارتهای ۱۲ گیگابایتی به حدود ۲۶۰ ثانیه و برای کارت ۸ گیگابایتی 4060Ti به رقم سرسامآور ۹۶۰ ثانیه رسید!
نکته بسیار مهم درباره درایور انویدیا: به دلیل تغییراتی که انویدیا در درایور نسخه 535.98 برای حل مشکل کرش کردن سیستم در هنگام پر شدن کامل ظرفیت VRAM اعمال کرد، اکنون به جای ارور دادن و متوقف شدن بنچمارک، دادههای اضافی به حافظه سیستم (RAM معمولی) که بسیار کندتر است منتقل (Overflow) میشوند.
این امر به شدت روی عملکرد تأثیر منفی میگذارد؛ هرچند ممکن است برخی کاربران این افت شدید سرعت را به دریافت خطای تخصیص حافظه (Memory Allocation Error) و شکست کامل فرآیند ترجیح دهند. بسیاری از کاربران استیبل دیفیوژن (Stable Diffusion) از این تغییر غافلگیر شدند و تعجب میکردند که چرا عملکرد آنها گاهی به شدت افت میکند.
اگرچه انویدیا گزینهای برای مدیریت این رفتار در کنترل پنل خود (NVIDIA Control Panel) تعبیه کرده است، اما حداقل در تستهای من برای بنچمارک TensorRT، فعال کردن تنظیم عمومی “Prefer No Sysmem Fallback” مانع از استفاده بنچمارک از حافظه رم سیستم در هنگام پر شدن ظرفیت VRAM نشد.
۵. نتیجهگیری و جمعبندی نهایی (Closing Thoughts)
با نگاهی به نتایج بنچمارک TensorRT-LLM، کاملاً روشن میشود که علاوه بر قدرت پردازش خام یک GPU، پهنای باند حافظه نقش حیاتی و تعیینکنندهای در عملکرد کلی هوش مصنوعی دارد. هر زمان که هستههای پردازشی منتظر دریافت دادهها بمانند، زمان هدر رفته و این به معنای افت عملکرد کلی است.
این امر به خوبی درک ما را از دلیل سلطه بیچونوچرای GeForce RTX 4090 نسبت به سایر کارتهای گرافیک گیمینگ و مصرفکننده شفاف میکند؛ تعداد هستههای تنسور فوقالعاده بالا و باس حافظه عریض این کارت، آن را به گزینهای ایدهآل برای پردازشهای یادگیری ماشین و هوش مصنوعی تبدیل کرده است.
اگر بخواهم این تست را دوباره تکرار کنم (که احتمالاً در آینده این کار را خواهیم کرد!)، مایلم تستهای میانبرداری بیشتری مانند طول ورودی و خروجی ۵۱۲ با دستههای ۱ و ۸ ایجاد کنم. فکر میکنم این کار به تثبیت الگوهای نوظهور عملکرد بدون فراتر رفتن از بودجه VRAM کارتهای گرافیک کوچکتر کمک شایانی کند.
علاوه بر این، بسیار مشتاقم ببینم این ابزار تحت لینوکس برای تست پیکربندیهای چند کارت گرافیک (Multi-GPU) چگونه عمل میکند و کارتهای حرفهای NVIDIA Professional RTX چه بازدهی خواهند داشت.
با وجود برخی محدودیتها – مانند پشتیبانی انحصاری از استنتاج تک کارت گرافیک در ویندوز و نیاز به تولید موتورهای سفارشی برای هر ترکیب از مدل و GPU – ابزار TensorRT-LLM یک راهکار انعطافپذیر برای استقرار و تست مدلهای مختلف LLM روی کارتهای گرافیک انویدیا است. اینکه آیا ما این ابزار را در مجموعه بنچمارکهای استاندارد خود ادغام خواهیم کرد یا خیر هنوز مشخص نیست، اما دلایل متقاعدکنندهای برای بررسی آن وجود دارد.
اگرچه ما ترجیح میدهیم تستها را در بنچمارک TensorRT-LLM به گونهای انجام دهیم که برندها و انواع مختلف GPU (مانند AMD و Intel) را شامل شود، اما مطمئناً بهینهسازیهای اختصاصی یک برند مانند این ابزار، جایگاه ویژهای دارند؛ بهخصوص در حوزه هوش مصنوعی و یادگیری ماشین (AI/ML) که این بهینهسازیها میتوانند مزایای عملکردی چشمگیری را به همراه داشته باشند.







