1.Chinese Tiny LLM_ Pretraining a Chinese-Centric Large Language Model

文章目录

  • 摘要
  • 一、背景
  • 二、预训练
    • 数据
      • 统计信息
      • 数据处理
    • 模型架构
  • 三、SFT
  • 四、Learning from Human Preferences
  • 五、评估
    • 数据集和指标
    • 训练过程和比较分析
    • 安全性评估
    • 中文硬指令理解与遵循评价
  • 六、结论

  • https://arxiv.org/abs/2404.04167
  • https://github.com/Chinese-Tiny-LLM/Chinese-Tiny-LLM(目前仅有数据处理脚本和数据、模型权重)

摘要

CT-LLM 是一个 2B 的 LLM,在 1200B 的 token 上预训练,包括 800B 的中文 token、300B 的英文 Token、100B 的代码 token,以提高模型理解和处理中文的能力。CT-LLM 不仅在中文基准 CHC-Bench 上表现出色,还可以通过 SFT 熟练处理英语任务。与以往的 LLM 不同(主要在英语语料上训练,然后改编为其他语言),该 LLM 以中文为主。

主要的贡献:

  • 2B的中文LLM:CT-LLM
  • 大规模的预训练中文语料(800B):MAP-CC
  • 精心挑选的多学科中文硬案例基准:CHC-Bench
  • 通过将中文作为预训练的主要语言,研究了这种模型是否可以有效地获取和展示其他语言的能力。 以中文为中心的方法的成功可以显著实现语言技术的民主化,为创建反映全球语言多样性的包容性模式提供见解。

一、背景

  • LLM 多在以英语语料为主的数据上进行训练,相对而言,缺乏非英语为主上训练的 LLMs
  • 缺乏高质量中文预训练数据

二、预训练

数据

统计信息

指导原则:

  • 数据集的量级 显着影响大型语言模型的性能
  • 数据集的多样性和全面性 对于训练通用领域大型语言模型至关重要。

工作:

  • 数量:开发了一个12,546.8 亿的数据集,包含 8404.8 亿个中文 token、3148.8 亿个英文代币token和 993 亿个代码token。
  • 来源:该数据集聚合了来自不同来源的内容,例如来自 Common Crawl 的 Web 文档、学术文章、百科全书和书籍。
  • 注意:数据集包含 110B 重复的 Token,多数都是英文,质量很高,重复使用了两次。

image.png
图1:预训练数据分布,其中“zh”代表中文数据,“en”代表英文数据,“cc”代表Common Crawl,包括公开的Web文档等,“encyc.”指的是百科全书。


数据处理

  • 启发式规则:我们设计了启发式规则来执行数据过滤,从而删除低质量的数据。
    • 这些规则代表了过滤策略的集成框架,灵感来自多个数据集和模型的方法。
    • 我们还开发了一套量身定制的规则,以解决数据集固有的特征。值
    • 得一提的是,现有规则主要针对英文数据过滤。因此,我们专门对中文数据集的规则进行了调整和修改。这些规则的阈值和细节是通过基于数据集中抽样文档的分析来确认的。
    • 具体做法
      • 第一步是标准化数据格式以提高处理效率。
      • 接下来,我们分两个阶段从文本中删除 URL,以确保彻底消除:
        • 首先从黑名单 T1 中删除带有 URL 的数据,然后过滤掉任何剩余的 URL,从而提高数据纯度。
        • 我们还应用句子级和文档过滤来排除太短、质量低或缺乏逻辑顺序的文本,确保数据的连贯性和相关性。此外,我们还删除了重复的文本,包括 n-gram(N-gram 是指文本中连续出现的N个字符或单词。) 和句子。
  • 去重:该管道包括文档级别的精确去重、文档级别的Minhash去重,以及文档内部的相似行去重,可有效识别和删除文档中的重复内容。
    • 为了精确的重复数据删除,为了降低内存压力,我们利用 Bloom 过滤器来近似地将误报率设置为 0.001。
    • 在 Minhash LSH 的情况下,签名由 128 个哈希函数构建,并为 LSH 组织成 9 个波段和 13 行,实现 0.8 的 Jaccard 相似度。
    • 文档内部级别的相似行去重旨在移除单个文档内的重复行。这种方法的动机是我们观察到,大量的网络爬虫数据在同一页面内包含了2到3次的重复,并且由于从HTML中提取文本的过程,一些单词可能会丢失,导致重复内容出现轻微变化。对于这种去重,我们采用编辑距离来确定行的相似性。具体标准是,如果两条线的编辑距离小于较短线的十分之一长度,那么这两条线就被认为是相似的。此外,为了加快这个过滤过程,我们计算了行与行之间字符重叠的比例;如果这个比例小于三分之一,那么这些行就被视为不相似。完整的流水线以及实际的过滤和重复数据删除比率如图 2 所示。

