2024.9.20 中国电信人工智能研究院(TeleAI)开源TeleChat2-115B模型,该模型是首个完全国产算力训练并开源的千亿参数模型。
星辰语义大模型TeleChat2是由TeleAI研发训练的大语言模型,该系列模型完全基于国产算力训练。
本次开源TeleChat2-115B模型采用10万亿 Tokens中英文高质量语料进行训练,同步开源对话模型TeleChat2-115B的多格式、多平台权重文件。
TeleChat2在训练数据、训练方法等方面进行了改进,在通用问答和知识类、代码类、数学类榜单上相比TeleChat1均有大幅提升。
TeleChat2完全基于国产算力和国产深度学习框架进行训练,算力和算法框架更自主可控。优化MP、PP、SP实现方式提升模型性能,优化算子来提升训练速度。
研究团队使用大量小模型实验来验证scaling law规律,在不同模型结构、不同数据配比和数据清洗方式中寻找最优设计。
采用RingAttention及其他序列切分方式,实现长文训练性能提升;通过ntk-aware+attention-scaling的方式保证训练长度切换时的平稳过渡,以此来保证模型在不同长度数据下的训练效果。
在微调数据方面,研究团队进行了指令复杂性提升与多样性扩充,通过数据合成和人工标注生成高质量数据,并使用拒绝采样生成多样的推理路径;通过研究一套基于base模型反向选择偏好对齐数据方案,基于适配数据最大限度提升模型效果。
通用能力较TeleChat系列模型提升超过29%,在逻辑推理、总结摘要、长文写作和数学计算上均有大幅提升。
研究团队采用标准的Decoder-only结构设计了TeleChat2模型,使用Rotary Embedding 的位置编码方法、使用SwiGLU 激活函数来替代GELU激活函数、使用基于RMSNorm 的 Pre-Normalization进行层标准化操作。研究团队将TeleChat2的词嵌入层和输出lm head层参数分开,有助于增强训练稳定性和收敛性。研究团队选择了GQA以节约attention部分的参数量和计算量、提升训练和推理速度。
TeleChat2的模型结构配置如下表所示:
TeleChat模型相比同规模模型在评测效果方面也有较好的表现,研究团队的评测集涵盖了包括MMLU、C-Eval、CMMLU、 GSM8K、MATH、HumanEval、BBH等数据集,评测能力包括了指令遵循、考试能力、数学计算和推理、代码生成等。
当前模型推理兼容了单卡和多卡推理,以及针对长文推理做了部分优化工作。
模型推理代码
importosimporttorchfrommodelscopeimportsnapshot_downloadfromtransformersimportAutoModelForCausalLM,AutoTokenizer,GenerationConfigmodel_dir=snapshot_download('TeleAI/TeleChat2-115B')tokenizer=AutoTokenizer.from_pretrained(model_dir,trust_remote_code=True)model=AutoModelForCausalLM.from_pretrained(model_dir,trust_remote_code=True,device_map="auto",torch_dtype=torch.float16)generate_config=GenerationConfig.from_pretrained(model_dir)question="生抽与老抽的区别?"answer,history=model.chat(tokenizer=tokenizer,question=question,history=[],generation_config=generate_config,stream=False)print(answer)显存占用:
我们介绍使用ms-swift对telechat2-115b进行自定义数据集微调的例子. ms-swift是魔搭社区官方提供的大模型与多模态大模型微调推理框架,支持400+大语言模型和100+多模态大模型的微调到部署。
ms-swift开源地址:
https://github.com/modelscope/ms-swift
在开始微调之前,请确保您的环境已正确安装
pipinstall"ms-swift==2.*"-U
自定义数据集格式:(custom.jsonl)
{"messages":[{"role":"system","content":"00000"},{"role":"user","content":"11111"},{"role":"assistant","content":"22222"}]}{"messages":[{"role":"user","content":"aaaaa"},{"role":"assistant","content":"bbbbb"},{"role":"user","content":"ccccc"},{"role":"assistant","content":"ddddd"}]}{"messages":[{"role":"user","content":"AAAAA"},{"role":"assistant","content":"BBBBB"},{"role":"user","content":"CCCCC"},{"role":"assistant","content":"DDDDD"}]}微调脚本:
#实验环境:4卡A100#其中自定义文件为`custom.jsonl`CUDA_VISIBLE_DEVICES=0,1,2,3swiftsft\--model_typetelechat2-115b\--model_id_or_pathTeleAI/TeleChat2-115B\--datasetcustom.jsonl\--learning_rate1e-4\--output_diroutput\--lora_target_modulesALL
微调显存消耗:
微调后推理脚本如下,这里的ckpt_dir需要修改为训练生成的last checkpoint文件夹。我们对训练集中的验证集进行推理。
CUDA_VISIBLE_DEVICES=0 swift infer \--ckpt_dir output/telechat2-115b/vx-xxx/checkpoint-xxx \--load_dataset_config true --show_dataset_sample 10 \--do_sample false# merge-lora并推理CUDA_VISIBLE_DEVICES=0 swift infer \--ckpt_dir output/telechat2-115b/vx-xxx/checkpoint-xxx \--load_dataset_config true --show_dataset_sample 10 \--merge_lora true --do-sample false
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |