打造一个有温度、有趣味、专业的全栈式AI&AIGC交流社区,
用心写好每一篇文章!
“ 毋庸置疑,OpenAI系列的o1、o3系列大模型确实在某些方面具有碾压式的优势,但是我想问个问题:所有公司的所有场景都需要用到这么复杂、成本这么高的模型吗?答案肯定是No! 除此之外,OpenAI等国外的主流大语言模型在中文理解与回答方面的效果并不尽人意,我们需要花费的额外的微调成本。随着OpenAI的大模型的费用越来越高,肯定会有一部分人开始拥抱开源模型,而Llama与Qwen绝对是开源大模型界的第一梯队。阿里开源的Qwen系列大模型一度在国内受到了众多朋友的好评,Qwen2.5系列更是将其推向了顶峰。本文小编就来帮你好好解读一下Qwen2.5里面都做了哪些优化?这些干货对很多需要预训练或者微调模型的朋友大有裨益。”
HF链接-https://huggingface.co/Qwen
代码链接-https://github.com/QwenLM/Qwen2.5
论文链接-https://arxiv.org/pdf/2412.15115
01-Qwen2.5背景简介
易于使用的仅解码器稠密语言模型,提供 0.5B 、1.5B 、3B 、7B 、14B 、32B 和 72B 共7种参数规模的模型,并且有基模型和指令微调模型两种变体(其中“ B ”表示“十亿”, 72B 即为 720 亿);
利用最新的数据集进行预训练,包含多达 18T tokens (其中“ T ”表示“万亿”, 18T 即为 18 万亿);
在指令遵循、生成长文本(超过 8K tokens )、理解结构化数据(例如,表格)以及生成结构化输出特别是 JSON 方面有了显著改进;
更加适应多样化的系统提示,增强了角色扮演的实现和聊天机器人的背景设置。
支持最多达 128K tokens 的上下文长度,并能生成多达 8K tokens 的文本。
3-Qwen2.5模型应用场景
03.01-快速开发业务代码
05-Qwen2.5模型实现细节
05.01-预训练阶段
首先,作者通过复杂的过滤和评分机制,结合数据混合策略,精心策划了一个高质量的训练数据。
其次,作者对超参数优化进行了广泛的研究,从而有效地训练各种尺度的模型。
最后,作者结合了专门的长上下文预训练,从而提高模型处理和理解扩展序列的能力。
更好的数据混合机制--大量的分析结果表明:电子商务、社交媒体和娱乐等领域在网络规模的数据中明显过高;相反,技术、科学和学术研究等领域虽然包含高质量的信息。通过对代表性过高的领域进行战略性下采样和对高价值领域进行上采样,从而确保了一个更平衡、信息丰富的训练数据集,更好地服务于我们模型的学习目标。
在线强化学习:在线强化学习阶段利用奖励模型的能力来检测输出质量的细微差别,包括真实性、有用性、简洁性、相关性、无害性和去偏见性。它使模型能够生成精确、连贯和结构良好的响应,同时保持安全性和可读性。因此,该模型的输出始终符合人类质量标准和期望。
07-Qwen2.5模型上手指南
07.01-直接使用HF/魔塔Demo
# 加载python三方库
from transformers import AutoModelForCausalLM, AutoTokenizer
# 加载预训练模型
model_name = "Qwen/Qwen2.5-7B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# 应用模版,对输入进行Token化
prompt = "Give me a short introduction to large language model."
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]
08-近期线下交流活动
关注我,AI热点早知道,AI算法早精通,AI产品早上线!
禁止私自转载,需要转载请先征求我的同意!
欢迎你的加入,让我们一起交流、讨论与成长!