MCPcopy
hub / github.com/Tele-AI/Telechat

github.com/Tele-AI/Telechat @main sqlite

repository ↗ · DeepWiki ↗
809 symbols 2,017 edges 47 files 193 documented · 24%
README

星辰语义大模型-TeleChat

🤗 Hugging Face • 🤖 ModelScope • 🏔 MindSpore • 🐾 gitee️ • 💬 WeChat• 🧩 Modelers

Tech Report

目录

最新动态

  • 2024.7.24 TeleChat-12B 支持vllm
  • 2024.6.28 开源1B版本chat模型
  • 2024.5.16 开源优化的12B版本chat模型TeleChat-12B-V2
  • 2024.3.20 开源12B版本chat模型及量化版本
  • 2024.1.11 开源1T中文数据集
  • 2024.1.10 开源7B版本chat模型及其量化版本

模型介绍

星辰语义大模型-TeleChat

  • 星辰语义大模型TeleChat是由中电信人工智能科技有限公司研发训练的大语言模型,其中7B模型基座采用1.5万亿 Tokens中英文高质量语料进行训练,12B模型基座采用3万亿 Tokens中英文高质量语料进行训练。
  • 我们开源了对话模型TeleChat-1BTeleChat-7BTeleChat-12B,以及其huggingface格式的权重文件。此外,我们还开源了7B、12B模型的int8和int4量化版本。
  • TeleChat-12B在模型结构、训练数据、训练方法等方面进行了改进,在通用问答和知识类、代码类、数学类榜单上相比TeleChat-7B均有大幅提升。

  • 在模型结构方面,我们使用小规模的模型尝试多种模型结构的组合,选择最优结构。相比TeleChat-7B模型,TeleChat-12B模型采用了词嵌入层与输出层解耦的结构,将词嵌入层和输出lm head层参数分开,有助于增强训练稳定性和收敛性。

  • 在训练数据方面,我们收集了覆盖书籍、百科、新闻、政务、法律、医药、专利、论文、数学、代码等诸多方面的大量中英文数据;通过优化数据清洗策略大幅提升数据的文本干净度、观点无偏性、内容有效性、格式规范性。
  • 在训练方法方面,我们使用科学数据配比学习与课程学习的方法,使用小参数模型在多种数据配比的数据上拟合,得到对各个数据集难度的先验估计;训练过程中每隔一段时间自动化评估当前模型在所有数据集上的loss,以及在评测集上的生成效果,动态提升较难学习的数据集权重,保证模型在各个数据集上都有较佳的拟合效果。

  • TeleChat-12B-V2版本使用动态数据配比和课程学习的方法,针对基座模型进行了持续训练增强。其对话模型在通用能力评测上提升5.5%,其中数学能力提升24.6%、翻译能力提升9%、幻觉测试提升10.3%,安全拒识、知识问答、闲聊问答等方面也有不同程度的提升。

  • TeleChat-1B版本底座基于2万亿Tokens中英文高质量语料进行训练,其对话模型在能力在同尺寸模型中位列前茅。

模型结构

我们采用标准的 Decoder-only 结构设计了 TeleChat 模型,并在模型维度做了如下的一些改进:

  • 位置编码:我们使用 Rotary Embedding 的位置编码方法,该方法将相对位置信息依赖集成到 self-attention 中,并且具有较好的位置外推性。Rotary Embedding还可以较好地与Flash-Attention v2 配合使用,将模型的训练速度提升约20%。
  • 激活函数:我们使用 SwiGLU 激活函数来替代GELU激活函数 , 为了减少计算量,将ffn_hidden_size设置为小于原始SwiGLU中的4倍隐藏层大小。
  • 层标准化: 基于 RMSNorm 的 Pre-Normalization。
  • 词嵌入层与输出层解耦:我们将TeleChat-12B的词嵌入层和输出lm head层参数分开,有助于增强训练稳定性和收敛性。
layer_num hidden_size ffn_hidden_size head_num tie_word_embeddings
1B 16 2048 5460 32
7B 30 4096 12288 32
12B 38 5120 12288 32