image.png
图2:上图为数据处理流程和重复数据删除率,下图为类似线路重复数据删除示意图。


模型架构

  • 上下文长度:4096

image.png

  • d_model:embeddeding 的维度
  • Num KV heads:键值对(K和V)被分成多少组(heads)。"Num heads"关注的是多头注意力机制中并行处理的头的数量,而"Num KV heads"则是在特定的注意力变体中使用的参数,它关注的是如何组织和处理键和值向量。两者都是为了提高模型对输入数据的理解能力和表示的丰富性。在论文中,Num heads和Num KV heads都设置为16,这意味着模型使用了16个并行的注意力头,每个头都会处理分割后的键值对。
  • RoPE Embeddings:我们的架构不依赖于绝对位置嵌入,而是在每一层都包含旋转位置嵌入。此外,为了最小化整体模型大小,嵌入在输入(用户输入)和输出(生成文本)之间共享。
  • SwiGLU Activations
  • RMSNorm
  • Tokenizer:我们采用了 baichuan2 分词器,它利用 SentencePiece 的字节对编码 (BPE)进行数据分词化。词汇量为 125,696。此外,该分词器旨在将数字分割成单个数字,从而增强数字数据的编码。

三、SFT

  • 数据:对于监督微调(SFT),我们使用了中文和英文数据。中国数据包括来自CQIA和OL-CC的全套数据,以及来自COIG-PC的高质量数据。英文数据是从 OpenHermesPreferences 数据集中抽取的。中文数据总量包括105K对指令数据,英文数据根据中文数据量调整为不同的比例。这些比率分别为 1:1、2:1、4:1、8:1,以及仅包含中文数据和仅包含英文数据的配置。每组实验训练了 3 个周期。
  • 用于模型训练的超参数如下:序列长度为 2048,全局批量大小为 128,最大学习率为 2e-5。为了防止过拟合,应用值为 0.1 的权重衰减,并强制执行限制为 1.0 的梯度裁剪。
  • 为了从COIG-PC数据集和OpenHermesPreferences数据集中提取高质量的片段,我们采用困惑度(ppl)作为选择指标。具体来说,我们使用 Qwen-7B 模型来计算从 SFT 数据集中抽取的样本的 ppl。在SFT数据集的数据过滤过程中,我们只保留那些在Qwen-7B下困惑度得分低于3,000的条目。

SFT 结果如下:
image.png


四、Learning from Human Preferences

  • 从人类的喜好中学习
  • 算法:DPO
  • 数据image.png

为了通过合成方法构建更高质量的偏好数据集,我们采用了alpaca-gpt4,它使用GPT-4生成“选择”响应,我们采用baichuan-6B作为生成“拒绝”响应的较弱模型。该数据集总共包括 183k 对中文对和 46k 对英文对。

在构建偏好数据集的过程中,通常会涉及到生成一系列可能的响应,并对这些响应进行评估,以确定哪些是用户可能“选择”的高质量响应,哪些是应该“拒绝”的低质量响应。在这个上下文中,alpaca-gpt4使用GPT-4生成了“选择”响应,这些响应被认为是高质量的,可能是符合用户偏好或者更准确的答案。
而百川-6B作为较弱的模型,其作用是生成“拒绝”响应。这里的“较弱”可能意味着模型在某些方面的表现不如GPT-4,例如准确性、生成文本的流畅性或者多样性等。使用百川-6B生成的拒绝响应可以作为负样本,与GPT-4生成的选择响应一起,构成用于训练或评估语言模型的数据集。

  • 训练设置image.png
  • 表现:SFT 和 DPO 之后的 CT-LLM 被命名为 CT-LLM-SFT-DPO。

