【Qwen2.5部署实战】深入剖析Qwen2.5:新一代开源语言模子的突破与应用_qwe ...

农民  金牌会员 | 2024-12-23 10:28:20 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

目录



  • 引言
  • 一、总体概述
  • 二、性能提拔
  • 三、专项突破
  • 四、应用场景
  • 五、本地部署


    • 1、模子下载
    • 2、加载模子
    • 3、界说提示消息
    • 4、分词处理
    • 5、天生文本
    • 6、解码返回天见效果

  • 结语

引言

在人工智能范畴的快速发展进程中,阿里通义千问的 Qwen2.5 模子以其强盛的性能和广泛的应用潜力,成为了备受关注的焦点。2024 云栖大会上的发布,更是让 Qwen2.5 走进了更多开发者和研究者的视野。本文将深入探讨 Qwen2.5 的各项技能特点和上风。
一、总体概述

Qwen2.5 全系列涵盖了多个尺寸的大语言模子、多模态模子、数学模子和代码模子。这种全面的模子体系,为不同范畴的应用提供了强盛的支持。无论是自然语言处理任务中的文本天生、问答,照旧在编程范畴的代码天生与辅助,亦或是数学题目的求解,Qwen2.5 都能发挥精彩的作用。每个尺寸的模子都有基础版本、指令跟随版本、量化版本,总计上架 100 多个模子,满足了用户在不同场景下的多样化需求,刷新了业界记录。

二、性能提拔


  • 预训练数据上风:Qwen2.5 全系列模子在 18t tokens 数据上进行预训练,预训练数据量大幅度增长到达了 18 万亿 tokens,超过了 meta 最新开源 llama-3.1 的 15 万亿,成为目前训练数据最多的开源模子之一。大量的数据为模子提供了更丰富的知识和更准确的理解本领。
  • 团体性能升级:与 Qwen2 相比,Qwen2.5 的团体性能提拔了 18%以上。在知识本领方面,其在 MMLU 基准测试等多个测评中都有显著改进;数学本领也得到了快速提拔,比方在 Math 基准上,Qwen2.5-7b/72b-instruct 的得分相比 Qwen2-7b/72b-instruct 有了明显提高。
  • 指令跟随与布局化数据处理本领增强:在指令跟随方面,Qwen2.5 进步明显,能够更好地理解和执行用户的指令。同时,对于布局化数据(如表格)的理解和天生布局化输出(尤其是 json)的本领也实现了显著改进。这使得它在处理复杂数据和必要精确输出的任务中表现更加精彩。
  • 强盛的语言支持:Qwen2.5 支持高达 128k 的上下文长度,可天生最多 8k 内容,并且能够丝滑相应多样化的系统提示,实现角色饰演和谈天机器人等任务。它还支持中文、英文、法文、西班牙文、俄文、日文、越南文、阿拉伯文等 29 种以上语言,具有强盛的多语言本领。

三、专项突破


  • Qwen2.5-coder:用于编程的 Qwen2.5-coder 在多达 5.5t tokens 的编程相关数据上进行了训练,为开发者提供了更高效的编程辅助。无论是代码的天生、调试,照旧回答编程相关的题目,它都能给出准确且实用的建议。
  • Qwen2.5-math:Qwen2.5-math 支持使用思维链和工具集成推理(TIR)办理中英双语的数学题,是迄今为止开始进的开源数学模子系列。通过在更大规模的高质量数学数据上进行预训练,并结合 Qwen2-math 的技能,其数学题目办理本领得到了极大的提拔。
四、应用场景

Qwen2.5 的强盛性能和丰富功能使其在浩繁范畴都有着广阔的应用远景。
教诲范畴:可以作为智能辅导工具,为门生解答学习过程中的各种题目,辅助他们理解复杂的知识概念。比方,在语文学习中,Qwen2.5 可以分析文学作品、天生写作建议;在数学学习中,帮助门生办理困难、讲解解题思路。
企业办公:在企业中,Qwen2.5 可用于智能客服,快速准确地回答客户的题目,提高客户满足度。同时,还能助力主动化办公,如撰写陈诉、整理数据等,极大地提高工作效率。
科研范畴:为研究职员提供强盛的数据处理和分析支持。在文献综述中,快速梳理相关范畴的研究近况;在实行计划阶段,提供创新的思路和方法。
编程开发:Qwen2.5-coder 为开发者提供高效的编程辅助,天生高质量的代码、进行代码优化和调试,加快软件开发的进程。
五、本地部署

在魔搭社区,开发者可以通过多种方式体验和使用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。
1、模子下载

可以采用modelscope 的snapshot_download进行下载模子(提前安装modelscope : pip install modelscope ),第一个参数为modelscope上的模子路径,cache_dir为模子本地存放地点
  1. #模型下载
  2. from modelscope import snapshot_download
  3. model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct', cache_dir='/root/autodl-tmp', revision='master')
复制代码
下载完成如下:

2、加载模子

  1. from modelscope import AutoModelForCausalLM, AutoTokenizer
  2. # 指定要加载的模型名称
  3. model_name = "/root/autodl-tmp/Qwen/Qwen2___5-7B-Instruct"
  4. # 加载因果语言模型
  5. model = AutoModelForCausalLM.from_pretrained(
  6.     model_name,
  7.     torch_dtype="auto",  # 自动确定 PyTorch 的数据类型
  8.     device_map="auto"  # 自动确定设备映射
  9. )
  10. # 加载分词器
  11. tokenizer = AutoTokenizer.from_pretrained(model_name)