我们开源的TeleChat模型: - 支持deepspeed微调,开源了基于deepspeed的训练代码,支持Zero并行显存优化,同时集成了FlashAttention2 - 多轮能力支持。开源了多轮数据构建方式,针对多轮模型训练集成了针对多轮的mask loss训练方式,更好的聚焦多轮答案,提升问答效果。 - 外推能力提升。开源了8K训练版本模型,采用NTK-aware外推和attention scaling外推方式,可以外推到96K。 - 具备较好的长文生成能力。在工作总结、工作计划、PPT大纲、申论、招标书、邮件、方案、周报、JD写作等长文写作任务上表现较好。

本次发布版本和下载链接见下表

模型版本 下载链接
1B-FP16 TeleChat-1B-FP16
7B-FP16 TeleChat-7B-FP16
7B-int8 TeleChat-7B-int8
7B-int4 TeleChat-7B-int4
12B-FP16 TeleChat-12B-FP16
12B-v2-FP16 TeleChat-12B-v2-FP16
12B-int8 TeleChat-12B-int8
12B-int4 TeleChat-12B-int4
12B-V2-FP16 TeleChat-12B-V2-FP16

数据开源

数据介绍

TeleChat-PTD 是由电信星辰大模型TeleChat预训练语料中抽取出的的综合性大规模中文数据集。数据主要来源于网页、书籍、官方媒体等。 我们使用规则+模型的方式进行了相关的过滤,并对数据进行了相似性去重,尽可能地提取出高质量地数据。

TeleChat-PTD 数据集大约公开了2.7亿条数据,数据由纯中文文本构成,原始大小约1TB,压缩后480G,共189个文件。数据集中已经去除了其它冗余信息。

数据格式

数据为jsonl格式,仅有一个字段data

data: 单条处理后的预训练数据

数据清洗

数据清洗的工作流程主要是:规则筛选和清洗、去重、高质量数据筛选、数据安全处理这四个步骤。

  • 规则筛选主要是一些通用的规则和启发式规则,例如对字数长度的筛选等等;
  • 去重主要使用相似度去重来将过于相似重复的数据删除;
  • 高质量筛选主要使用了BERT、GPT2等模型对数据进行打分筛选出高质量数据;
  • 数据清洗主要是针对不良数据进行了识别和去除;

数据下载

huggingface下载地址:数据下载

效果评测

TeleChat模型相比同规模模型在评测效果方面也有较好的表现,我们的评测集涵盖了包括MMLU、C-Eval、GAOKAO、AGIEval、CMMLU、 GSM8K、MATH、HumanEval、CHID等数据集,评测能力包括了自然语言理解、知识、数学计算和推理、代码生成等

评测集介绍

通用能力

  • MMLU 数据集是一个全面的英文评测数据集,涵盖了 57 个学科,包括人文学科、社会科学、自然科学、初等数学、美国历史、计算机科学、法律等等。

  • CEVAL 数据集是一个全面的中文评估测试集,包括初中、高中、大学和专业难度级别的多项选择题,涵盖了 52 个不同的学科领域。

  • CMMLU 数据集同样是一个全面的中文评估测试集,涵盖了从基础学科到高级专业水平的67个主题。

  • AGIEval 数据集是一个专门为评估基础模型在难度较高的标准化考试(如大学入学考试、法学院入学考试、数学竞赛和律师资格考试)的语境中而设计的基准测试,包括中文试题和英文试题。

  • GAOKAO 数据集是一个基于中国高考题构建的语言模型能力测试集,包括 1781 道客观题和 1030 道主观题。我们只保留了客观题的评测结果。

推理和代码能力

  • GSM8K 数据集包含了8.5K高质量的小学数学题,能够评估语言模型在数学推理能力上的表现,我们利用官方的评测方案在test集上进行了4-shot测试。

  • MATH 数据集包含了12.5K具有挑战性的高中数学竞赛题,难度较大,对语言模型的推理能力要求较高,基于官方的评测方案,我们在test集上进行了4-shot测试。

  • HumanEval 数据集是一个由openai提供的代码能力测试数据集,它由 164 个编程问题组成,要求根据给定的问题和代码模板,生成正确的代码片段,我们利用官方评测方案在test集上进行了zero-shot测试。

语言理解能力

  • CSL 是一个中文论文摘要关键词匹配任务,需要模型能够识别中文学术摘要与其关键词之间的匹配情况。

  • CHID 是一个中文阅读理解任务,要求模型选择出最恰当的成语填补中文片段中的空缺处。

  • EPRSTMT 是一个基于电子商务平台上的产品评论的二元情感分析任务。

评测结果如下

