شروع سرد استنتاج GPU را از زمان تا اولین توکن سرو شده (TTFTS) اندازه‌گیری کردیم و زمان را در نودهای GPU از 8 دقیقه به کمتر از 1 دقیقه رساندیم. مسیر کامل از ایجاد پاد تا خروج اولین پاسخ شش فاز مستقل دارد که هر کدام گلوگاه و راه‌حل ویژهٔ خود را طلب می‌کنند؛ بسته به اندازهٔ مدل، یکی از این فازها غالب می‌شود.

نتایج کلیدی: چه اندازه‌گیری شد و چه به‌دست آمد

TTFTS فاصلهٔ زمانی از ایجاد پاد تا خروج اولین پاسخ استنتاج از GPU است — هزینهٔ یک‌بارهٔ راه‌اندازی که قبل از سنجش تأخیر هر درخواست رخ می‌دهد. دو سناریوی اصلی بهینه‌سازی شدند:

  • راه‌اندازی مجدد پاد روی نود گرم: پیش از بهبود 1.5–8 دقیقه، پس از بهبود زیر 30 ثانیه (کاهش 80–93%).
  • نود جدید از صفر (نود سرد): پیش از بهبود 8–15 دقیقه، پس از تنظیمات زیرساختی حدود ~5 دقیقه (کاهش 40–65%).

کاهش 80–93٪ مربوط به هزینهٔ هر بار راه‌اندازی مجدد پاد (مثلاً مقیاس‌افزایی یا به‌روزرسانی rolling) است و با تغییر پیکربندی خوشه قابل دستیابی است. بهبودهای مربوط به نود سرد مستلزم ترکیبی از پیکربندی پلتفرم و قابلیت‌های سرویس زیرساختی مانند EKS Auto Mode است.

شش لایهٔ شروع سرد و مالکیت هر لایه

وقتی پاد استنتاجی روی یک نود GPU تازه provision می‌شود، قبل از سرو کردن اولین درخواست از این شش فاز می‌گذرد:

  1. تأمین نود — ابزارهایی مانند Karpenter نمونهٔ EC2 را راه‌اندازی و ثبت می‌کنند (≈60–90s).
  2. مقداردهی درایور GPU — ماژول کرنل بارگذاری و دستگاه‌ها آشکار می‌شوند.
  3. کشیدن تصویر کانتینر — انتقال و استخراج یک ایمیج فشردهٔ 8–12 گیگابایت.
  4. دانلود وزن‌های مدل — جریان فایل‌های مدل از ذخیره‌ساز ابری به حافظهٔ GPU.
  5. کامپایل هسته‌های GPUtorch.compile گراف را رهگیری و هسته‌های CUDA تولید می‌کند.
  6. مقداردهی موتور — ضبط گراف CUDA، پروفایل KV و راه‌اندازی سرور HTTP (≈30–120s بسته به کش بودن کامپایل).

هر لایه گلوگاه خاص خود را دارد؛ از شبکه و I/O تا زمان کامپایل کد CUDA. بنابراین ترکیبی از بهینه‌سازی‌ها برای کاهش کلی TTFTS لازم است.

کدام لایه غالب می‌شود؟ نقش اندازهٔ مدل

ابزارسنجی روی دو نمونه نشان داد:

  • مدل ~64 GB (Qwen3.6-35B-A3B): بارگذاری وزن‌ها ≈29s (35%)، کامپایل (torch.compile) ≈53s (65%).
  • مدل ~203 GB (Llama-4-Scout، TP=4): بارگذاری وزن‌ها ≈423s (92%)، کامپایل ≈34s (8%).

نتیجه واضح است: برای مدل‌های زیر تقریباً 100 GB، زمان کامپایل غالب است؛ برای مدل‌های بزرگ‌تر، انتقال شبکه و بارگذاری وزن‌ها غالب می‌شود. زمان کامپایل وابسته به پیچیدگی گراف اجرایی است، نه صرفاً تعداد پارامترها، و زمان بارگذاری وزن‌ها تقریباً خطی با اندازهٔ فایل افزایش می‌یابد.

حذف هدررفت‌ها — رویکردها

بهینه‌سازی‌ها را در دو دستهٔ مجزا انجام دادیم: تغییرات سطح پاد (گرم) و تغییرات سطح زیرساخت (سرد).

بهینه‌سازی‌های نود گرم (قابل اجرا در هر خوشهٔ Kubernetes)

  • فعال‌سازی کش کامپایل هسته‌های CUDA با متغیرهای محیطی مناسب برای جلوگیری از بازکامپایل تکراری.
  • مونت یک volume مشترک برای ذخیرهٔ نتایج کامپایل و پروفایل‌های KV بین پادها تا خروجی کامپایل دوباره استفاده شود.
  • پیکربندی دانلود موازی وزن‌ها و بهینه‌سازی الگوی خواندن از S3 تا از پهنای باند موجود حداکثر استفاده شود.

این تغییرات پیکربندی ساده، زمان راه‌اندازی مجدد پاد را تا 80–93% کاهش دادند و نیازی به تغییر در کد مدل نبود.

بهینه‌سازی‌های نود سرد (نیازمند پیکربندی زیرساخت)

  • فعال‌سازی EKS Auto Mode که شامل درایورهای NVIDIA از پیش کامپایل‌شده است.
  • استفاده از SOCI (Seekable OCI) برای کشیدن موازی و سریع‌تر تصویر کانتینر.
  • مونت NVMe instance store برای کش محلی وزن‌ها و تصاویر کاهش I/O از شبکه.
  • مسیردهی ترافیک S3 از طریق VPC endpoint برای جلوگیری از عبور ترافیک از NAT Gateway و افزایش پهنای باند مؤثر (VPC endpoints for S3).

با این تدابیر بخش بزرگی از تأخیر شبکه‌ای و I/O حذف شد و زمان نود سرد به حدود ~5 دقیقه رسید. بخشی از تاخیر (≈2 دقیقه) همچنان هزینهٔ ثابت تأمین نود و مقداردهی اولیهٔ چارچوب است که در لایهٔ سخت‌افزار و سرویس مدیریت‌شده رخ می‌دهد.

معماری بهینه‌سازی شروع سرد مدل‌های بزرگ روی GPU

نکات عملی برای مهندسان

  • برای مدل‌های زیر 100 GB، ابتدا روی کش کامپایل تمرکز کنید؛ برای مدل‌های بزرگ‌تر، بهینه‌سازی دانلود وزن‌ها اولویت دارد.
  • تصاویر کانتینر و داده‌های S3 را در همان منطقه نگهدارید و دسترسی S3 را با VPC endpoint یا تنظیمات منطقه‌ای هماهنگ کنید تا پهنای باند مؤثر افزایش یابد.
  • در محیط‌های تولیدی، از volume مشترک برای نتایج کامپایل و پروفایل KV استفاده کنید تا راه‌اندازی مجدد پادها سریع‌تر شود.
  • برای کشیدن سریع‌تر تصاویر بزرگ، SOCI یا snapshotterهای مشابه را بررسی کنید و تست‌های عملی روی حجم‌های واقعی انجام دهید.
  • درایورهای NVIDIA و اجزای کرنل را از پیش نصب و تست کنید تا زمان مقداردهی درایور کاهش یابد.

مراجعِ مفید: مستندات PyTorch برای جزئیات torch.compile و مخزن Karpenter برای تأمین خودکار نودها.

چشم‌انداز

کاهش چشمگیر زمان شروع سرد استنتاج GPU، هم هزینهٔ عملیاتی را کاهش می‌دهد و هم تجربهٔ کاربری را بهبود می‌بخشد. ترکیب بهینه‌سازی‌های پیکربندی و قابلیت‌های زیرساختی مانند EKS Auto Mode و SOCI امکان نزدیک‌شدن به پاسخ‌دهی فوری را فراهم می‌کند. استانداردسازی این الگوها در ابزارهای ارکستراسیون می‌تواند این بهبودها را به شکل پیش‌فرض درآورد و بار مهندسی را کاهش دهد.