image.png


五、评估

数据集和指标

  • 评估数据集和指标:我们的评估包括一套全面的英文和中文公共基准,利用专为稳健评估而设计的内部评估框架。这些基准包括各种数据集,以满足语言理解和推理的多个学科和方面的需求,例如 MMLU、C-Eval和 CMMLU。我们的评估策略区分了需要从多项选择中进行选择的数据集,其中我们采用基于困惑的评估,以及那些适合基于生成的评估的数据集,其中模型生成自由文本,从中解析结果。这种拆分使策略能够满足每个数据集的特定需求,从语言建模到专业知识和代码生成。

image.png


训练过程和比较分析

  • 训练过程和比较分析:训练过程揭示了各种数据集的持续改进趋势,特别是在语言理解、推理和特定领域知识方面取得了长足的进步。值得注意的是,HellaSwag、PIQA 和 ARC 等数据集显示出明显的改进,表明推理能力增强。该模型在数学(GSM8K 和 TheoremQA)和科学(ARC-c 和 ARC-e)等专业领域取得了显着进展,强调了其理解和生成特定于这些领域的内容的能力不断提高。在我们的预训练过程中,中间检查点的评估结果如表4所示。

image.png

  • CT-LLM 与其他模型在不同 benchmark 上的比较,可以发现在MMLU和CMMLU等多学科数据集上的性能差距明显较小。虽然与其他模型相比表现出显着差异,特别是在语言理解和推理基准方面,但我们的模型保持了一致的性能,表明不同领域的能力是平衡的。

image.png

  • 我们还比较了使用2:1的中英文数据(SFT)比例进行微调的模型与其他模型在通用基准和中国基准上的性能,如表3所示。我们发现,我们的模型在中文中仍然特别强大。用于此 SFT 模型的数据比率与预训练的数据比率一致。我们发现它的整体性能是最好的。用其他比率训练的模型的性能可以在附录E.2中找到。

image.png
image.png


安全性评估

我们还评估了 CT-LLM-SFT-DPO 与 MiniCPM-2B-sft-fp、Bloom-1.7B 和 Stablelm-zephyr-3B 等基线在 cvalues 责任基准上的安全性评分。评估由两部分组成:多项选择题和问答题。多项选择部分包括 1,712 个输入示例,每个示例包含一个人工查询和两个候选响应。被评估的模型需要选择他们认为优越的答案,并将其与标准答案进行比较。问答部分由 664 个输入示例组成,其中 GPT-4 用于对每个模型的响应进行评分。我们使用平均分作为最终表现。用于自动评估的提示显示在附录 D 中。
image.png
image.png
image.png

中文硬指令理解与遵循评价

我们从各种来源收集问题,例如 ziya、gaokao 和 CIF-Bench,以形成硬案例中文指令理解和遵循评估基准(简称 CHC-Bench)。 CHC-Bench 中的问题类别包括写作、人文和历史、科学、数学、阅读理解、角色扮演和汉语理解的难题(即汉语单词发音、 中国古代语言理解等)。

  • 指标:考虑到 20 亿个参数模型的局限性,我们的评估标准不仅仅是响应的准确性。我们还考虑了模型答案的有用性、相关性、准确性、深度、创造力和详细程度等因素。这种综合方法可以对模型的响应质量进行详细评估。具体来说,我们使用 GPT-4 对特定问题上下文中测试LLMs的响应进行评分,评分提示可在附录 C.2 中找到。

image.png

  • 结果:表6显示了我们的模型在CHC-Bench上与其他相同规模模型的性能比较,与更大比例模型的比较可以在附录E.3中找到。在CHC-Benchone中,可以评估模型在特定领域的专业知识。例如,专为编码任务而设计的 Deepseek-coder-1.3b-instruct 以高分展示了其技能。基准测试结果肯定了CHC-Benchin的高质量,准确反映了模型的真实能力。比较研究表明,更大的数据量和更大的模型大小可以提高性能。CT-LLM在20亿参数范围内,在社会理解和写作方面表现出色,在与中国文化相关的语境中表现出强大的表现。

image.png
image.png


六、结论

我们开发了CT-LLM,一个为中文量身定制的大规模语言模型,在8000亿个中文 token 上对其进行预训练,以增强中文语言处理和多语言适应性。与之前严重依赖英语数据集的模型不同,CT-LLM通过关注中文(包括英语和代码标记)代表了LLM研究的新方向。我们使用SFT等技术来提高中英文的性能,并引入CHC-Bench来评估模型在复杂任务中的能力。CT-LLM的主要贡献包括提供高质量的中文语料库和CHC-Bench,解决偏见,推进以中文为重点LLMs。这促进了更广泛的 NLP 研究、创新和对开源社区的贡献。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

江科大笔记

这里写目录标题 片上资源/外设引脚定义表启动配置推挽开漏oc/od 门漏极/集电极 电阻的上拉下拉输入捕获输入捕获通道主从触发模式输入捕获基本结构PWMI基本结构PWMPSC ARR CRR输入捕获模式测频率TIM_PrescalerConfig()初始化输入捕获测频法测周法 PWMI模式测频率占空比定时中断…

C语言---顺序表(二)

文章目录 前言1.准备工作2.代码的实现2.1.顺序表的创建、销毁和打印2.2.顺序表的扩容、头插\删、尾插\删2.2.1.扩容2.2.2.尾插2.2.3.头插2.2.3.尾删2.2.4.头删 2.3.指定位置之前插入/删除数据/查找数据2.3.1.指定位置之前插入数据2.3.2.指定位置之前删除数据2.3.3.查找特定数据…

Okhttp全链路监控

目标: 1).监控网络请求的各个阶段 2)获取每一个阶段的耗时和性能,用于性能分析。包括dns解析,socket连接时间,tls连接时间,请求发送时间,服务器接口处理时间,应答传输时…

44.基于SpringBoot + Vue实现的前后端分离-汽车租赁管理系统(项目 + 论文PPT)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的汽车租赁管理系统设计与实现管理工作…

【数据结构与算法】:10道链表经典OJ

1. 移除链表元素 思路1:遍历原链表,将 val 所在的节点释放掉。(太麻烦) 思路2:创建新链表,再遍历原链表,找到不为 val 的节点尾插到新链表。 思路1代码实现如下: 注意: 1.当链表为空时&#x…

Pytorch: 利用预训练的残差网络ResNet50进行图像特征提取,并可视化特征图热图

1. 残差网络ResNet的结构 2.图像特征提取和可视化分析 import cv2 import time import os import matplotlib.pyplot as plt import torch from torch import nn import torchvision.models as models import torchvision.transforms as transforms import numpy as npimgname…

syscall的检测与绕过

普通调用 #include <iostream> #include <windows.h>int main() {unsigned char shellcode[] "";void* exec VirtualAlloc(0, sizeof shellcode, MEM_COMMIT,PAGE_EXECUTE_READWRITE);memcpy(exec, shellcode, sizeof shellcode);CreateThread(NULL, …

mybaits(8)-缓存机制

缓存机制 1、mybatis缓存2、一级缓存2.1 开启一级缓存2.2 一级缓存失效 3、二级缓存3.1 开启二级缓存3.2 二级缓存什么时候失效3.3 二级缓存的相关配置 4、MyBatis集成EhCache 1、mybatis缓存 缓存&#xff1a;cache 缓存的作用&#xff1a;通过减少IO的方式&#xff0c;来提高…

2024妈妈杯mathorcup数学建模C题 物流网络分拣中心货量预测及人员排班

一、数据预处理 数据清洗是指对数据进行清洗和整理&#xff0c;包括删除无效数据、缺失值填充、异常值检测和处理等。数据转换是指对数据进行转换和变换&#xff0c;包括数据缩放、数据归一化、数据标准化等。数据整理是指对数据进行整理和归纳&#xff0c;包括数据分组、数据聚…

PDF转TXT ChatGPT编程

1.目的 在Z-library找到一本书&#xff0c;只不过是PDF格式的&#xff0c;看的时候体验不好&#xff0c;还没有办法保存记录&#xff0c;就想着能不能转成txt格式放到手机自带的小说软件中看。 不想去网上找相关的软件&#xff0c;可以还需要付钱&#xff0c;所以尝试用ChatGP…

springcloud-fegin 组件调用

一、Feign 概述 Feign是Netflix开发的声明式、模板化的HTTP客户端&#xff0c; Feign可以帮助我们更快捷、优雅地调用HTTP API。 在Spring Cloud中&#xff0c;使用Feign非常简单——创建一个接口&#xff0c;并在接口上添加一些注解&#xff0c;代码就完成了。Feign支持多种…

R: 支持向量机(Support Vector Machine,简称SVM)

在数据科学和机器学习领域中&#xff0c;支持向量机&#xff08;Support Vector Machine&#xff0c;简称SVM&#xff09;是一种强大的监督学习算法&#xff0c;常用于分类和回归分析。它的优点之一是可以适用于复杂的数据集&#xff0c;并且在高维空间中表现良好。在本文中&am…

【示例】MySQL-MySQL中常见的锁

前言 本文主要讲述MySQL中常见的锁。 总结 | 各类别锁的名字 锁级别锁名字解释全局锁read lock全局锁只有可读锁表级锁 - 表锁read lock 表共享读锁write lock 表独占写锁表级锁 - 元数据锁&#xff08;meta data lock&#xff0c;MDL&#xff09;SHARED_READ_ONLYSHARED_NO…

OSPF实验

需求&#xff1a; 1、R1-R3为区域0&#xff0c;R3到R4为区域1&#xff1b;其中R3的环回也在区域0&#xff0c;P1-R3分别有一个环回接口 2、R1-R3 R3为DR设备&#xff0c;没有BDR 3、R4环回地址已固定&#xff0c;其他所有网段使用192.168.1.0/24进行合理分配 4、R4环回不能…

【golang】动态生成微信小程序二维码实战下:golang 生成 小程序二维码图片 并通过s3协议上传到对象存储桶 | 腾讯云 cos

项目背景 在自研的系统&#xff0c;需要实现类似草料二维码的功能 将我们自己的小程序&#xff0c;通过代码生成相想要的小程序二维码 代码已经上传到 Github 需要的朋友可以自取 https://github.com/ctra-wang/wechat-mini-qrcode 一、生成Qrcode并提交到对象存储 通过源生A…

Kubernetes(k8s):深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)

Kubernetes&#xff08;k8s&#xff09;&#xff1a;深入理解 Kubernetes 中的污点&#xff08;Taints&#xff09;与容忍度&#xff08;Tolerations&#xff09; 1、污点&#xff08;Taints&#xff09;2、容忍度&#xff08;Tolerations&#xff09;3、示例演示-测试污点的具…

自动化测试(selenium篇)

这次我们来介绍selenium 我们主要来讲解这几个要点 1.什么是自动化测试 2.什么是selenium 3.为什么来讲selenium 4.selenium的环境搭建 5.selenium的 API 1.什么是自动化测试 自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或者系统&#xff0c;预设条…

蓝宝石衬底材料具有广阔消费市场 行业景气度良好

蓝宝石衬底材料具有广阔消费市场 行业景气度良好 衬底是由半导体单晶材料制造而成的晶圆片&#xff0c;既可以直接进入晶圆制造环节生产半导体器件&#xff0c;也可以进行外延工艺加工生产外延片&#xff0c;是电子元件的主体结构和支撑载体。蓝宝石衬底材料具有良好的透光性、…

burpsuite最新版2024.3.1安装

burpsuite最新版安装 环境 windows jdk22 BurpLoaderKeygen.jar burpsuite profression 2024.3.1 链接 链接&#xff1a;https://pan.baidu.com/s/1N6nggZZezg8y1FHpgwJmeg 提取码&#xff1a;n6uqjdk以及破戒方式这里不做介绍 注意事项 使用BurpLoaderKeygen.jar 破解之后…

Windows 2003 R2与Windows 2022建立域信任报错:本地安全机构无法跟域控制器获得RPC连接。请检查名称是否可以解析,服务器是否可用。

在Windows Server 2003 R2与Windows Server 2022之间建立域信任时遇到“本地安全机构无法与域控制器获得RPC连接”的错误&#xff0c;可能是由于以下几种原因&#xff1a; DNS 解析问题&#xff1a; 确保源域和目标域的DNS配置正确&#xff0c;能够互相解析对方的域名和IP地址。…