Model MMLU C-Eval CMMLU AGIEval GAOKAO GSM8K MATH HumanEval CSL CHID EPRSTMT BBH HellaSwag
5-shot 5-shot 5-shot zero-shot zero-shot 4-shot 4-shot zero-shot zero-shot zero-shot zero-shot 3-shot zero-shot
LLaMA2-7B-chat 46.2 31.9 31.5 28.5 16.1 26.3 3.9 12.2 58.8 44.1 57.5 35.6 74.1
LLaMA2-13B-chat 54.6 36.2 38.7 32.3 18.6 29.6 5.0 18.9 61.2 48.0 59.4 40.2 78.2
ChatGLM2-6B-chat 45.9 52.6 49.3 39.0 46.4 28.8 6.5 11.0 61.2 57.9 71.2 32.7 57.0
ChatGLM3-6B-chat 51.9 53.8 54 38.9 49.3 56.7 18.7 61 65.6 63.4 85 44.6 62.7
Baichuan2-7B-chat 52.8 55.6 54.0 35.3 39.7 32.8 6 13.4 60 75.2 87.5 35.8 61.6
Baichuan2-13B-chat 57 56.7 58.4 40 51.4 55.3 8.6 17.7 63.1 78.2 87.5 49.9 66.9
Qwen-7B-chat 56.6 59.3 59.5 41.3 63.3 52.5 10.3 26.2 63.1 72.3 88.8 46.9 59.9
Qwen-14B-chat 66.4 71.7 70.0 47.3 76.5 61.0 26.8 36.6 55.6 72.3 91.2 58.0 65.2
TeleChat-1B-chat 36.5 53.3 42.1 32.1 34.5 36.8 7.2 12.8 45.62 69.8 87.5 37.4 29.6
TeleChat-7B-chat 60.5 64.6 64.3 46.8 59 36.7 10.3 20.1 66.8 88.0 87.5 19.5 36.7
TeleChat-12B-chat 73.3 66.6 74.2 51.7 53.1 57.2 16.0 22.0 60.6 83.2 86.3 52.2 71.5

说明:CMMLU、AGIEval、GAOKAO、CSL、CHID、EPRSTMT均基于OpenCompass平台提供的评测方法进行评估,而对于对比模型,我们同时参考了官方汇报结果和OpenCompass结果。我们使用了自己的评测脚本评测MMLU与CEVAL榜单,具体方法见evaluation/文件夹。

模型推理和部署

模型推理

当前模型推理兼容了单卡和多卡推理,以及针对长文推理做了部分优化工作。具体推理操作请参考:tutorial

模型推理方法示范