复制代码
加载如下:

3、界说提示消息

  1. # 设置提示文本
  2. prompt = "Give me a short introduction to artificial intelligence."
  3. # 构建包含系统角色和用户角色的消息列表
  4. messages = [
  5.     {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
  6.     {"role": "user", "content": prompt}
  7. ]
  8. # 将消息列表应用聊天模板进行处理,不进行分词操作且添加生成提示
  9. text = tokenizer.apply_chat_template(
  10.     messages,
  11.     tokenize=False,
  12.     add_generation_prompt=True
  13. )
  14. text
复制代码
输出:
  1. '<|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、分词处理

对输入文本进行分词和张量转换
  1. # 将处理后的文本转换为模型输入张量,并移动到模型所在设备上
  2. model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
  3. model_inputs
复制代码
输出:

5、天生文本

天生文本,再从天生的标记中去除输入部门的标记
  1. # 生成文本,设置最大新生成的标记数为 512
  2. generated_ids = model.generate(
  3.     **model_inputs,
  4.     max_new_tokens=512
  5. )
  6. # 从生成的标记中去除输入部分的标记
  7. generated_ids = [
  8.     output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
  9. ]
  10. generated_ids
复制代码
输出:

6、解码返回天见效果

  1. # 将生成的标记解码为文本,并跳过特殊标记
  2. response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
  3. response
复制代码
输出:
  1. '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.'
复制代码
完备代码如下
  1. from modelscope import AutoModelForCausalLM, AutoTokenizer
  2. # 指定要加载的模型名称
  3. model_name = "qwen/Qwen2.5 - 7B - Instruct"
  4. # 加载因果语言模型
  5. model = AutoModelForCausalLM.from_pretrained(
  6.     model_name,
  7.     torch_dtype="auto",  # 自动确定 PyTorch 的数据类型
  8.     device_map="auto"  # 自动确定设备映射
  9. )
  10. # 加载分词器
  11. tokenizer = AutoTokenizer.from_pretrained(model_name)
  12. # 设置提示文本
  13. prompt = "Give me a short introduction to artificial intelligence."
  14. # 构建包含系统角色和用户角色的消息列表
  15. messages = [
  16.     {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
  17.     {"role": "user", "content": prompt}
  18. ]
  19. # 将消息列表应用聊天模板进行处理,不进行分词操作且添加生成提示
  20. text = tokenizer.apply_chat_template(
  21.     messages,
  22.     tokenize=False,
  23.     add_generation_prompt=True
  24. )
  25. # 将处理后的文本转换为模型输入张量,并移动到模型所在设备上
  26. model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
  27. # 生成文本,设置最大新生成的标记数为 512
  28. generated_ids = model.generate(
  29.     **model_inputs,
  30.     max_new_tokens=512
  31. )
  32. # 从生成的标记中去除输入部分的标记
  33. generated_ids = [
  34.     output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
  35. ]
  36. # 将生成的标记解码为文本,并跳过特殊标记
  37. response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
复制代码
结语

1、模子微调方面
可以使用ms-swift 进行微调。它作为魔搭社区官方提供的 LLM 工具箱,以其强盛的功能支持着对 qwen2.5 的微调操作。通过 ms-swift,开发者能够对 qwen2.5 进行精致调整,使其更加贴合特定的应用需求。而微调后的模子在推理过程中,更是展现出了高度的准确性和适应性,为各种复杂任务的办理提供了有力保障。同时,ms-swift 广泛支持 300 多个大语言模子和 80 多个多模态大模子的微调到部署,为开发者提供了丰富的选择和广阔的创新空间。
2、在模子部署方面
vLLM 部署和 ollama 部署犹如两颗璀璨的明星,为开发者照亮了前行的门路。它们以其便捷性和高效性,使得 Qwen2.5 能够在各种实际场景中得以顺利应用。无论是在企业的智能化生产中,照旧在科研机构的创新研究里,亦或是在日常生活的智能服务中,Qwen2.5 都能借助这些优秀的部署方式发挥出巨大的价值。
总之,Qwen2.5 系列模子的开源犹如一场实时雨,为开发者和研究者带来了强盛的工具和丰富的资源。它如同一股汹涌的海潮,推动着人工智能在各个范畴的发展和创新。我们有来由相信,在未来的日子里,Qwen2.5 将继续凭借其杰出的性能和上风,为我们的生活和工作带来更多的便利和进步。它将如同一位智慧的同伴,与我们携手共进,开创更加美好的未来。
怎样学习大模子 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提拔的。
但是详细到个人,只能说是:
“开始掌握AI的人,将会比力晚掌握AI的人有竞争上风”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,引导过不少偕行子弟。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给各人,也可以通过我们的本领和经验解答各人在人工智能学习中的很多困惑,所以在工作繁忙的环境下照旧坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋侪无法获得精确的资料得到学习提拔,故此将并将重要的AI大模子资料包括AI大模子入门学习思维导图、佳构AI大模子学习册本手册、视频教程、实战学习等录播视频免费分享出来。点击下方蓝色字 即可免费领取↓↓↓
**读者福利 |**

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表