یک مدل زبان جدید با اسم Qwen3-30B-A3B-Thinking-2507 معرفی شده که به نظر میرسه یک مدل سایز متوسطه که میتونه «فکر» کنه. این مدل به طور خاص برای عملکرد بهتر توی کارهای استدلالی مثل ریاضی، علوم و کدنویسی طراحی شده. همینطور گفته شده که توی استفاده از ابزارها خوب عمل میکنه و با مدلهای بزرگتر هم رقابت میکنه. یکی از ویژگیهای اصلی اون، پشتیبانی از یک پنجره زمینه ۲۵۶ هزار توکنی به صورت پیشفرضه که حتی میتونه تا یک میلیون توکن هم افزایش پیدا کنه.
در سه ماه گذشته، تیم توسعه دهنده روی افزایش توانایی «فکر کردن» مدل Qwen3-30B-A3B کار کرده تا هم کیفیت و هم عمق استدلال اون رو بهتر کنه. نتیجه این تلاشها، معرفی مدل جدیدی با اسم Qwen3-30B-A3B-Thinking-2507 بوده. این نسخه جدید چند تا بهبود کلیدی داشته که در ادامه بهشون میپردازیم.
بهبودهای اصلی در نسخه جدید
اولین و مهمترین بهبود، عملکرد خیلی بهتر در کارهایی هست که نیاز به استدلال دارن. این کارها شامل استدلال منطقی، ریاضیات، علوم، کدنویسی و بنچمارکهای آکادمیک میشه؛ یعنی همون کارهایی که معمولا به تخصص انسانی نیاز دارن.
دومین مورد، بهتر شدن تواناییهای عمومی مدله. چیزهایی مثل دنبال کردن دستورات، استفاده از ابزار، تولید متن و هماهنگ شدن با چیزهایی که انسانها ترجیح میدن، به شکل قابل توجهی بهتر شده.
و سومین بهبود، افزایش توانایی درک زمینه طولانی تا ۲۵۶ هزار توکن هست. این یعنی مدل میتونه حجم خیلی بیشتری از اطلاعات رو توی حافظه کوتاهمدت خودش نگه داره و پردازش کنه.
یک نکته مهم هم وجود داره: این نسخه طول «فکر کردن» بیشتری داره. برای همین، استفاده از اون توی کارهای استدلالی خیلی پیچیده به شدت توصیه میشه.
ماجرای حالت «تفکر ترکیبی» و تغییر مسیر
یکی از ویژگیهای اصلی خانواده مدلهای Qwen 3 وقتی که توی ماه آوریل معرفی شدن، این بود که میشد بین حالتهای «تفکر» و «بدون تفکر» جابجا شد. این قابلیت با اینکه راحت بود، اما به نظر میرسه که به قیمت کیفیت پایینتر و عملکرد ضعیفتر توی بنچمارکها تموم شده.
تیم Qwen اخیرا در یک پست در شبکه اجتماعی X توضیح داده: «بعد از صحبت با جامعه کاربری و فکر کردن در موردش، ما تصمیم گرفتیم که استفاده از حالت تفکر ترکیبی رو متوقف کنیم. به جاش، ما مدلهای Instruct (دستورپذیر) و Thinking (متفکر) رو به صورت جداگانه آموزش میدیم تا بتونیم به بهترین کیفیت ممکن برسیم». اونها اضافه کردن: «ما باور داریم که ارائه عملکرد با کیفیتتر در حال حاضر مهمتر از یکپارچهسازی هست».
برای حل این مشکل، تیم Qwen شروع به عرضه نسخههای جداگانه دستورپذیر و متفکر از مدلهاش کرده. گفته میشه این مدلهای جدید پیشرفتهای بزرگی در زمینه استدلال، حل مسئله، ریاضیات، کدنویسی و دانش عمومی داشتن. این بهبود به خصوص برای مدلهای دستورپذیر (غیر متفکر) خیلی چشمگیر بوده. مثلا در بنچمارک ریاضی AIME25، مدل Qwen3-235B-A22B-Instruct-2507 تونسته یک برتری ۲.۸ برابری نسبت به نسخه ماه آوریل داشته باشه. نسخه بهروز شده مدل ۳۰ میلیارد پارامتری (که از نوع ترکیب متخصصها یا MoE هست) هم پیشرفتهای مشابهی داشته.
جالبه که افزایش عملکرد برای مدلهای جدید متفکر به این اندازه زیاد نبوده. بر اساس گفتههای علیبابا، مدل Qwen3-235B-A22B-Thinking توی بنچمارکهای سنگین ریاضی AIME25 و Humanity’s Last Exam به ترتیب بین ۱۳ درصد تا ۵۴ درصد بهتر عمل کرده. پس با اینکه مدلهای متفکر جداگانه از نسخه اصلی Qwen 3 بهتر عمل میکنن، این بهبود به اندازه نسخههای غیر متفکر چشمگیر نیست.
یک نکتهای که همیشه گفته میشه اینه که وقتی به بنچمارکهای ارائه شده توسط خود شرکت سازنده نگاه میکنیم، بهتره که این ادعاهای عملکرد رو با کمی احتیاط در نظر بگیریم. اگه کسی قصد داره از این مدلها توی محیطهای کاری واقعی استفاده کنه، پیشنهاد میشه که اونها رو بر اساس نیازهای خاص خودش ارزیابی کنه.
افزایش حافظه و ظرفیت تفکر
علاوه بر هوشمندتر شدن، نسخههایی که با کد ۲۵۰۷ مشخص شدن، پنجره زمینه مدل رو هم افزایش دادن. پنجره زمینه رو میشه مثل حافظه کوتاهمدت مدل در نظر گرفت. این مقدار از ۳۲ هزار توکن به ۲۵۶ هزار توکن رسیده.
داشتن پنجره زمینه بزرگ به خصوص برای مدلهای «متفکر» خیلی مهمه. این مدلها ممکنه صدها یا حتی هزاران کلمه متن تولید کنن تا به جواب نهایی برسن. یک پنجره زمینه بزرگتر نه تنها به مدل اجازه میده که اسناد، دستورات یا مکالمات بزرگتری رو دنبال کنه، بلکه به این معنیه که مدل میتونه برای مدت طولانیتری «فکر» کنه. علیبابا هم بودجه فکر کردن مدلهاش رو افزایش داده تا از این قابلیت به طور کامل استفاده کنه و به کاربرها توصیه کرده که اگه حافظه کافی دارن، طول زمینه رو روی حداقل ۱۲۸ هزار توکن تنظیم کنن.
مشخصات فنی و ویژگیهای Qwen3-30B-A3B-Thinking-2507
این مدل ویژگیهای فنی مشخصی داره که در ادامه به صورت لیست میبینیم:
- نوع: مدلهای زبان علی (Causal Language Models)
- مرحله آموزش: پیشآموزش و پسآموزش (Pretraining & Post-training)
- تعداد پارامترها: در کل ۳۰.۵ میلیارد پارامتر داره که ۳.۳ میلیارد از اونها در هر لحظه فعال هستن.
- تعداد پارامترهای غیر امبدینگ: ۲۹.۹ میلیارد.
- تعداد لایهها: ۴۸ لایه.
- تعداد هدهای توجه (GQA): ۳۲ هد برای Q و ۴ هد برای KV.
- تعداد متخصصها: ۱۲۸ متخصص.
- تعداد متخصصهای فعال: ۸ متخصص.
- طول زمینه (Context Length): به صورت ذاتی ۲۶۲,۱۴۴ توکن.
یک نکته خیلی مهم اینه که این مدل فقط از حالت تفکر پشتیبانی میکنه. در عین حال، دیگه نیازی نیست که موقع استفاده از مدل، گزینه enable_thinking=True
رو مشخص کنید. علاوه بر این، برای اینکه مدل حتما فکر کنه، قالب چت پیشفرض به صورت خودکار تگ <think>
رو اضافه میکنه. برای همین، اگه توی خروجی مدل فقط تگ پایانی </think>
رو دیدید و تگ شروع <think>
وجود نداشت، این موضوع کاملا طبیعیه.
برای جزئیات بیشتر، از جمله ارزیابی بنچمارکها، نیازمندیهای سختافزاری و عملکرد استنتاجی، به بلاگ، گیتهاب و مستندات این پروژه میشه مراجعه کرد.
عملکرد در بنچمارکها
برای اینکه ببینیم این مدلها چطور عمل میکنن، معمولا اونها رو با آزمونهای استاندارد یا همون بنچمارکها میسنجن. در جدول زیر، عملکرد مدل Qwen3-30B-A3B-Thinking-2507 با چند مدل دیگه مقایسه شده.
Qwen3-30B-A3B-Thinking-2507 | Qwen3-30B-A3B Thinking | Qwen3-235B-A22B Thinking | Gemini2.5-Flash-Thinking | |
---|---|---|---|---|
دانش (Knowledge) | ||||
MMLU-Pro | ۸۰.۹ | ۷۸.۵ | ۸۲.۸ | ۸۱.۹ |
MMLU-Redux | ۹۱.۴ | ۸۹.۵ | ۹۲.۷ | ۹۲.۱ |
GPQA | ۷۳.۴ | ۶۵.۸ | ۷۱.۱ | ۸۲.۸ |
SuperGPQA | ۵۶.۸ | ۵۱.۸ | ۶۰.۷ | ۵۷.۸ |
استدلال (Reasoning) | ||||
AIME25 | ۸۵.۰ | ۷۰.۹ | ۸۱.۵ | ۷۲.۰ |
HMMT25 | ۷۱.۴ | ۴۹.۸ | ۶۲.۵ | ۶۴.۲ |
LiveBench 20241125 | ۷۶.۸ | ۷۴.۳ | ۷۷.۱ | ۷۴.۳ |
کدنویسی (Coding) | ||||
LiveCodeBench v6 (25.02-25.05) | ۶۶.۰ | ۵۷.۴ | ۵۵.۷ | ۶۱.۲ |
CFEval | ۲۰۴۴ | ۱۹۴۰ | ۲۰۵۶ | ۱۹۹۵ |
OJBench | ۲۵.۱ | ۲۰.۷ | ۲۵.۶ | ۲۳.۵ |
همراستایی (Alignment) | ||||
IFEval | ۸۸.۹ | ۸۶.۵ | ۸۳.۴ | ۸۹.۸ |
Arena-Hard v2$ | ۵۶.۰ | ۳۶.۳ | ۶۱.۵ | ۵۶.۷ |
Creative Writing v3 | ۸۴.۴ | ۷۹.۱ | ۸۴.۶ | ۸۵.۰ |
WritingBench | ۸۵.۰ | ۷۷.۰ | ۸۰.۳ | ۸۳.۹ |
عامل (Agent) | ||||
BFCL-v3 | ۷۲.۴ | ۶۹.۱ | ۷۰.۸ | ۶۸.۶ |
TAU1-Retail | ۶۷.۸ | ۶۱.۷ | ۵۴.۸ | ۶۵.۲ |
TAU1-Airline | ۴۸.۰ | ۳۲.۰ | ۲۶.۰ | ۵۴.۰ |
TAU2-Retail | ۵۸.۸ | ۳۴.۲ | ۴۰.۴ | ۶۶.۷ |
TAU2-Airline | ۵۸.۰ | ۳۶.۰ | ۳۰.۰ | ۵۲.۰ |
TAU2-Telecom | ۲۶.۳ | ۲۲.۸ | ۲۱.۹ | ۳۱.۶ |
چندزبانگی (Multilingualism) | ||||
MultiIF | ۷۶.۴ | ۷۲.۲ | ۷۱.۹ | ۷۴.۴ |
MMLU-ProX | ۷۶.۴ | ۷۳.۱ | ۸۰.۰ | ۸۰.۲ |
INCLUDE | ۷۴.۴ | ۷۱.۹ | ۷۸.۷ | ۸۳.۹ |
PolyMATH | ۵۲.۶ | ۴۶.۱ | ۵۴.۷ | ۴۹.۸ |
توضیحات جدول:
- $: برای اینکه نتایج قابل تکرار باشن، نرخ برد در بنچمارک Arena-Hard v2 با استفاده از مدل GPT-4.1 ارزیابی شده.
- &: برای کارهای خیلی چالشی (شامل PolyMATH و همه کارهای استدلالی و کدنویسی)، از طول خروجی ۸۱,۹۲۰ توکن استفاده شده. برای بقیه کارها، طول خروجی روی ۳۲,۷۶۸ تنظیم شده.
راهنمای استفاده و پیادهسازی
برای کار با این مدل، به چند نکته فنی باید توجه کرد.
نصب و پیشنیازها
کد Qwen3-MoE در آخرین نسخه کتابخانه transformers
هاگینگ فیس قرار داده شده و توصیه میشه که از آخرین نسخه transformers
استفاده کنید. اگه از نسخههای قدیمیتر (قبل از ۴.۵۱.۰) استفاده کنید، با خطای KeyError: 'qwen3_moe'
مواجه میشید.
نمونه کد برای تولید محتوا
در ادامه یک قطعه کد پایتون برای نشون دادن نحوه استفاده از مدل برای تولید محتوا بر اساس ورودی داده شده، آورده شده.
from transformers import AutoModelForCausalLM, AutoTokenizer
# اسم مدل در هاگینگ فیس
model_name = "Qwen/Qwen3-30B-A3B-Thinking-2507"
# بارگذاری توکنایزر و مدل
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# آماده کردن ورودی مدل
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# انجام تکمیل متن
generated_ids = model.generate(
**model_inputs,
max_new_tokens=32768
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# جدا کردن محتوای تفکر
try:
# rindex برای پیدا کردن ۱۵۱۶۶۸ (</think>)
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
index = 0
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
# چاپ محتوای فکر و محتوای نهایی
print("thinking content:", thinking_content) # تگ <think> در ابتدای این بخش وجود نداره
print("content:", content)
این کد به سادگی مدل و توکنایزر رو از هاگینگ فیس دانلود میکنه، یک ورودی آماده میکنه، از مدل میخواد که جواب رو تولید کنه و در نهایت بخش «فکر» و بخش «پاسخ نهایی» رو از هم جدا و چاپ میکنه.
استقرار و دیپلوی مدل
برای اینکه مدل رو به صورت یک سرویس یا API دربیارید، میتونید از ابزارهایی مثل sglang
(نسخه ۰.۴.۶.post1 یا بالاتر) یا vllm
(نسخه ۰.۸.۵ یا بالاتر) استفاده کنید. در زیر دستورات لازم برای این کار اومده:
- با استفاده از SGLang:
python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B-Thinking-2507 --context-length 262144 --reasoning-parser deepseek-r1
- با استفاده از vLLM:
vllm serve Qwen/Qwen3-30B-A3B-Thinking-2507 --max-model-len 262144 --enable-reasoning --reasoning-parser deepseek_r1
یک نکته مهم: اگه موقع اجرا با مشکل کمبود حافظه (OOM) مواجه شدید، میتونید طول زمینه رو به یک مقدار کمتر کاهش بدید. اما از اونجایی که مدل ممکنه برای استدلال کردن به دنبالههای توکن طولانیتری نیاز داشته باشه، شدیدا توصیه میشه که در صورت امکان از طول زمینه بیشتر از ۱۳۱,۰۷۲ استفاده کنید.
برای استفاده محلی روی کامپیوتر شخصی، برنامههایی مثل Ollama، LMStudio، MLX-LM، llama.cpp و KTransformers هم از Qwen3 پشتیبانی میکنن.
استفاده از قابلیتهای پیشرفته: فراخوانی ابزار (Tool Calling)
مدلهای Qwen3 در قابلیت فراخوانی ابزار خیلی خوب عمل میکنن. پیشنهاد میشه که برای استفاده بهینه از این توانایی، از Qwen-Agent استفاده بشه. Qwen-Agent قالبهای فراخوانی ابزار و پارسرهای لازم رو به صورت داخلی封装 کرده و پیچیدگی کدنویسی رو خیلی کم میکنه.
برای تعریف ابزارهای موجود، میشه از فایل کانفیگ MCP استفاده کرد، از ابزارهای داخلی خود Qwen-Agent بهره برد، یا ابزارهای دیگه رو به صورت دستی یکپارچه کرد.
در ادامه یک نمونه کد برای این کار آورده شده:
from qwen_agent.agents import Assistant
# تعریف مدل زبان بزرگ (LLM)
# استفاده از Alibaba Cloud Model Studio
llm_cfg = {
'model': 'qwen3-30b-a3b-thinking-2507',
'model_type': 'qwen_dashscope',
}
# برای استفاده از یک API سازگار با OpenAI. توصیه میشه که قابلیتهای استدلال و
# پارس کردن فراخوانی ابزار در فریمورکهای دیپلوی غیرفعال بشن و اجازه داده بشه
# که Qwen-Agent این کارها رو به صورت خودکار انجام بده.
#
# llm_cfg = {
# 'model': 'Qwen3-30B-A3B-Thinking-2507',
# 'model_server': 'http://localhost:8000/v1',
# 'api_key': 'EMPTY',
# 'generate_cfg': {
# 'thought_in_content': True,
# },
# }
# تعریف ابزارها
tools = [
{'mcpServers': { # میشه فایل کانفیگ MCP رو مشخص کرد
'time': {
'command': 'uvx',
'args': ['mcp-server-time', '--local-timezone=Asia/Shanghai']
},
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}},
'code_interpreter', # ابزارهای داخلی
]
# تعریف عامل (Agent)
bot = Assistant(llm=llm_cfg, function_list=tools)
# تولید استریم
messages = [{'role': 'user', 'content': 'https://qwenlm.github.io/blog/ Introduce the latest developments of Qwen'}]
for responses in bot.run(messages=messages):
pass
print(responses)
تنظیمات پیشنهادی برای بهترین عملکرد
برای اینکه بهترین نتیجه رو از مدل بگیرید، چند تا تنظیمات پیشنهاد شده:
- پارامترهای نمونهبرداری (Sampling Parameters):
- پیشنهاد میشه از
Temperature=0.6
,TopP=0.95
,TopK=20
, وMinP=0
استفاده بشه. - برای فریمورکهایی که پشتیبانی میکنن، میشه پارامتر
presence_penalty
رو بین ۰ تا ۲ تنظیم کرد تا از تکرارهای بیپایان جلوگیری بشه. البته استفاده از مقدار بالاتر ممکنه گاهی باعث ترکیب زبانها و کاهش جزئی عملکرد مدل بشه.
- پیشنهاد میشه از
- طول خروجی مناسب (Adequate Output Length):
- برای بیشتر سوالات، پیشنهاد میشه از طول خروجی ۳۲,۷۶۸ توکن استفاده بشه.
- برای بنچمارک گرفتن روی مسائل خیلی پیچیده، مثل مسائل مسابقات ریاضی و برنامهنویسی، پیشنهاد میشه که حداکثر طول خروجی روی ۸۱,۹۲۰ توکن تنظیم بشه. این کار به مدل فضای کافی میده تا پاسخهای دقیق و جامعی تولید کنه و در نتیجه عملکرد کلیش بهتر بشه.
- استاندارد کردن فرمت خروجی (Standardize Output Format):
- توصیه میشه که موقع بنچمارک گرفتن، از دستورات مشخصی برای استاندارد کردن خروجی مدل استفاده کنید.
- برای مسائل ریاضی: این جمله رو به دستور اضافه کنید: «Please reason step by step, and put your final answer within \boxed{}.»
- برای سوالات چندگزینهای: ساختار JSON زیر رو به دستور اضافه کنید تا پاسخها استاندارد بشن: «Please show your choice in the `answer` field with only the choice letter, e.g.,”answer”: “C”.»
- عدم وجود محتوای تفکر در تاریخچه (No Thinking Content in History):
- در مکالمات چندمرحلهای، خروجی مدل که به عنوان تاریخچه به ورودی بعدی داده میشه، باید فقط شامل بخش پاسخ نهایی باشه و نیازی نیست که محتوای تفکر رو هم شامل بشه. این موضوع در قالب چت Jinja2 ارائه شده پیادهسازی شده. اما برای فریمورکهایی که مستقیما از قالب چت Jinja2 استفاده نمیکنن، این وظیفه توسعهدهندههاست که مطمئن بشن این بهترین روش رعایت میشه.
آینده مدلهای Qwen و برنامهها
تیم Qwen اعلام کرده که در حال حاضر مدلهای ۲۳۵ و ۳۰ میلیارد پارامتری خودش رو با نسخههای جداگانه دستورپذیر و متفکر (که با کد تاریخ ۲۵۰۷ مشخص میشن) عرضه کرده و قصد داره در روزهای آینده نسخههای بهروز شده بقیه مدلهای Qwen3 رو هم منتشر کنه.
یکی از توسعهدهندگان مدل در تیم Qwen به اسم Junyang Lin، به یک نسخه مخصوص کدنویسی از مدل ۳۰ میلیارد پارامتری MoE اشاره کرده که ممکنه به زودی عرضه بشه.
مثل نسخههای قبلی، این مدلها هم در دو نوع داده BF16 و کوانتایز شده FP8 در دسترس قرار میگیرن. انتظار میره که به زودی نسخههای کوانتایز شده ۴ بیتی AWQ هم توسط Qwen ارائه بشه. این نسخههای کمحجمتر به کاربرها اجازه میدن مدل رو روی سختافزارهای ضعیفتر هم اجرا کنن.
با اینکه علیبابا از ایده مدلهای با تفکر ترکیبی (مثل نسخه اصلی Qwen3) عقبنشینی کرده، تیم توسعهدهنده به طور کامل این ایده رو کنار نذاشته. اونها نوشتن: «ما همچنان به تحقیقات خودمون روی حالت تفکر ترکیبی ادامه میدیم». این جمله نشون میده که این قابلیت ممکنه در مدلهای آینده، بعد از اینکه مشکلات کیفیتش حل شد، دوباره برگرده.
@misc{qwen3technicalreport,
title={Qwen3 Technical Report},
author={Qwen Team},
year={2025},
eprint={2505.09388},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2505.09388},
}
دیدگاهتان را بنویسید