>>> import os
>>> import torch
>>> from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
>>> os.environ["CUDA_VISIBLE_DEVICES"] = '0'
>>> tokenizer = AutoTokenizer.from_pretrained('../models/12B', trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained('../models/12B', trust_remote_code=True, device_map="auto", torch_dtype=torch.float16)
>>> generate_config = GenerationConfig.from_pretrained('../models/12B')
>>> question="生抽与老抽的区别?"
>>> answer, history = model.chat(tokenizer = tokenizer, question=question, history=[], generation_config=generate_config, stream=False)
>>> print(answer)
生抽和老抽是两种不同的酱油,它们在风味、色泽和用途上都有所区别。

1. 颜色:生抽的颜色比较淡,而老抽的颜色较深。生抽的颜色呈红褐色或棕红色,而老抽的颜色则呈棕黑色。

2. 味道:生抽具有鲜美的咸味和微甜的味浅,而老抽浓郁,颜色较深。根据个人口味和烹饪需求选择不同的酱油类型可以获得更好的口感和菜肴效果。

模型部署

TeleChat目前提供了API、Web两种部署方式。目前仅提供简单的单卡单并发场景,用于演示和效果测试。基于参考快速上手手册:tutorial

API: 分为流式接口和json接口,支持传入推理参数

Web: 支持流式生成、多轮对话

星辰语义大模型TeleChat能力展示

工作计划

用户:

给出以下信息,请你写一篇完善的工作计划。
1. 分析市场竞争情况,包括主要竞争对手和他们的产品特点。
2. 制定产品开发路线图,包括关键里程碑和时间表。
3. 确定资源需求,包括人力、资金和技术支持。
4. 开展市场调研,以了解潜在客户的需求和反馈。
5. 制定市场推广策略,包括定价策略、促销活动和渠道选择。
请输出详细的项目计划。

TeleChat:

项目名称:市场竞争分析及产品开发路线图

一、市场竞争分析
1.1 主要竞争对手分析:
   - 公司A:主要产品为XXX,具有较高的知名度和用户基础。
   - 公司B:主要产品为XXX,与公司A有一定的竞争关系。
   - 公司C:主要产品为XXX,在市场上有一定份额。

1.2 产品特点分析:
   - 公司A的产品特点是XXX,具有独特的功能和性能优势。
   - 公司B的产品特点是XXX,具有良好的性价比和用户体验。
   - 公司C的产品特点是XXX,具有创新性和独特性。

二、产品开发路线图
2.1 关键里程碑:
   - 完成市场调研,收集并分析目标客户的需求和偏好。
   - 设计并完成产品原型,验证其功能和性能是否符合预期。
   - 进行产品测试和优化,确保产品的质量和稳定性。

2.2 时间表:
   - 关键里程碑的完成时间:XXXX年X月X日。
   - 产品原型的设计和测试完成时间:XXXX年X月X日。
   - 产品测试和优化完成时间:XXXX年X月X日。
   - 产品发布和上市时间:XXXX年X月X日。

三、资源需求
3.1 人力资源:
   - 需要招聘具备相关专业背景和技能的人才,以满足产品研发和市场推广的需要。
   - 需要建立有效的团队合作机制,提高工作效率和产出。

3.2 资金:
   - 需要投入足够的资金用于产品研发、市场推广和人力资源等方面。
   - 可以考虑申请政府或企业的科研基金、风险投资等资金来源。

3.3 技术支持:
   - 需要建立健全的技术支持体系,包括技术咨询、技术培训和技术服务等。
   - 可以考虑与高校、研究机构等进行合作,获取外部技术支持和资源。

四、市场调研
4.1 目标:
   - 了解潜在客户对产品的需求和期望,为产品开发和市场推广提供参考依据。
   - 发现潜在的市场机会和竞争威胁,为企业决策提供数据支持。

4.2 方法:
   - 通过在线问卷调查、面对面访谈等方式,收集潜在客户的意见和反馈。
   - 分析收集到的数据,提取有价值的信息和洞察。

五、市场推广策略
5.1 定价策略:
   - 根据产品成本、市场需求和竞争状况等因素,确定合理的定价策略。
   - 可以考虑采用差异化定价、价格补贴等策略来吸引目标客户。

5.2 促销活动:
   - 定期组织产品发布会、促销活动等,提升产品的知名度和销售量。
   - 可以结合线上线下渠道,采取多种促销手段,如优惠券、折扣、满减等。

5.3 渠道选择:
   - 根据产品特点和目标客户群体,选择合适的销售渠道,如直销、代理商、电商平台等。
   - 可以通过市场调研和分析,评估不同渠道的优劣势,并进行渠道选择和整合。

周报撰写

用户:

请你为一位算法工程师写一篇周报,主要涉及到的内容应包括:
1.上线新版模型,新增首页新闻推荐功能。
2.新版模型训练集,加入上周回流的badcase数据
3.经过线上数据回流评估,获得了95%的用户满意度。
4.计划下周调研新闻推荐方向的最新进展。
请确保使用简介、专业的语言进行周报书写。

TeleChat:

周报

日期:XXXX年XX月XX日-XXXX年XX月XX日

本周工作总结:

1. 上线新版模型,新增首页新闻推荐功能
   在本周,我们成功上线了新版模型,并添加了首页新闻推荐功能。通过该功能,我们可以根据用户的兴趣和偏好,为其提供更加个性化的新闻推荐服务。

2. 新版模型训练集,加入上周回流的badcase数据
   为了进一步提升模型的准确性和鲁棒性,我们在新版模型的训练集中加入了上周回流的badcase数据。通过对这些数据的分析和处理,我们希望能够更好地识别和解决模型在实际应用中遇到的问题。

3. 经过线上数据回流评估,获得了95%的用户满意度
   我们对新版模型进行了线上数据回流评估,结果显示用户满意度达到了95%。这表明我们的新版模型在满足用户需求方面取得了显著的进步,并且得到了用户的认可和喜爱。

4. 计划下周调研新闻推荐方向的最新进展
   为了不断提升新闻推荐系统的性能和效果,我们计划在下周进行新闻推荐方向的最新进展的调研工作。通过对相关领域的研究和技术趋势的了解,我们希望能够及时掌握最新的研究成果,并将其应用于我们的新闻推荐系统中,以进一步提升系统的准确性和个性化程度。

以上是本周的工作总结和下周的计划安排。感谢各位同事在本周的努力和支持,让我们一起继续努力,为公司的发展做出更大的贡献!

辅助编程

用户:

请你编写一段java代码,需要使用springcloud feign框架,实现远程调用的功能

TeleChat:

以下是一个简单的示例代码,演示了如何使用Spring Cloud Feign框架进行远程调用:

首先,创建一个Feign客户端类,继承自FeignClient:

@FeignClient(value = "my-service") // 替换为实际的Service名称
public interface MyServiceClient {
    @RequestMapping(value = "/my-path", method = RequestMethod.GET)
    String getMyPath();
}

然后,创建一个控制器类,继承自FeignClient:

@RestController
public class MyController {
    @Autowired
    private MyServiceClient myServiceClient;

    @RequestMapping("/my-path")
    public String myMethod(@RequestParam(value = "name", required = true) String name) {
        return myServiceClient.getMyPath() + " - " + name;
    }
}

最后,创建一个服务类,继承自FeignClient:

@Service
public class MyService {
    @Autowired
    private MyServiceClient myServiceClient;

    public void myMethod() {
        myServiceClient.getMyPath();
    }
}

现在,你可以通过Spring Cloud的Feign客户端类来发起远程调用了。例如:

@RestController
public class MyController {
    @Autowired
    private MyServiceClient myServiceClient;

    @RequestMapping("/my-path")
    public String myMethod(@RequestParam(value = "name", required = true) String name) {
        return myServiceClient.getMyPath() + " - " + name;
    }
}

当你运行这个示例代码时,它将启动一个远程调用的服务。你可以在浏览器中访问"http://localhost:8080/my-path"来查看结果。

数学计算

用户:

在一个笼子里有若干只鸡和兔,总共有35个头、94只脚。请问鸡和兔的数量各是多少?

TeleChat:

```text 假设兔子有 x 只,鸡有 y 只,根据题意可以列出以下两个方程式: x+y=35 4x+2y=94 使用解方程组的方法求解 x 和 y 的值 将第一个方程式改写为:x=35-y 代入第二个方程:4x+2y=94 4*(35-y)+2y=94 (140-4y)+2y=94 140-4y+2y=94 -4y+2y=94-140 (2-4)y

Core symbols most depended-on inside this repo

append
called by 27
models/7B/generation_utils.py
from_pretrained
called by 21
quant/modeling_telechat_gptq.py
pop
called by 13
models/7B/generation_utils.py
print_rank_0
called by 11
deepspeed-telechat/utils/utils.py
response_data
called by 10
service/telechat_service.py
eval
called by 7
deepspeed-telechat/utils/module/lora.py
update
called by 7
models/12B_4bit/generation_utils.py
chat
called by 7
models/7B/modeling_telechat.py

Shape

Method 570
Class 127
Function 110
Route 2

Languages

Python100%

Modules by API surface

models/7B_8bit/modeling_telechat.py56 symbols
models/7B_4bit/modeling_telechat.py56 symbols
models/7B/modeling_telechat.py56 symbols
models/12B_8bit/modeling_telechat.py56 symbols
models/12B_4bit/modeling_telechat.py56 symbols
models/12B/modeling_telechat.py56 symbols
models/12B-V2_8bit/modeling_telechat.py56 symbols
models/12B-V2/modeling_telechat.py56 symbols
service/vllm_inf/telechat_12B.py22 symbols
models/7B_8bit/generation_utils.py21 symbols
models/7B_4bit/generation_utils.py21 symbols
models/7B/generation_utils.py21 symbols

Dependencies from manifests, versioned

accelerate0.24.1 · 1×
auto-gptq0.3.0 · 1×
datasets2.10.1 · 1×
deepspeed0.8.3 · 1×
fastapi0.109.1 · 1×
peft0.5.0 · 1×
safetensors0.3.1 · 1×
streamlit1.30.0 · 1×
torch1.13.1 · 1×
transformers4.30.0 · 1×
uvicorn0.17.6 · 1×

For agents

$ claude mcp add Telechat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact