Qwen2.5:13个新模型来袭!开源通用、编码、数学模型全解读,72B超越Llama 405B - 本地安装测试 精华
Qwen 发布了 13 个新模型,这些新模型被称为 Qwen 2.5。这次发布有三种类型的模型:通用任务模型、编码模型和数学模型。通用任务模型有七种尺寸:0.5B 模型、1.5B 模型、3B 模型、7B 模型、14B 模型、32B 模型和 72B 模型。
编码模型有 1.5B 和 7B 尺寸,未来还会推出 32B 版本,但目前尚未提供。与此同时,数学模型有 1.5B、7B 和 72B 尺寸。这些模型都是开源的,并根据 Apache 2.0 许可发布,除了 3B 和 72B 版本。
他们还发布了 Qwen 2.5 Plus 和 Turbo 版本,这些是闭源的,仅通过他们的 API 提供,表现非常好,一次性发布这么多模型真是太酷了。
无论如何,让我们仔细看看这些模型。这些新模型是基于最多 18 万亿个 tokens 训练的,而编码模型则是基于大约 5.5 万亿个与代码相关的数据进行训练的。
除此之外,这些模型还支持 Chain of Thought(思维链)和其他功能,这也很不错。总体上来说,这些模型比 Qwen 2 表现得更好,Qwen 2 已经给人留下了深刻印象,而这些新模型更是进一步提升。
他们声称这些新模型具有更多的知识,并在编码和数学方面有了显著改进。这些新模型在指令遵循、生成长文本、理解结构化数据和生成结构化输出(特别是 JSON 格式)方面取得了显著的进步。
这些新模型支持的上下文长度可以达到 128K tokens,且能生成大约 8K tokens 的输出,这非常不错。这些新模型还保留了对 29 种语言的多语言支持。
此外,期待已久的 Qwen 2.5 编码模型终于来了,上一个编码模型 Qwen 1.5 是大约一年前发布的,而现在他们发布了新版本,该版本基于 5.5 万亿个与代码相关的数据进行训练,使得更小的编码特定模型能够在编码评估基准上与更大的语言模型展开竞争。
现在让我们来看看基准测试结果。
72B 模型在几乎所有基准测试中都超过了之前的 Qwen 2 模型和 Llama 3.1,甚至在一些基准中超过了更高参数的模型,这非常令人印象深刻。
他们还发布了一个 Qwen Plus 模型,
只能通过他们的 API 使用,并且不公开发布,但在与闭源模型的比较中表现非常出色。
除此之外,Qwen 2.5 32B 模型在与其他开源模型(如 Gemma)以及闭源模型 GPT 4o Mini 的比较中也展现了令人印象深刻的表现,这也非常酷。
它仅在 ieval Arena Hard 和 aLine Bench 上稍逊一筹。18B 模型也表现优异,在几乎所有基准测试中都非常接近 GPT 40 Mini,看到这一点真的很酷。
他们还分享了一张图表,显示了模型的 MMLU 分数随着模型尺寸的缩小而提升。
3B 模型现在的 MMLU 分数与之前的 72B 模型相似,看到这一点非常令人惊喜。此外,所有这些模型现在都支持生成最多 8K tokens 的长文本,并且能够生成更好的结构化输出。
现在让我们谈谈 Qwen 2.5 的编码模型。
根据他们的说法,Qwen 2.5 编码模型现在是最好的编码模型之一。7B 编码模型在几乎所有基准测试中都击败了其他模型,包括 Cod Astral 和 Deep Seek V2 Coder Light,而这些模型的尺寸是 7B 模型的三倍,看到这一点真是令人惊叹。
如果我们具体看看基准测试结果,Human Eval 基准测试的表现相当出色,而 MBPP 也展现了相似的结果,其他基准测试也大体相似,除了 BigCode Bench,Deep Seek 的得分略高一些,但 Qwen 也非常接近,指令调优的模型也显示了类似的结果,这很棒。
他们还用多种编程语言对其进行了测试,Qwen 在大多数语言中都表现出色,看到这一点非常惊人。
除此之外,在 CRUXEval
它还在数学推理基准测试中击败了 Deep Seek,在基本功能方面也展现了相似的结果,这同样令人印象深刻。
目前他们的编码模型阵容包括 1.5B 和 7B 模型,但未来他们计划推出 32B 模型,令人期待。
现在我们聊聊数学模型,因为它有一些有趣的功能。数学模型现在有 Chain of Thought(思维链),这意味着它可以像 o1 一样使用逐步推理来更有效地解决复杂问题。
他们建议不要将这一系列模型用于其他任务,因为它是为特定用例进行了微调的。他们已经将其与同类范围内的其他模型进行了测试,通常表现优于其他模型,得益于它的新推理方法。
他们还添加了 Python 解释器支持,有时会生成代码来更好地解决问题并找到答案,这非常酷。
▲ https://github.com/QwenLM/Qwen-Agent
我不是数学天才,但如果你是,你可以尝试一下。
所以这些就是关于这些模型的基本信息。这些模型现在可以在 Ollama 上本地使用,他们还在 Hugging Face 上推出了一个空间供大家试用。
我不会在这篇文章中测试这些模型,因为测试这么多模型文章会很长。我会用一篇单独文章来测试,尽情期待。
huggingface 部署
快速创建一个虚拟环境,我将它命名为 Qwen。
接下来我要安装所有的前置需求,包括 Torch 和 Transformers。
现在我们要做的是安装这个系列中的一个小型模型,它只有 5 亿参数。
它是 Qwen 2.5 的一个因果语言模型(Causal Language Models),参数总数为 5 亿 49 百万,其中 36 百万参数是不参与训练的。
它有 24 层,并且使用了 GQA(分组查询注意力)。它的上下文窗口为 32K,也就是说,它一次可以处理 32K 大小的数据,并且能够一次生成 8000 个 token,即使是这个小模型,真的非常令人印象深刻。
让我启动 Jupyter Notebook,这样我们可以在浏览器环境中下载并测试这个模型。
让我导入相关的库,然后下载这个新模型及其分词器。
你可以看到这个模型只有 988MB,等待下载完成。
模型下载完了,让我们进行一些推理测试。
在第一个测试中,我问了一个经典的问题:“草莓里面有多少个r?” 大多数模型会回答错误。
但是我们来试试看。这个过程非常标准,我们提供提示,指定系统和用户角色,使用分词器将文本转换为 token,生成输出,然后解码并打印响应。
看到了吗?这个小模型竟然回答正确了!
接下来我做了另一个测试,要求模型写 10 个以“美丽”结尾的句子。
好吧,这一次模型失败了,它没有做到。
我们知道它可以一次生成 8000 个 token,所以接下来我让它写一篇关于数据集准备的研究论文,尝试提出一些新的想法,并尽可能详细地描述。这里我设置了 8000 个 token 的生成上限。
好的,论文已经生成了一部分。我检查了我的 GPU 使用情况,显存消耗大约是 1.3GB,表现不错。虽然它没有生成完整的 8000 字论文,但写的内容还是相当不错的。
vLMM部署
建议使用最新版本的 vLLM 来构建兼容 OpenAI 的 API 服务,支持工具使用。以下是使用聊天模型启动服务器的步骤,以 Qwen2.5-7B-Instruct
为例:
vllm serve Qwen/Qwen2.5-7B-Instruct
启动服务器后,你可以通过如下的聊天 API 与模型进行交互:
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": "Tell me something about large language models."}
],
"temperature": 0.7,
"top_p": 0.8,
"repetition_penalty": 1.05,
"max_tokens": 512 }'
Python 客户端示例
使用 OpenAI Python 客户端调用 vLLM API 服务。您可以按照以下步骤配置并发送聊天请求:
from openai import OpenAI
# 设置 OpenAI 的 API 密钥和 API 基地址,使用 vLLM 提供的 API 服务
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
chat_response = client.chat.completions.create(
model="Qwen2.5-7B-Instruct",
messages=[
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": "Tell me something about large language models."},
],
temperature=0.7,
top_p=0.8,
max_tokens=512,
extra_body={
"repetition_penalty": 1.05,
},
)
print("Chat response:", chat_response)
Qwen2.5 博客后面的这个归纳还挺有用的:
本文转载自 AI进修生,作者: Aitrainee