searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

TeleChat网络结构梳理

2024-12-03 09:32:59
52
0

1.1. 模型架构

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

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

1.2. 训练

TeleChat的预训练语料库非常庞大,包含了数万亿个token,总数据量超过了1PB(1000TB),覆盖了多个不同的领域。在训练过程中,以下是一些关键细节:

  • 批处理生成:数据批次是通过混洗和连接来自同一来源的语料来生成的,这样做是为了保持数据的一致性,并帮助模型捕捉更长的上下文信息。
  • 训练目标:训练过程中使用的是自回归语言建模方法,模型通过迭代预测序列中下一个token的概率来进行学习。
  • 优化器:训练中使用了Adam优化器,这是一种广泛使用的优化算法,有助于模型在训练过程中更快地收敛。
  • 学习率计划:采用余弦学习率计划,其中学习率从峰值逐渐衰减至峰值的10%,这有助于模型在训练初期快速学习,并在训练后期稳定下来。
  • 混合精度训练:为了提高训练的稳定性,训练过程中使用了bfloat16数据类型,这是一种在保持精度的同时减少计算需求和内存使用的技术。

1.3. 多阶段长上下文训练

  • 训练过程中逐步增加上下文长度,从8192个token开始,逐渐扩展到16384个token,以及更多。
  • 采用NTK感知插值方法,以减少在扩展上下文长度时的性能损失。
  • 在推理阶段使用LogN-Scaling技术,通过调整点积的缩放比例来保持注意力熵的稳定性。

通过使用NTK-aware外推和attention scaling的方法,能够将在8K长度上微调的模型在推理时外推到96K的长度。下表展示了TeleChat-7B模型在不同长度wikipedia数据上困惑度,可以观察到同时使用NTK-aware外推和attention scaling方法时,TeleChat在96K的推理长度上依然具有较低的困惑度。

1.4. 模型拓扑结构解析

Telechat引入了知识图谱(KG),和提示结合来缓解与既定世界知识的偏离类幻觉问题。

具体流程如下:当查询出现时,首先根据与查询的n-gram相似度检索候选实体。随后,从这些候选实体开始,在图中进行n步的随机行走。最后,根据与用户查询的相关性对随机行走得到的所有路径进行排序。然后返回top-k路径作为知识图检索过程的最终结果。通过将检索到的知识与提示相结合,大型语言模型可以在考虑知识图提供的背景知识的情况下处理增强的查询。这种方法有助于减轻幻觉的风险,,模型在处理查询时可以考虑知识图谱提供的背景信息,从而降低幻觉风险。

0条评论
0 / 1000
刘****芳
4文章数
0粉丝数
刘****芳
4 文章 | 0 粉丝
刘****芳
4文章数
0粉丝数
刘****芳
4 文章 | 0 粉丝
原创

TeleChat网络结构梳理

2024-12-03 09:32:59
52
0

1.1. 模型架构

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

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

1.2. 训练

TeleChat的预训练语料库非常庞大,包含了数万亿个token,总数据量超过了1PB(1000TB),覆盖了多个不同的领域。在训练过程中,以下是一些关键细节:

  • 批处理生成:数据批次是通过混洗和连接来自同一来源的语料来生成的,这样做是为了保持数据的一致性,并帮助模型捕捉更长的上下文信息。
  • 训练目标:训练过程中使用的是自回归语言建模方法,模型通过迭代预测序列中下一个token的概率来进行学习。
  • 优化器:训练中使用了Adam优化器,这是一种广泛使用的优化算法,有助于模型在训练过程中更快地收敛。
  • 学习率计划:采用余弦学习率计划,其中学习率从峰值逐渐衰减至峰值的10%,这有助于模型在训练初期快速学习,并在训练后期稳定下来。
  • 混合精度训练:为了提高训练的稳定性,训练过程中使用了bfloat16数据类型,这是一种在保持精度的同时减少计算需求和内存使用的技术。

1.3. 多阶段长上下文训练

  • 训练过程中逐步增加上下文长度,从8192个token开始,逐渐扩展到16384个token,以及更多。
  • 采用NTK感知插值方法,以减少在扩展上下文长度时的性能损失。
  • 在推理阶段使用LogN-Scaling技术,通过调整点积的缩放比例来保持注意力熵的稳定性。

通过使用NTK-aware外推和attention scaling的方法,能够将在8K长度上微调的模型在推理时外推到96K的长度。下表展示了TeleChat-7B模型在不同长度wikipedia数据上困惑度,可以观察到同时使用NTK-aware外推和attention scaling方法时,TeleChat在96K的推理长度上依然具有较低的困惑度。

1.4. 模型拓扑结构解析

Telechat引入了知识图谱(KG),和提示结合来缓解与既定世界知识的偏离类幻觉问题。

具体流程如下:当查询出现时,首先根据与查询的n-gram相似度检索候选实体。随后,从这些候选实体开始,在图中进行n步的随机行走。最后,根据与用户查询的相关性对随机行走得到的所有路径进行排序。然后返回top-k路径作为知识图检索过程的最终结果。通过将检索到的知识与提示相结合,大型语言模型可以在考虑知识图提供的背景知识的情况下处理增强的查询。这种方法有助于减轻幻觉的风险,,模型在处理查询时可以考虑知识图谱提供的背景信息,从而降低幻觉风险。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0