阿里云发布并开源全新的推理模型通义千问QwQ-32B。通过大规模强化学习,千问QwQ-32B在数学、代码及通用能力上实现质的飞跃,整体性能比肩DeepSeek-R1。在测试数学能力的AIME24评测集上,以及评估代码能力的LiveCodeBench中,千问QwQ-32B表现与DeepSeek-R1相当,远胜于o1-mini及相同尺寸的R1蒸馏模型;
在保持强劲性能的同时,千问QwQ-32B还大幅降低了部署使用成本,在消费级显卡上也能实现本地部署。此次,阿里云采用宽松的Apache2.0协议,将千问QwQ-32B模型向全球开源,所有人都可免费下载及商用。同时,用户将可通过通义APP免费体验最新的千问QwQ-32B模型
扩展强化学习 (RL) 有潜力提升模型性能,超越传统的预训练和后训练方法。最近的研究表明,RL 可以显著提高模型的推理能力。例如,DeepSeek R1 通过整合冷启动数据和多阶段训练实现了最先进的性能,实现了深度思考和复杂推理。
研究探索了强化学习 (RL) 的可扩展性及其对增强大型语言模型智能的影响。我们很高兴推出 QwQ-32B,这是一个拥有 320 亿个参数的模型,其性能可与拥有 6710 亿个参数(其中 370 亿个已激活)的 DeepSeek-R1 相媲美。这一非凡成果凸显了 RL 应用于基于广泛世界知识进行预训练的稳健基础模型时的有效性。此外将与代理相关的功能集成到推理模型中,使其能够在利用工具的同时进行批判性思考,并根据环境反馈调整其推理。这些进步不仅展示了 RL 的变革潜力,而且为追求通用人工智能的进一步创新铺平了道路。
相关链接
开源地址:https://modelscope.cn/models/Qwen/QwQ-32Bhttps://huggingface.co/Qwen/QwQ-32B 在线体验:https://chat.qwen.ai https://huggingface.co/spaces/Qwen/QwQ-32B-Demo
表现
QwQ-32B 经过一系列基准测试,旨在评估其数学推理、编码能力和一般问题解决能力。以下结果突出了 QwQ-32B 与其他领先模型(包括 DeepSeek-R1-Distilled-Qwen-32B、DeepSeek-R1-Distilled-Llama-70B、o1-mini 和原始 DeepSeek-R1)相比的性能。
强化学习
我们从冷启动检查点开始,并实施了由基于结果的奖励驱动的强化学习 (RL) 扩展方法。在初始阶段,我们专门针对数学和编码任务扩展 RL。我们没有依赖传统的奖励模型,而是利用数学问题的准确性验证器来确保最终解决方案的正确性,并使用代码执行服务器来评估生成的代码是否成功通过了预定义的测试用例。随着训练的进展,两个领域的性能都显示出持续的改进。在第一阶段之后,我们为一般功能添加了另一个 RL 阶段。它使用来自一般奖励模型和一些基于规则的验证器的奖励进行训练。我们发现,这个阶段的 RL 训练只需少量步骤就可以提高其他一般功能的性能,例如指令遵循、与人类偏好保持一致以及代理性能,而不会显着降低数学和编码的性能。
使用QwQ-32B
以下是简短的示例,演示如何通过 Hugging Face Transformers 和阿里云 DashScope API 使用 QwQ-32B。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/QwQ-32B"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "How many r's are in the word \"strawberry\""
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
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
from openai import OpenAI
import os
# Initialize OpenAI client
client = OpenAI(
# If the environment variable is not configured, replace with your API Key: api_key="sk-xxx"
# How to get an API Key:https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = ""
content = ""
is_answering = False
completion = client.chat.completions.create(
model="qwq-32b",
messages=[
{"role": "user", "content": "Which is larger, 9.9 or 9.11?"}
],
stream=True,
# Uncomment the following line to return token usage in the last chunk
# stream_options={
# "include_usage": True
# }
)
print("\n" + "=" * 20 + "reasoning content" + "=" * 20 + "\n")
for chunk in completion:
# If chunk.choices is empty, print usage
if not chunk.choices:
print("\nUsage:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# Print reasoning content
if hasattr(delta, 'reasoning_content') and delta.reasoning_content is not None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "content" + "=" * 20 + "\n")
is_answering = True
# Print content
print(delta.content, end='', flush=True)
content += delta.content
未来工作
这标志着 Qwen 在扩展强化学习 (RL) 以增强推理能力方面迈出了第一步。通过这一历程,我们不仅见证了扩展强化学习的巨大潜力,还认识到了预训练语言模型中尚未开发的可能性。在我们致力于开发下一代 Qwen 的过程中,我们相信,将更强大的基础模型与由扩展计算资源驱动的强化学习相结合,将推动我们更接近实现通用人工智能 (AGI)。此外,我们正在积极探索将代理与强化学习相结合,以实现长远推理,旨在通过推理时间扩展来解锁更高的智能。
感谢你看到这里,也欢迎点击关注下方公众号并添加公众号小助手加入官方读者交流群,一个有趣有AI的AIGC公众号:关注AI、深度学习、计算机视觉、AIGC、Stable Diffusion、Sora等相关技术,欢迎一起交流学习💗~
没有评论:
发表评论