Clover-35B چطور کار میکنه: block diffusion روی پایهٔ Qwen3.6
خلاصهٔ کاملتر
Clover-35B-A3B-Preview یه مدل open-weight از شرکت DiffuSpace هست که روی Qwen3.6-35B-A3B ساخته شده. 35 میلیارد پارامتر کل داره که فقط حدود 3 میلیاردش برای هر توکن فعال میشه، context window اش 128K توکنه و با لایسنس Apache 2.0 منتشر شده. فرق اصلیش روش تولید متنه: بهجای autoregressive (یعنی یه توکن در هر قدم، از چپ به راست)، از block diffusion استفاده میکنه.
تو این روش هر بلوک (پیشفرض 32 توکن) اول کاملاً mask شدهست، مثل نویز تو مدلهای دیفیوژنی تصویر. مدل برای هر جای خالی یه امتیاز اطمینان حساب میکنه و هر توکنی که از آستانهٔ 0.95 رد بشه رو موازی پر میکنه. اگه هیچکدوم به این حد نرسن، باز هم مطمئنترین توکن پر میشه که تولید گیر نکنه. وقتی بلوک کامل شد، به causal prefix بلوک بعدی اضافه میشه.
به این قسمت میگن bidirectional block attention: توکنهای داخل یه بلوکِ نیمهکاره میتونن به دو طرف به هم نگاه کنن، ولی بلوکهای قفلشده مثل یه prefix معمولی رفتار میکنن. DiffuSpace برای این کار معماری Qwen رو عوض نکرده. فقط پارامترهای یادگرفتهشدهٔ جدید، مثل وزنهای right-convolution و کنترلهای softmax، به لایههای Gated DeltaNet اضافه کرده. یعنی مدل دیگه مجبور نیست سر هر توکن قطعی تصمیم بگیره و چندتا رو با هم حل میکنه.
بیشتر استخونبندی Qwen دستنخورده مونده: 40 لایه با ترکیب Gated DeltaNet (یه مکانیزم شبیه linear attention) و full attention، و 256 expert تو هر لایهٔ MoE که هر توکن به 8 تاشون فرستاده میشه، بهاضافهٔ یه shared expert که همهٔ توکنها ازش رد میشن. اگه درخواستی، با احتساب جای لازم برای تموم کردن بلوک آخر، از 128K بیشتر بشه، کلاً رد میشه.
وزنها BF16 هستن و تو 26 فایل safetensors پخش شدن. فقط برای خود وزنها حدود 69 گیگ حافظهٔ GPU لازمه، جدا از KV cache و بقیهٔ حالتهای inference. پس با یه کارت 24 یا 48 گیگی بدون quantization نمیشه اجراش کرد و یه A100/H100 هشتاد گیگی یا چند GPU لازمه. اجرا با Transformers 5.19.0 و block_size=32 و threshold=0.95 انجام میشه، ولی DiffuSpace برای سرو کردن، پیادهسازی SGLang خودش رو پیشنهاد میده. دلیلش اینه که اختلافهای عددی کوچیک بین عملیات PyTorch و کرنلهای SGLang میتونه متن خروجی رو عوض کنه.
یه ویژگی خاص هم انتخاب expert در سطح بلوک هست، با moe_block_coreset_enabled (پیشفرض روشن) و moe_block_coreset_top_p (پیشفرض 0.9). مدل امتیاز routing همهٔ توکنهای یه بلوک رو جمع میزنه و فقط expertهایی رو نگه میداره که 90 درصد وزن کل routing رو پوشش میدن، که معمولاً خیلی کمتر از 256 تاست. این کار پهنای باند حافظه رو کم میکنه، ولی top_p پایینتر کیفیت رو پایین میاره و حجم 69 گیگی وزنها رو هم کوچیک نمیکنه. نویسنده میگه اکوسیستم مدلهای دیفیوژنی هنوز از مدلهای autoregressive عقبتره و برای سلفهاست عمومی باید این رو در نظر گرفت.
نکات کلیدی:
- Clover روی Qwen3.6-35B-A3B ساخته شده: 35B پارامتر کل، حدود 3B فعال، 40 لایه و 256 expert با routing از نوع top-8.
- اندازهٔ پیشفرض بلوک 32 توکن و آستانهٔ اطمینان 0.95 هست.
- وزنهای BF16 حدود 69 گیگ حافظهٔ GPU میخوان، جدا از KV cache.
- برای سرو کردن، SGLang خود DiffuSpace پیشنهاد میشه، چون خروجیش ممکنه با Transformers کمی فرق کنه.
- moe_block_coreset_top_p با مقدار 0.9 تعداد expertهای فعال هر بلوک رو کم میکنه، ولی حجم وزنها رو نه.
- لایسنس Apache 2.0 هست و SGLang و llama.cpp از self-speculative decoding پشتیبانی میکنن.




