Open Models

Mixtral 8x22B: تحلیل تأثیر معماری MoE بر تأخیر و حافظه

انتشار Mixtral 8x22B توسط Mistral AI نقطه عطفی مهم در نحوه رویکرد ما به مدل‌های زبانی بزرگ (LLM) متن‌باز بود. با بهره‌گیری از معماری ترکیب متخصصان (MoE)، این مدل عملکردی قابل مقایسه با مدل‌های متراکم بسیار بزرگ‌تر ارائه می‌دهد، در حالی که هزینه محاسباتی پارامترهای فعال را به‌طور قابل‌توجهی کاهش می‌دهد. با این حال، این انتخاب معماری چالش‌های منحصربه‌فردی را در زمینه حجم حافظه و تأخیر استنتاج ایجاد می‌کند. در این پست، ما این مبادلات (Trade-offs) را تحلیل می‌کنیم تا به شما کمک کنیم تعیین کنید که آیا Mixtral انتخاب مناسبی برای استراتژی استقرار شماست یا خیر.

درک معماری ترکیب متخصصان (Mixture of Experts)

مدل‌های متراکم سنتی برای هر توکن پردازش‌شده، تمام پارامترهای وزنی را فعال می‌کنند. در مقابل، Mixtral 8x22B از هشت «متخصص» (شبکه‌های پیشرونده) در هر لایه استفاده می‌کند. برای هر توکن، یک مسیریاب (Router) فقط دو متخصص برتر را برای پردازش ورودی انتخاب می‌کند. این بدان معناست که در حالی که مدل دارای تعداد کل پارامتر حدود ۱۴۱ میلیارد است، تنها حدود ۱۲.۹ میلیارد پارامتر برای هر توکن فعال هستند.

این پراکندگی (Sparsity) کلید کارآمدی آن است. با این حال، این امر یک پارادوکس ایجاد می‌کند: مدل برای بارگذاری تمام متخصصان به حافظه بیشتری نیاز دارد، اما برای پردازش هر توکن به محاسبات کمتری نیاز دارد.

تحلیل حجم حافظه

با وجود داشتن پارامترهای فعال کمتر، کل VRAM مورد نیاز برای بارگذاری Mixtral 8x22B قابل توجه است. دلیل آن این است که تمام ۸ متخصص باید در حافظه حضور داشته باشند، حتی اگر در هر لحظه فقط ۲ مورد از آن‌ها فعال باشند.

نکات کلیدی حافظه:

  • نقطه شناور (FP16): حدود ۲۸۲ گیگابایت VRAM نیاز دارد. این مقدار برای اکثر تنظیمات تک‌نود عملی نیست.

  • کم‌بیت (۴ بیتی/۸ بیتی): با استفاده از تکنیک‌های کم‌بیت‌سازی مانند GPTQ یا AWQ، حجم حافظه به‌طور قابل‌توجهی کاهش می‌یابد. کم‌بیت‌سازی ۴ بیتی مدل را به حدود ۷۰ تا ۸۰ گیگابایت کاهش می‌دهد و آن را روی GPUهای مصرف‌کننده یا ایستگاه کاری سطح بالا (مثلاً تنظیمات چند GPU یا کارت‌های با حافظه بالا مانند RTX 4090 با استفاده از Offloading) امکان‌پذیر می‌کند.

برخلاف مدل‌های متراکم که مصرف حافظه آن‌ها به‌صورت خطی با محاسبات فعال مقیاس‌بندی می‌شود، مدل‌های MoE هزینه حافظه «بیکار» بالاتری دارند. شما برای ظرفیت جابه‌جایی بین متخصصان هزینه می‌کنید، نه فقط برای محاسبات فعلی.

پیامدهای تأخیر: سرعت در مقابل اندازه دسته (Batch Size)

تأخیر استنتاج در مدل‌های MoE به‌طور متفاوتی نسبت به مدل‌های متراکم رفتار می‌کند، به‌ویژه در مورد اندازه دسته.

تأخیر درخواست تکی

در سناریوهای تک‌کاربره با اندازه دسته پایین، Mixtral اغلب تأخیر کمتری به ازای هر توکن در مقایسه با مدل‌های متراکم با اندازه پارامتر فعال مشابه نشان می‌دهد. دلیل آن این است که بار محاسباتی کمتر است. GPU درگیر پردازش ۱۰۰٪ وزنه‌ها نیست و این امکان را فراهم می‌کند که در موارد ایزوله، تولید توکن سریع‌تر انجام شود.

تأخیر با اندازه دسته بالا

با افزایش اندازه دسته، مسیریاب باید توکن‌ها را به مجموعه متنوعی از متخصصان ارسال کند. این می‌تواند منجر به موارد زیر شود: ۱. گلوگاه پهنای باند حافظه: اگر مدل کم‌بیت‌سازی/آف‌لود شده باشد، سیستم باید به‌طور مکرر وزنه‌های متخصصان را درون و برون از کش یا حافظه جابه‌جا کند. ۲. عدم تعادل بار: اگر مسیریاب به‌طور مداوم برخی متخصصان را ترجیح دهد، آن GPUها یا بانک‌های حافظه خاص به نقاط داغ تبدیل می‌شوند و باعث استفاده ناهمگون و گلوگاه‌های احتمالی می‌شوند.

مثال عملی استقرار

در زیر یک قطعه کد با استفاده از vLLM، یک موتور استنتاج با پهنای باند بالا، برای ارائه Mixtral 8x22B آورده شده است. توجه داشته باشید که پیکربندی برای کم‌بیت‌سازی به منظور مدیریت حجم حافظه انجام شده است.

import vllm
from vllm import LLM, SamplingParams

# Load Mixtral 8x22B with 4-bit quantization to reduce VRAM usage
llm = LLM(
    model="mistralai/Mixtral-8x22B-Instruct-v0.1",
    quantization="gptq",  # Using GPTQ 4-bit weights
    tensor_parallel_size=2, # Distributing across 2 GPUs
    gpu_memory_utilization=0.9,
    max_model_len=4096
)

prompts = ["Explain the concept of sparse activation in AI."]
sampling_params = SamplingParams(temperature=0.7, top_p=0.95)

outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

نتیجه‌گیری

Mixtral 8x22B ابزاری قدرتمند برای توسعه‌دهندگانی است که به تولید زبان با کیفیت بالا بدون هزینه‌های محاسباتی افراطی مدل‌های متراکم ۷۰B+ نیاز دارند. با این حال، معماری MoE آن نیازمند برنامه‌ریزی دقیق است. شما به VRAM اولیه بیشتری نسبت به یک مدل متراکم با اندازه فعال قابل مقایسه نیاز خواهید داشت، اما در سرعت استنتاج برای وظایف با هم‌زمانی پایین بهره‌مند می‌شوید.

برای محیط‌های تولیدی با اندازه دسته بالا، باید تعادل بار متخصصان و پهنای باند حافظه را پایش کنید تا از گلوگاه‌ها جلوگیری شود. اگر مورد استفاده شما شامل تعاملات بلادرنگ و تک‌کاربره با یک مدل متن‌باز با کیفیت بالا باشد، Mixtral انتخاب عالی است. با این حال، برای ارائه با هم‌زمانی بالا و حجم زیاد، ممکن است نیاز باشد ارزیابی کنید که آیا هزینه حافظه ساختار MoE از مزایای فعال‌سازی پراکنده بیشتر است یا خیر.

Share: