Qwen2.5:阿里通义千问新一代开源语言模型的突破与应用

4

在人工智能领域日新月异的今天,阿里通义千问的 Qwen2.5 模型以其卓越的性能和广泛的应用前景,成为了业界关注的焦点。它在2024云栖大会上的亮相,无疑将Qwen2.5推向了更广阔的舞台,吸引着众多开发者和研究者的目光。本文将深入剖析 Qwen2.5 的技术特性和优势,并探讨其在实际应用中的潜力。

一、Qwen2.5:全能型AI模型的崭新突破

Qwen2.5 并非单一模型,而是一个全系列的大语言模型、多模态模型、数学模型和代码模型。这一全面的模型体系,为各种应用场景提供了坚实的基础。从自然语言处理中的文本生成、智能问答,到编程领域的代码辅助,再到解决复杂的数学难题,Qwen2.5 都能展现其卓越的能力。该系列包含基础版本、指令跟随版本以及量化版本,总计超过100个模型,充分满足了用户在不同场景下的多样化需求,可谓刷新了行业记录。

Qwen2.5模型系列

二、性能跃升:Qwen2.5的核心优势

  1. 海量预训练数据:Qwen2.5 全系列模型在高达 18 万亿 tokens 的数据上进行了预训练。这一庞大的数据量,超越了 Meta 最新开源的 Llama-3.1 的 15 万亿 tokens,使 Qwen2.5 成为当前训练数据最多的开源模型之一。海量数据赋予了模型更丰富的知识储备和更精准的理解能力。

  2. 整体性能显著提升:相较于 Qwen2,Qwen2.5 的整体性能提升超过 18%。在知识能力方面,其在 MMLU 基准测试等多个测评中均有显著改进。此外,数学能力也得到大幅增强,例如在 Math 基准测试中,Qwen2.5-7b/72b-instruct 的得分均显著高于 Qwen2-7b/72b-instruct。

  3. 指令跟随与结构化数据处理能力增强:Qwen2.5 在指令跟随方面的进步尤为显著,能够更准确地理解和执行用户的指令。同时,对于结构化数据(如表格)的理解和生成结构化输出(特别是 JSON 格式)的能力也得到了显著提升。这使得它在处理复杂数据和需要精确输出的任务中表现更加出色。

  4. 强大的多语言支持:Qwen2.5 支持高达 128k 的上下文长度,并可生成最多 8k 的内容。它能够流畅地响应多样化的系统提示,轻松胜任角色扮演和聊天机器人等任务。此外,它还支持包括中文、英文、法文、西班牙文、俄文、日文、越南文、阿拉伯文等 29 种以上的语言,展现出强大的多语言能力。

Qwen2.5多语言支持

三、专项突破:为特定领域赋能

  1. Qwen2.5-coder:编程领域的专家:Qwen2.5-coder 专门用于编程任务,并在多达 5.5 万亿 tokens 的编程相关数据上进行了训练。无论是在代码生成、调试,还是回答编程相关的问题,它都能提供准确且实用的建议,成为开发者不可或缺的助手。

  2. Qwen2.5-math:数学难题的克星:Qwen2.5-math 支持使用思维链和工具集成推理(TIR)解决中英双语的数学题,是迄今为止最先进的开源数学模型系列。通过在更大规模的高质量数学数据上进行预训练,并结合 Qwen2-math 的技术,其数学问题解决能力得到了极大的提升。

四、广泛的应用场景:Qwen2.5的无限潜力

Qwen2.5 的卓越性能和丰富功能使其在众多领域都拥有广阔的应用前景。

  • 教育领域:Qwen2.5 可以作为智能辅导工具,解答学生在学习过程中遇到的各种问题,辅助他们理解复杂的知识概念。例如,在语文学习中,它可以分析文学作品,生成写作建议;在数学学习中,它可以帮助学生解决难题,讲解解题思路。
  • 企业办公:在企业中,Qwen2.5 可用于构建智能客服,快速准确地回答客户的问题,提高客户满意度。同时,它还能助力自动化办公,如撰写报告、整理数据等,极大地提高工作效率。
  • 科研领域:Qwen2.5 为研究人员提供强大的数据处理和分析支持。在文献综述中,它可以快速梳理相关领域的研究现状;在实验设计阶段,它可以提供创新的思路和方法。
  • 编程开发:Qwen2.5-coder 为开发者提供高效的编程辅助,生成高质量的代码、进行代码优化和调试,加快软件开发的进程。

五、本地部署:Qwen2.5的实践之路

在魔搭社区,开发者可以通过多种方式体验和使用 Qwen2.5 系列模型。可以使用 ModelScope CLI、Python SDK 或者 git clone 的方式下载模型。Qwen2.5 合集的体验链接为:https://modelscope.cn/studios/qwen/Qwen2.5。此外,还有小程序体验,如看图解数学题(Qwen2 - VL + Qwen2.5 - Math)的体验链接为:[https://modelscope.cn/studios/qwen/Qwen2.5 - Math - demo](https://modelscope.cn/studios/qwen/Qwen2.5 - Math - demo)。

1、模型下载

可以使用 modelscope 的 snapshot_download 进行下载模型(提前安装 modelscope : pip install modelscope ),第一个参数为 modelscope 上的模型路径,cache_dir 为模型本地存放地址。

from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct', cache_dir='/root/autodl-tmp', revision='master')

下载完成后,目录结构应如下所示:

模型下载结果

2、加载模型

from modelscope import AutoModelForCausalLM, AutoTokenizer

model_name = "/root/autodl-tmp/Qwen/Qwen2___5-7B-Instruct"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",  # 自动确定 PyTorch 的数据类型
    device_map="auto"  # 自动确定设备映射
)

tokenizer = AutoTokenizer.from_pretrained(model_name)

模型加载过程如下:

模型加载过程

3、定义提示消息

prompt = "Give me a short introduction to artificial intelligence."
messages = [
    {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
    {"role": "user", "content": prompt}
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
text

输出:

'<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n<|im_start|>user\nGive me a short introduction to artificial intelligence.<|im_end|>\n<|im_start|>assistant\n'

4、分词处理

对输入文本进行分词和张量转换。

model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
model_inputs

输出:

分词处理结果

5、生成文本

生成文本,再从生成的标记中去除输入部分的标记。

generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=512
)

generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
generated_ids

输出:

文本生成结果

6、解码返回生成结果

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
response

输出:

'Certainly! Artificial Intelligence (AI) refers to the simulation of human intelligence in machines that are programmed to think, learn, and perform tasks that typically require human cognition. This includes activities such as visual perception, speech recognition, decision-making, and language translation.\n\nKey components of AI include:\n\n1. **Machine Learning**: A subset of AI where systems can automatically learn and improve from experience without being explicitly programmed.\n2. **Deep Learning**: A more advanced form of machine learning that uses neural networks with many layers to model and solve complex problems.\n3. **Natural Language Processing (NLP)**: The ability of computers to understand, interpret, and generate human language.\n4. **Computer Vision**: Enabling machines to interpret and understand the visual world, similar to how humans would.\n5. **Robotics**: Combining AI with robotics to create machines that can perform tasks autonomously or semi-autonomously.\n\nAI has numerous applications across various fields, including healthcare, finance, transportation, entertainment, and more. It continues to evolve rapidly, transforming industries and societies in profound ways.'

完整代码如下:

from modelscope import AutoModelForCausalLM, AutoTokenizer

model_name = "qwen/Qwen2.5 - 7B - Instruct"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",  # 自动确定 PyTorch 的数据类型
    device_map="auto"  # 自动确定设备映射
)

tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "Give me a short introduction to artificial intelligence."
messages = [
    {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
    {"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=512
)

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]

六、展望未来:Qwen2.5的生态与发展

Qwen2.5 的潜力远不止于此,其生态系统也在不断完善和发展。

1、模型微调方面

可以使用 ms-swift 进行微调。作为魔搭社区官方提供的 LLM 工具箱,ms-swift 提供了强大的功能,支持对 Qwen2.5 进行微调。开发者可以利用 ms-swift 对 Qwen2.5 进行精细调整,使其更加贴合特定的应用需求。微调后的模型在推理过程中展现出更高的准确性和适应性,为解决复杂任务提供了有力保障。此外,ms-swift 广泛支持 300 多个大语言模型和 80 多个多模态大模型的微调到部署,为开发者提供了丰富的选择和广阔的创新空间。

2、在模型部署方面

vLLM 部署和 ollama 部署以其便捷性和高效性,为开发者照亮了前行的道路。它们使得 Qwen2.5 能够在各种实际场景中得以顺利应用。无论是在企业的智能化生产中,还是在科研机构的创新研究里,亦或是在日常生活的智能服务中,Qwen2.5 都能借助这些优秀的部署方式发挥出巨大的价值。

总之,Qwen2.5 系列模型的开源为开发者和研究者带来了强大的工具和丰富的资源。它推动着人工智能在各个领域的发展和创新。展望未来,Qwen2.5 将继续凭借其卓越的性能和优势,为我们的生活和工作带来更多的便利和进步。它将成为我们探索智能时代的一位智慧伙伴。

Qwen2.5未来展望