12.10更新:Qwen技术报告核心解读

Baichuan

Baichuan 2: Open Large-scale Language Models

数据处理:数据频率和质量,使用聚类和去重方法,基于LSH和dense embedding方法tokenizer:更好的压缩率,对数字的每一位分开,添加空格token位置编码:7B Rope,13B ALiBi使用了SwiGLU激活函数,因为SwiGLU是一个双线性层,多引入一个门控矩阵,参数量 更多,hidden_size从4减少到了8/3使用了更高效的基于xFormers的attention实现使用RMSNorm,对transformer的block输入进行了Layer Norm使用了AdamW优化器,为了稳定训练和提高模型性能,对输出embedding进行了归一化 即对header进行了归一化;训练中logits值偏大,在推理时,对重复惩罚参数比较 敏感,因此加入了max-z loss使用了有监督微调和RLHF Baichuan v1 7b

https://github.com/baichuan-inc/Baichuan-7B数据:开源的中英文数据和互联网数据,使用了启发式的数据过滤,然后使用了去重和 质量打分策略来进一步筛选数据分词:重新训练了BPE模型,更好的压缩率;对数字的每一位分开,避免出现数字不一 致问题;支持UTF-8 character的byte编码,对未知词全覆盖模型:同LLama,Rope位置编码,SwiGLU,基于RMSNorm的Pre-Norm Baichuan v1 13b

使用ALiBi位置编码,更多的训练数据

ChatGLM

ChatGLM:千亿基座的对话模型开启内测⸺对应单卡版本开源 GLM

GLM: General Language Model Pretraining with Autoregressive Blank Infilling使用了blank filling的自回归方式来统一所有任务目标。其通过mask spans来自回归的预测被mask的span,非span区域是互见的,span之间的可见性取决于span的随机排列顺序为了获得更好的生成性能,通过mask更长span,以及对整句进行mask使用的2D位置编码:被mask的序列绝对位置; 非span区域位置为0,span内部位置从1开始编码https://github.com/THUDM/GLM https://github.com/THUDM/GLM-130B https://github.com/THUDM/ChatGLM-6B

1T token; 监督微调、反馈自助、人类反馈强化学习Rope; Layer Norm; GLUE激活函数; prefix模型的mask方式使用2d的position_id和block_position_id:block_position_id是把input的pos_id全部置为0;计算attention时需要把query和key chunk成2块 https://github.com/THUDM/ChatGLM2-6B

1.4T; 人类偏好对; 使用GLM的混合目标函数更长的上下文;使用multi-query attentionRope; preNorm; RMSNorm; SwiGLU激活函数(与LLama相同) https://github.com/THUDM/ChatGLM3

更多样的训练数据、更充分的训练步数和更合理的训练策略;采用了全新设计的Prompt格式,支持工具调用、代码执行、Agent模型配置与chatglm2相同 其他开源项目

https://github.com/lich99/ChatGLM-finetune-LoRA

基于alpaca数据集,使用Lora技术微调ChatGLM-6B https://github.com/mymusise/ChatGLM-Tuning

基于alpaca数据集,使用Lora技术微调ChatGLM-6B https://github.com/liangwq/Chatglm_lora_multi-gpu

支持多机多卡训练 https://huggingface.co/silver/chatglm-6b-slim

是在ChatGLM-6B的基础上通过裁剪词表构建的。因为ChatGLM-6B使用了icetk,在其词表中,前20000个token是预留给图片的 https://github.com/MediaBrain-SJTU/MedicalGPT-zh

一个基于ChatGLM的在高质量指令数据集微调的中文医疗对话语言模型 https://github.com/hiyouga/ChatGLM-Efficient-Tuning

LLaMA

LLaMA: Open and Efficient Foundation Language Models

数据处理:质量过滤,重复过滤共1.4T tokens,除了高质量的book和wikipedia数据训练两个epoch,其他数据都训练1个epoch模型:Rope; preNorm; RMSNorm; SwiGLU激活函数 Llama 2: Open Foundation and Fine-Tuned Chat Models

相比llama1,数据增加40%,长度增加一倍,使用了group-query attentionllama2-chat是在llama2基础版本的基础上使用有监督微调和RLHFllama2-chat使用3w条高质量SFT数据,更小学习率,2epoch,user_prompt不计算lossllama-chat的RLHF训练

使用二分比较模式;为了最大化生成数据的多样性,对同一个prompt,使用不同的模型、使用不同的温度参数;新模型迭代需要使用新模型生成的偏好数据奖励模型:使用两个奖励模型,helpfulness和safety,使用chat model checkpoint来初始化;奖励模型与chat model不同地方就是分类header替换成regression header, 损失使用的是binary ranking loss,使用了margin进一步优化为了提高多轮对话的一致性,提出可Ghost Attention

Qwen

3T tokens;语言判别工具;去重工具;低质量数据过滤(rule-based & machine-learning-based);上采样部分数据;在预训练阶段添加部分指令数据BPE tokenizer(基于tiktoken);使用常用chinese token增强;数字细粒度切分基础模型:主要基于llama,改进的地方:embedding和output project不在共享权重;使用FP32的Rope;移去所有的bias,但是QKV添加了bias; 使用Pre-Norm & RMSNorm;SwiGLU激活函数推理长度扩展:NTK-Rope;LogN-Scaling;window attention(lower layer对window size更加敏感,因此lower layer使用更小的window size)SFT finetune and RLHF: 为了提高泛化性,去掉了固定prompt格式的数据;使用了OpenAI的chatML-style format;RLHF基本同llama2TOOL USE, CODE INTERPRETER, AND AGENT:使用了self-instruce+人工纠正,训练时也添加了其他通用目的的SFT数据Code-Qwen:基于基础模型用code data进一步预训练,然后使用Code SFT数据微调

点击查看我的更多AI学习笔记github

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: