01.引言
星辰语义大模型TeleChat2是由中国电信人工智能研究院(TeleAI)研发训练的大语言模型。今年9月,TeleAI 正式发布并开源了首个基于全国产化万卡集群和国产深度学习框架训练的千亿参数大模型 TeleChat2-115B ,近日又进一步开源了 TeleChat2-3B、7B和35B,以适配不同场景的应用需求。
- 本次开源的 TeleChat2-3B、TeleChat2-7B、TeleChat2-35B 模型已支持工具调用功能。在 Function Call 方面针对性进行了效果优化,在相关榜单评测上相比同尺寸模型均有较好表现。
- 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的模型结构配置如下表所示:
开源的 TeleChat2 模型:
- 支持deepspeed微调,开源了基于deepspeed的训练代码,支持Zero并行显存优化,同时集成了FlashAttention2
- 多轮能力支持。开源了多轮数据构建方式,针对多轮模型训练集成了针对多轮的mask loss训练方式,更好的聚焦多轮答案,提升问答效果。
本次发布版本和下载链接:
- telechat2-3B
https://modelscope.cn/models/TeleAI/TeleChat2-3B
- telechat2-7B
https://modelscope.cn/models/TeleAI/TeleChat2-7B
- telechat2-35B
https://modelscope.cn/models/TeleAI/TeleChat2-35B-Nov
- telechat2-115B
https://modelscope.cn/models/TeleAI/TeleChat2-115B
02.效果评测
TeleChat2 模型相比同规模模型在评测效果方面也有较好的表现,评测集涵盖了包括MMLU、C-Eval、CMMLU、 GSM8K、MATH、HumanEval、BBH等数据集,评测能力包括了指令遵循、考试能力、数学计算和推理、代码生成等
评测集介绍
通用能力
- MMLU 数据集是一个全面的英文评测数据集,涵盖了 57 个学科,包括人文学科、社会科学、自然科学、初等数学、美国历史、计算机科学、法律等等。
- CEVAL 数据集是一个全面的中文评估测试集,包括初中、高中、大学和专业难度级别的多项选择题,涵盖了 52 个不同的学科领域。
- CMMLU 数据集同样是一个全面的中文评估测试集,涵盖了从基础学科到高级专业水平的67个主题。
推理和代码能力
- GSM8K 数据集包含了8.5K高质量的小学数学题,能够评估语言模型在数学推理能力上的表现。
- HumanEval 数据集是一个由openai提供的代码能力测试数据集,它由 164 个编程问题组成,要求根据给定的问题和代码模板,生成正确的代码片段。
- BBH 数据集全名为BIG-Bench Hard(BBH),包含23个具有挑战性的BIG-Bench任务,均为之前的语言模型评估中没有超过平均人类评审者表现的任务。
- MBPP 数据集包含大约1000个众包的Python编程问题,涵盖编程基础知识、标准库功能等。每个问题包括任务描述、代码解决方案和3个自动化测试用例。
主观题能力
- AlignBench是一个多维度全面评估中文大模型对齐水平的评测基准,包含638道单轮主观评测题。
- MT-bench是一个用于评估聊天助手的具有挑战性的多轮开放式问题集,包含80通多轮主观评测题。
指令遵循能力
- IFEval旨在评估语言模型对指令的精确遵循能力,它包含了500条可精确验证的指令,是Open LLM Leaderboard中使用的核心基准测试之一。
评测结果如下
Dataset |
TeleChat2-115B |
TeleChat2-35B |
TeleChat2-7B |
TeleChat2-3B |
C-Eval |
86.9 |
85 |
82 |
75 |
MMLU |
80.9 |
82 |
79.6 |
72.9 |
CMMLU |
89.94 |
90.18 |
84.6 |
73 |
BBH |
89.04 |
88.6 |
77.3 |
65.99 |
GSM8K |
92.2 |
91 |
86.8 |
64.7 |
HumanEval |
75 |
73 |
56 |
38 |
MBPP |
78 |
75 |
62.6 |
47 |
AlignBench |
8.03 |
7.88 |
6.96 |
5.74 |
MT-bench |
8.89 |
8.2 |
7.2 |
5.72 |
IFEval |
82.81 |
79.63 |
73.1 |
61.29 |
03.模型推理
模型推理
当前模型推理兼容了单卡和多卡推理,以及针对长文推理做了部分优化工作。
模型推理方法示范
import os import torch from modelscope import AutoModelForCausalLM, AutoTokenizer, GenerationConfig tokenizer = AutoTokenizer.from_pretrained('TeleAI/TeleChat2-3B', trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained('TeleAI/TeleChat2-3B', trust_remote_code=True, device_map="auto", torch_dtype=torch.float16) prompt = "生抽与老抽的区别?" messages = [{"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) ]
不同版本模型显存占用对比(MB):
telechat2-3B |
telechat2-7B |
5963.42 |
14659.34 |
04.模型微调
这里我们介绍使用ms-swift 3.0对TeleChat2-3B进行自我认知微调。
在开始微调之前,请确保您的环境已正确安装
# 安装ms-swift git clone https://github.com/modelscope/ms-swift.git cd ms-swift pip install -e .[llm]
微调脚本如下:
CUDA_VISIBLE_DEVICES=0 swift sft \ --model TeleAI/TeleChat2-3B \ --dataset AI-ModelScope/alpaca-gpt4-data-zh#500 \ AI-ModelScope/alpaca-gpt4-data-en#500 \ swift/self-cognition#500 \ --train_type lora \ --lora_rank 8 \ --lora_alpha 32 \ --num_train_epochs 1 \ --logging_steps 5 \ --torch_dtype float16 \ --max_length 2048 \ --learning_rate 1e-4 \ --output_dir output \ --target_modules all-linear \ --model_name 小黄 'Xiao Huang' \ --model_author 魔搭 ModelScope \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 16
训练显存占用:
推理脚本:
CUDA_VISIBLE_DEVICES=0 swift infer \ --ckpt_dir output/vx-xxx/checkpoint-xxx \ --stream true
推理效果:
点击阅读链接即可跳转模型合集:ModelScope 魔搭社区