刘晓义(00:00:15): 我看看我能不能赶紧再好好,我开麦克风,不好意思。 罗开荣(00:08:21): 我知道我。没有听。让我想起来。How do you know. 罗开荣(00:08:48): 他说你要有一个 global 才叫 global。不用镜像吧,镜像就好,镜像就在反喵喵有吗? 罗开荣(00:09:59): 喂 test 喂喵喵有声音吗?喂有声声远航说有声音。那就有声音。 罗开荣(00:10:35): 不好意思看小说。那就七点零六已经定义六分钟了,重钉钉,七点我就重新钉钉7:03。对今天的新闻那个有没有签,要签那个吗?那个实验室你说 ngp 没了,所以我们就是因为这个原因,所以我们时间不准是吗?喂这有声吗喂?有 ok ok 好,那个欢迎大家来今天的这个金枪鱼之夜,我限时返场来当一下主持人对大家刚刚我们喵会长说,因为今天 borrow 的 nist 的 ntp 时钟源挂了,所以我们这个时间不是特别准,我们就当现在是七点钟。没关系好,那今天我们邀请到拍空 pacone 实验室就是我们组的罗开荣同学来讲一讲这个鹏程 pcmind2.1开源**这个模型,然后开荣同学是差院0字班的本科,然后在计算机系我们所读博士,他是这个讲台上出现过的,至少第三位高考状元。 罗开荣(00:11:59): 前面两位大大家也都认识对,然后这个工作是我们组今年下半年开始做的一个开源模型,这个开源不光是开放权重,也包括数据集,然后包括一些数据集的清洗的管线包括。其他的更多的代码,包括训练系统等等,那么希望能给学界也好,其他研究者爱好个人爱好者也好,提供一些思路,然后让大家更容易的来复现这样的工作,那么具体的就由潘荣同学来给大家介绍。 罗开荣(00:12:32): 喂,大家好,能听见吗?Ok 是能听见,首先非常感谢哈主席的介绍也非常感谢喵喵的邀请,然后今天就和大家来介绍一下我们组最近的一个工作鹏程脑海2.1开源两地这样一个模型。首先和大家做一个 warmup,就是尤其是对于可能没有那么了解大模型预训练的这样一个流程的同学,我们来做一个背景的一个快速的一个 catchup 吧。这里我这里做了一个用 nanobanner 搞了一个这个 demo 图给大家一个形象的理解,就是说这个整个模型的训练其实一般分为三个部分和阶段,首先你需要 collect 的一个原始的 data,这当然可以包括你说 huggingface 下也可以是爬虫,然后第二个步骤往往是去做一些对原始数据的预处理和清洗。 罗开荣(00:13:25): 这个就包括说你去做去重打分,还有 filtering 这些步骤,然后第三才是真正大家传统意义上说我们去做模型的训练,然后这里最核心的一个部分是这个 nexttoken prediction 的一个部分,这个是整个大模型预训练的一个 pipeline,然后对于不了解的同学,我们可以做一个形象的比方就是大模型预训练就和你。去做一道菜是一个很像的过程,那么你首先需要去准备真正的这些原材料,然后拿到原材料之后,你需要去做一个清洗和处理,然后最后才是你去做一个混合以及。 罗开荣(00:14:03): 炒菜的一个过程,所以这个是让帮助大家快速的 catchup1下这样一个模型训练的一个整个流程,然后这里最核心的部分其实是这个 nexttoken prediction 的算法。用一句话来说,其实是一个非常简单的原理,也就是猜下一个词。那么猜下词,这里要去学的就是说大家往往是用一个神经网络去学这样一件事就是如何去猜下一个词的分布。 罗开荣(00:14:28): 为什么现在会出现这样一个大模型时代,或者说这个事情和之前大家在 deeplearning 时代做了什么不一样的,最核心的就是说 larger different 随着这个模型的规模以及数据量的规模的变大。 罗开荣(00:14:41): 那么这个效果会越来越好,超过一个 specialized 的出现,这个涌现的一个能力,那么是为什么现在大家都在做,或者说关注大模型这样一个问题,但是这样一个 skillup 的一个结果也带来新的问题,就是说你对于一个模型训练的过程,你是很难复现,尤其对于学界或者开源界来说,你完全不知道这个模型的训练过程,它是怎么,它用了什么样的数据。为什么它是具有现在能力和结果,然后对于学界去理解这个模型,它的能力的产生也造成了一定的影响,然后我们今天想介绍的这样一个系列,其实是叫全开源大模型。然后我们的宗旨是希望能够让大模型训练更加的普及,这里的背景是这样的大模型进一步发展和广泛应用。其实最关键的是会需要一个领域支持的一个有效注入。现在大家采用的方法很多时候是利用一些持续训练或者 rag 的方法,另一方面是目前大家在说到开源模型,或者说这个跟大模型相关的开源的时候,可能应用脑海的是像千问 deep seek 或者 glm 这些模型。但是这些模型训他们的这个预训练数据通常是不公开的,而如果你要去做持续的预训练,你是要做一个预训练数据和领域数据的混合,另一方面是这些开源的模型,他们只虽然开源了他们模型的权重,但这些权重往往经过一个很重度的微调,你在这个模型的基础上去做持续训练的能力是更弱的。 罗开荣(00:16:13): 那么如果我们能够去 buildup1个全开源的模型,那就能够让模型的训练更加普及,尤其是对于领域模型是更加容易建构,这里我们在讲到全开源模型的时候,就不只是指开源权重。也包括在训练过程中使用到的数据集处理这些数据所用的清洗的数据管线,以及对应的训练的方法。这个是我们这个工作想给开源界带来的一个贡献。 罗开荣(00:16:45): 那么目前这个问题的现状是怎样,然后又有哪些挑战?首先是一些有利的因素,现在已经有一系列的这个大规模开源的数据集,例如 dclm fang web。这些通过清洗公开网页的数据或者是公开的代码网站的数据得到了一个初赛,在数据集,他们的这个规模也达到了。T token 以上是给你去做全开源的预训练提供了一个很原始的数据的基础。那么第二是现在其实已经有了一些全流程开源的模型,比如说美国 Alanine,他们发布了 omo 系列。还有像这个人大的玉兰,他们的这个系列是一些有利的因素,那么问题就来了。既然已经有了这一些全开源的模型,那么为什么我们还要继续去关注这件事和做这件事,那其实这里有两个点,第一个是这个国产算力的因素在中美对抗加剧的今天,如果我们有一天用不上 media 的。卡那我们该怎么办?所以这里就需要大家能够去具备一个利用国产的算力做大模型预训练的能力,尤其是对于开源界来说,更是有这样的需求。 罗开荣(00:18:03): 第二是降本增效。目前的语言模型训练在大家脑海中往往等价于高成本和高投入。那么,如何去做这个降本增效,把训练的规模,尤其是数据的规模降下来。那么能够区妹大模型的训练,推进大模型,真正的去改变各个子领域,或者说下游领域的一个发展,是我们希望能够从这个起点看到的一个事儿。 罗开荣(00:18:32): 然后这里做了一个比较形象的一个例子,就是说,在这个全开源的模型训练中,它是怎么样的一个有哪些怎样的挑战,我们可以想象这样一个场景。假设你是一家做教育服务的一个企业,那么你有很多的私有数据,它特别宝贵,你是不希望去外泄给其他人,让他来帮你训这个模型的?然后这个数据的量级能够达到一,比如说100tb 以上这样一个量级,然后你去你这在这个情况下,你是很难用 rag,因为比如说它并不是一个 willorganize 的一个数据库的形式。 罗开荣(00:19:07): 那同时如果只是去做一个微调的话,这个数据量它就太大了,那么这个时候你就会有一个持续训练和预训练的需求,那么这就会有几个问题,一个是你大家可以看左上角就是说你怎么样去找到一个合适的数据集,或者说去做一个混合,你可能有代码的,数学的,中文的,英文的,怎么把这些好的数据选出来做混合这个事情。然后第二是往往这个下游领域,你的钱或者你的 budget 是受限的,你很难去做一个,比如说10B 乘10T 这个量级的一个预训练。另外你的这个数据可能会有很多的一些噪声,那怎么去做一个好的清洗,这个也是一个挑战,尤其是在大规模的情况下,目前怎么找到一个良好的数据处理的框架,这样也是一个问题。比如说如果你在用这个国产的卡,例如我们现在用的这个910a,那么它他可能会有一些训练稳定性的问题,那么怎么来去维护避免这个问题。 罗开荣(00:20:13): 作为这个具体展开这里,它对应的就是回到我们刚刚那个比方,如果你在做一个做菜的话,那它对应的什么样的一个问题,首先是你要怎么去挑选原料,你原料它尤其是好的原料,其实很稀缺的,那另一方面你可能没有多少钱。还有你可能需要有非常多的人力来去做,比如说预处理怎么样去把这个数据原始的数据清理好,最后你的这个锅可能也不够,怎么用,用这样一个可能比较糙的一个这个锅。能煮出一盘好菜,其实是整个这个 pipeline 是我们希望解决的几个核心的问题。然后具体来说,这里的问题包括说现在的这些全开开源的预训练数据集,它的特点很不一样,质量非常的参差,尤其是高质量的样本是非常稀缺的,那么我们怎么去做这里的筛选和混合。 罗开荣(00:21:12): 那第二是我们如何去优化训练的策略去提高数训练数据的利用效率。比如说怎么样用2T 的一个数据能够去逼近你去用5T 或者10T 的一个效果,实现一个有限资源下的高效训练。然后对于这些开源的预训练数据,它的规模大,那我们是需要有一个开源的数据处理的系统来去对这个数据做一个清洗和处理。对于我们还有一个很现实的需求是如何在全国产的算力下,尤其是一些有精度问题的情况下去做这种稳定训练,这个是我们真正面对的一个困难和挑战。目前对于这部分背景以及现状的挑战的这个部分,大家有什么问题,线上和线下大家同时可以提问。 罗开荣(00:22:04): Ok 如果没有问题的话,我们就进入到我们的这个结果部分就是我们的这个脑海2.1开源两地主要有这样三大 feature。第一个是我们精炼数据做高效训练,也就是说我们其实用了一个比较少的一个数据量大概2G 左右来去达到一个开源的 frontier 的一个效果。第二是我们。如何实现这样一件事,其实我们就设计了一些更加高效的训练策略,然后我们的这个结果目前是全流程开源,而通常意义的开源就像刚刚提到的,其实指开源最后的模型权重,那在我们的结果,我们把这个数据集数据处理的系统以及训练的框架,还有这个训练策略,我们都做了一个开源。 罗开荣(00:22:50): 然后还有最后一个 feature 是说我们的整个过程就是全国产算力模型的训练,我们用的是华为生成的910a,这个只支持 fp16的一个精度。然后数据处理部分,我们是用的这个鲲鹏920来做的一个处理,所以其实我们是某种程度上是在一个困难模式下去做这样一个训练的事儿。 罗开荣(00:23:14): 然后这个是我们整个模型的 performance 的一个结果,这里标绿色的原点是目前大家可能比较主流的,或者说 sota 的这种全开源的模型,包括由这个 huggingface 他们搞的这个 small lm 系列,像人大的玉兰系列,还有像这个 alan intel 的 omo 系列。那我们能看到在 performance 和这个参数量的一个二维轴上,我们其实达到了一个帕累托的最优现在模型效果其实也比一些仅开源权重的模型也要好,比如说这个 llama3.21b,比如说这个 gemma 的2b google 的,然后像 lama3.2的3D 就是我们在效率和效果上也能看到。 罗开荣(00:24:02): 酱油目前我们还是和,比如说千问系列是有一些差距的。 罗开荣(00:24:22): 这个一定程度上也是合理的,因为就是跟千问的同学们去聊的话,他们是肯定用了一些蒸馏的这个蒸馏的这些技术们其实某种程度上都是从这个原始数据集出发去做训练,所以目前其实还是会存在一个。 罗开荣(00:24:39): 一定的差距,这个是我们整体的模型的一个效果的评价,然后尤其注意我们现在这个横轴定义的是总参数量就是模型的这个训练,它其实主要有两部分的参数,一部分是叫这个 nonembedding 的一个参数,还有一部分是 embedding 的参数。那么这里我们是把这两部分都做了一个求和来做对比,然后这个是我们的一个在 modelcard,就是我们基本的一些参数信息,我们的模型总参数量是**但其中这个 non embedding 参数量部分大概是1.4G 左右训练的 token 是2.2T,我们训练前的总数据量可能大概要超过15。 罗开荣(00:25:20): 记得投看我们整个训练过程是基于鹏程实验室的云脑二,用了这个1024张的910A 去做这个训练,那训练的时间可能大概在12天半左右,总共的训练采用了一种动态数据配比的一个五阶段的一个训练,也分成了五个 face 去做整个训练的过程。这个部分到目前为止,大家对这个结果有什么疑问吗?线上线下的同学都可以提问。 罗开荣(00:25:58): 我们是规模比较小,是端侧的规模。Ok 然后接下来我就和大家分享一下一些这个技术上我们的一个处理的点,其实这个地方我们主要是从这个数据端去做一个提升,因为我们注意到,其实对于这样一个规模的模型,以及对于开源社区,其实最核心的问题是在数据。因为开源权重模型,其实大家是能 access 到它的这个模型的结构的,那么对于开源预训练的数据,它有什么特点?这有我们强调两个这个一个方两个方面,第一个方面是它的这个数据量很大,规模可能都是在 tb 以上,这个就需要你在数据处理框架具有一个这个 scalable 的一个。能力,第二个是训练数据集,它的特点是各异这个质量非常的参差,那么就会导致一个问题是你需要去做一个筛选与混合。类比回刚刚你再煮一道菜的例子,那你有不同的原料,但是在这个做菜的过程中,你到底盐加多少水加多少,你的每一部分的原料要加多少,其实往往就是一道菜,它成功还是不成功的原因。那么,同样的模型训练中如何解决这个问题,在即使是这个闭源的模型或者一些方 tearlab,这也是一个比较重要的问题。而最后的我们最终的目标是希望从各个开源的这种数据集中选出它最精华的部分来混合出最终的训练数据。 罗开荣(00:27:45): 那么这里两个具体的问题,第一个问题是现在有这么海量的一个数据,比如大于等于15T 头。那我用什么样的办法能选出它的高质量部分,第二个是如何去比较一个不同数据集之间的质量好坏关系。例如说你的这个你的数据集虽然也是文本,但是它可能偏小说,那它的数据集可能更偏百度百科,那你如何去比较?两个两种文本之间,他们孰好孰坏,这个其实是一个很困难的问题。那现在有一个比较有利的因素是可以注意到,或者说这其实是一个长期被忽略的一个因素就是开源的数据集,往往包含了这个质量标签。 罗开荣(00:28:26): 对于数据集内的筛选是容易的。例如说下面我举了这一个中文数据集的例子,那么它其实是附了一个 score 的一个 column,那么你可以基于这样一个质量标签去做一个筛选。即使在这种情况下还是存在一些挑战。第一个挑战是开源的预训练数据集,它的重复率其实是非常高的,所以它还是需要去做一些数据集的全局模糊去重。这里举了两个例子,一个是 dcmbaseline 它其实是一个目前比较经典的或者比较主流的开源的数据。那通过这个全局模和去重,可以发现它的重复率可能高达80%还有像这个比较主流的这个 fanweb edu chinese e2.1这样一个数据。那它作为中文数据集里一个比较主流的部分,它的重复可能接近50%那么重复率高,它可能会有几方面问题,一方面它会对你的成本造成影响,相当于你要过更多的数据,并且你的这个存储需要有更多的更高的代价。 罗开荣(00:29:33): 另一方面是一个数据集它一个数据,它在训练过程被过了多次,那么它很可能会被模型记住,而不是学会影响模型一些泛化的能力。这个都会对模型训练有影响,然后第二个是刚刚提到了一个数据集内,我们是能去做,比如说质量的一些筛选和对比,但是对于不同的数据集,这个质量是无法横向比较的。不同家的数据集,它的质量标签是不统一,大家没有一个统一的质量评判的标准,比如说我这里列出来的可能有 dcm 有翻译外的笔记,就有这个 omo 就各种各样的数据。这个地方它存在一个统一的标尺的问题,我们就针对这样的提出了两个方面的解法。 罗开荣(00:30:19): 对于挑战一,我们是提出了一个基于 spark 和诸葛弩的一个高效易用的数据处理框架。这个我这。这里的回应的挑战就是刚刚提到的挑战。一我们这样一个开源 spark 框架,它是这个基于 spark 以及这个基于我们组之前一个叫诸葛弩的工作来提高这个执行的效率。然后我们设计的是一个树状处理管线的框架。 刘晓义(00:30:49): 和我们的客。 罗开荣(00:30:49): 也就是说,数据处理的整个 pipeline 利用压的一个 config 去做一个管理,那么相当于大家如果看我们这个 release 出来的一个数。 罗开荣(00:31:00): 这个数据集的部分的话,会发现就是我们可以通过比如说五个 face 的对应的这个压模文件,那么通过这些文件,你就能刻画出整个这个数据混合的一个方式。然后我们的整个框架基于 spark 的这个框架,它是一个比较易用并且可拓展的,而且它对于这种排序,还有去重这样一些方式支持的方式比较好。这个和我们的算法在某种程度上是一个 codedesign。然后这里我大概列了一些开源的中文数据集去重的结果,那我们能发现这里可能包括比如说百分之多数的数据集可能重复率在24%分之一左右,那有些可能在50%附近。这里我们还是能看到有一个去重的必要,这个我们也能做一个比较好的去重。然后第二个部分?就是数据集内没有做一个完全全完完全全全局的一个系统。 罗开荣(00:32:09): 然后第二个部分是做我们提出了一个叫分位标定的方式来比较这个数据质量也就刚刚提到了这个挑战二,不同的数据集质量,它是没办法横向比较,没有一个统一的标尺。那我们就去想怎么样去找一把统一的尺子,那么我们的解决思路就是去通过一系列的小规模实验去做质量打分和下游表现之间的映射,把这个东西作为一个统一的评价标准来评价不同的数据集。 罗开荣(00:32:40): 具体而言是这里我们叫这个 quantile benchmarking 的一个方式。我们可以看上面这张图就是它代表了它描述的是有某个数据集内,它的质量分数分布的一个 curve。那么我们会在一系列的,比如说0.5B到10B 这样一个 gail 的小模型上,在一系列取定的这个框。比如说在这个百分之零附近最好的20%附近最好的40%附近最好60%附近去取一系列这个小的数据集的这个 batch 作为我们叫探针数据。就你可以想象,我们是在测探这个分布附近,它数据质量是如何的,然后第三步是我们会在两个场景下去做小模型训练的一个小模型的训练和评估,一个是左图这种 fromscratch 的一个训练,也就是说从头来训一小段来看看这个。这个训出来小模型它效果如何,还有一种是做持续训练,一开始已经有一定的基础能力了,然后我们再看这个数据集,在这个 checkpoint 下持续训练后,它对这个模型能力的提升有怎样的帮助来对这个。数据它对应的质量分布能有一个理解和认识,这个是我们做 quantilebenchmarking 的一个方式。 罗开荣(00:34:07): 它的逻辑我们能够去构建一个从它的各个处于自身的分数到下游表现的一个映射。然后当然大家可以理解一下,这里其实我们有某种隐藏的一个假设,就是我们认为这个数据的质量,它随着它真正的这个分数。其实是在某个维度上是单调来变化的,这样我们才能用这样一个方法能有一个比较好的刻画,然后基于 ok 线上的同学有一个。 罗开荣(00:34:41): 疑问。关于数据集去重感觉跟具体的模型。关于数据去重这个感觉跟具体的模型没有关系,为什么当时公开的时候不是公开去重的数据集 ok 这个我们认为是可能这个去重本身它其实是有力度上的一个区别,因为大家在去重的时候。一般用,比如说 minhash 这样的方式,它可能是有一些参数可以调的,那么随着你的这个 threshold 跟 hard,那它对应你要付出的一些代价其实是更大的,那么对于一些数据集来说,他们做的力度可能就更。但我们刚刚提到的,我们其实因为我们的这个框架支持的比较好,所以我们其实是能够在同样代价下去做一些更 aggressive 的这个全局的 diffusion。 罗开荣(00:35:37): 然后接着我们来通过我们刚刚那个 quantilebenchmarking 的方式,我们是能够去得到一些结果和观察,就其实目前大家有一个经常会探讨的问题,就是说 dclm 的 baseline 以及 fiveweb edu 这样两个数据集,他们的质量是谁比较好,这两个数据集其实都是现在开源数据中比较主流的一个。属于在这个情况下,因为它在整个数据集中占比很大,那我们其实是要对它们的相关关系有个了解。那我们其实现在观察是说这个数据集它其实很难看去评价一个绝对的好坏,而很大程度上是取决于评价的标准,以及数据集本身的一个特点。 罗开荣(00:36:23): 我们可以先看这个左图是叫是在一个叫 mlu 的这个 benchmark 上评价出来的。随着你取的这个框,它有不同的位置,然后得到的这个小模型,它的分数的一个变化。那我们能看到在这个 benchmark 上你用翻 webedu 这样一个数据去训出来的小模型,它的分数是基本上。就是能压住这个地声 baseline 的,那其实,在这种更偏知识能力的维度上,我们是能看到发现 web 的 edu 其实是占优的。但是我们比如说去看像这个 winnowbread 这样一个 benchmark,它其实是更偏理解这样一个榜单,那我们能看到出这个。这个 dclm baseline 它其实在多多数位置是比这个 fine web edu 来的强,那某种程度上直观的理解就是 dclm 这样的一个数据集,它其实是更利于理解类的这个。 罗开荣(00:37:26): 能力的提升,和他们数据集的产生方式是有关系的。edu 它这个数据集在筛选的时候,它的方式就是侧重一些知识量和信息量的一个 filtering,而 dcm baseline 他们的这个侧重其实是通过,比如说叫一个叫 explain like i'm five。假设我是一个五岁的小孩,请解释给我听这样一个数据集,作为正向的一个这个一个正向的 example 来去做的筛选,那么在这种情况下,它其实就相应的会更偏这种理解类的。能力。 罗开荣(00:38:09): 然后还有第二个观察是,我们会发现这个数据集内,它样本之间的质量差距是非常大的,例如最和最差的数据集在像 arc1这样的榜这个 benchmark 上,它的这个差距是能达到8%甚至15%以上。我们可以看左边就是一个风 scratch 去做训练的这个 benchmark,那我们注意到像第3baseline 这样的数据,它在70%左右这样一个位置的数据和它最好的那一部分数据的这个分数能差到15分以上。然后像如果你是从你做一个 resume 的训练,也就是说从之前一个 checkpoint 继续训,那我们发现,比如说对于翻 webedu 在这个榜单上,60%的这个位置的数据和最好的数据能差8%以上,那这个差距。其实是非常惊人的,但它反映出的不同的这个数据集,它特征侧重点是不同,而且它内部的分布和质量差距是非常巨大的。 罗开荣(00:39:14): 那这里同时会有两个机会和挑战,第一个是我们注意到,其实这里高质量数据占比非常的小10%到20%之间的这样一个数据,它能提高给一个非常大的一个 benefit。但是能看到这个 benefit 的这个 margin 是非常大的,相对于它 overall 的一个水平来说,那么这就 propose1个问题叫说我们如何在预处理和训练这样的一个阶段,去利用好数据它分布的一。个不均匀的这样一个性质来去提升我们训练的一个效率,然后这个就会对应我们接下来想讨论的更高效的一个训练策略。 罗开荣(00:39:59): Ok 那先对于上面这个部分,大家有什么问题,线上线下的同学就是我想问一下,刚才提到那个数据集内部他给了一个 score 然后但是也提到在评价这个不同数据集的时候,我们也看到可能有不同的指标,它评价出来的情况是截然不同的对。 罗开荣(00:40:20): 那么它数据集内的这个 scores 是怎么定的,然后它为什么就是我们这一个前提条件就是我们认为它是可信的,那么就是这个是否还需要有更多的讨论,或者说是不是应该用我们这种评价方法去重新评估这个事情。 罗开荣(00:40:37): Ok 这是个很好的问题,就是首先不同的数据集,它的刚刚我们提到的背景部分,其实不同的这个数据集,它们的评价的方式是非常不一样的,像比如说刚刚提到的这个番外的 edu,它其实是用大模型去先采了一个 example1些 example 做打。分,那他打分的维度可能就比如说从他文本的受教育反映出来,受教育程度,信息量这些维度去做打分,然后再通过这个打分的部分去训一个小的模型,然后再用那个小模型去对整个数据集做一个打分。那么。还有像比如说刚刚提到的这个 dclm,它可能就是在选的样本数据上有一些差别,它就可能不是利用刚刚提到的大模型,从一些受教育程度,信息量这些维度去可能选了一个叫,就刚刚提到那样一个。其实更偏解释性的一个数据集作为它的指标。那么所以所谓回应你刚刚的问题,就是每个数据集它构建的时候有它自己的一个逻辑和道理。是第一个点,然后第二点是说为什么不能全部用我刚刚说的这样一个事情去做一遍。这里其实有一个难度是这个事情它其实还是有 cost 的,因为你训了一个0.5B 乘10B 左右一个规模的 cost,那么如果你对于一个这个特别大的数据集,对于所有的数据都去做这样一件事情的话,它对应的代价是比较高的。 罗开荣(00:42:06): 在我们实际的操作中,我们其实也是选了一些在整个训练数据中占比比较大的数据集,比如说刚刚提到的这个 fineweb 以及 dcom,还有一些中文的主流的数据集去做了一个 benchmarking,这个是。我们处理这个事情背后的一个逻辑,它是一个这个正确的逻辑和实际的 implementation 之间的一个 checkoff 对。那感觉就是 quantilebenchmarking 就很难做,因为不同数据集,它甚至评判的标准是不一样的,我们再想把它对齐,这个似乎不是一件很容易的事情。 罗开荣(00:42:44): 怎么解决问题。ok 就其实这个我们为什么就 ok 刚刚是问题的背景。那现在其实就您刚刚提的这个问题,其实正是我想要去做这个 quantumbenchmark 的原因。因为现在这样的一个基础上,我们就把所有的问题都投射到了同样一个维度,也就是同样一个 benchmark 上。例如它可能用了两种不同的打分器去打分,但是我现在训了这么多小模型之后,它反映出来的都是在 mlu 这样一个任务上的。这个能力的差距或者是都是在这个 windowgrad 这样一个任务上能力的差距,那么也就是说它原来虽然它的分数的这个标尺是不一样的,它现在是被对到了同样一个尺子上。 罗开荣(00:43:25): 那么接下来的事,其实难点是在我们怎么去选,我们想要它在哪个 benchmark 上能力,或者说想要这个模型,它在哪些 capability 的这个维度上能有一个比较好的提升,来去选定我们怎么去配这个数据。是这样一个逻辑。举个例子,比如说我们在去看这个 mou 的时候,比如说我们希望的是我们,你说它是刷榜也好,或者说我们在模型能力的 design 也好,就我们去想提升这个模型的知识能力,知识性。他能打很多东西,那么我们就去会关注 mu 这个榜那一个很简单的方式,比如说我们可以看就在切到这个30%这个位置能看到 dcombaseline 和这个翻外比 edu 是比较好的。那过了这个 dcm 这个30位置之后,它的这个。就开始衰减,那么这样一个就有一个很直观的一个 mixing 的方式,就是说我就取这个地下 baseline 它前30%的数据配上所有的这个翻 webedu 的数据。 罗开荣(00:44:25): 能对我们去做数据的配比提供一个指导,是背后的一个逻辑。对简单 summary1下就是说,它虽然可能一开始有很多不同的维度,但我们现在某种程度上给它投影到同样一个比较维度上。然后利用这样一个公共的比较维度来确定,比如说两个数据集之间的一个权重的关系。Ok 如果大家没有其他问题的话,我们来讲解就是我们一个训练策略上的一个方式,这里我们其实主要采用了两三种方式,一个是叫多阶段去调整数据比例,一个是去做领域混合的课程学习,以及最后做了一个权重平均。 罗开荣(00:45:10): 首先是这个训练策略,就是我们做了一个动态数据比例的多阶段训练,这里的逻辑是方法和逻辑是这样的,就是我们去不对不同的这样一个训练阶段是动态调整数据的比例,因为训练的过程它往往会有个遗忘的效应,你在放在前面的数据放在后面的效应。重要性程度是不一,越往后的一个数据它是越重要,那么因此我们会把我们更加关注的一些能力维度放到后面,比如说中文数学代码这些领域,那对应的就是我们能看到这些色块就是最开始的第一个 face 我们可能上了非常多这种 general 的数据,英文的数据。然后接下来慢慢的紫色,绿色对应的是数学和代码的,它的色块的大小都在慢慢的提升。 罗开荣(00:46:04): 在最后两个阶段,我们会放一些,比如说 sft 的数据在最后这样一个阶段,那它对应的就是我们刚刚提到的一个考虑,就是越往后这个 base 它的这个数据是比较重要的。其实某种程度上是对现在大家去做 meetchaining,或者说这个持续训练的一个拓展,然后刚刚提到是在这个领域内,我们领域间我们怎么做的,然后对于领域内我们也是类似的一个思路,就同一个领域内,我们数据集,它的丰富度以及它的平均质量。随着这个 face 的增加也是不断的提高的,其实有两重的一个因素,第一重是我们这个训练,随着新的训练的进行,无论是在这个 lab 或者是在实际公司里,往往都会不断的补充一个新的数据,所以动态的加入新数据,这件事情是一个很现实的情况。第二个是刚刚我们的动机。我们会希望去把数据平均质量去调高,把数据的精细程度调高,所以我们会发现我们在后后面不断的把一些我们前面评测出来,认为质量比较高的数据补充进去,这个是刚这个跟刚刚前面的逻辑是一致的,但执行的程。这个力度上稍微有一些区别,在此基础上就会出现一个问题,那刚刚我们多个 face 它的数据。 罗开荣(00:47:31): Ok 这里有一个线上同学有个问题,就是说这个数据的比例,它有没有公式和算法的指导,这个是没有的,因为这个东西它即使是在现在最领先的公司,我理解这东西多数还是一个拍脑门拍出来的东西,或者是可能会在小就如果算力比较充足的一些公司,他们可能会在。 罗开荣(00:47:55): 小规模上先去做一些配比的实验,然后来去指导他们在大规模上的一个配比,但多数情况下就是结合刚刚提到的经验也好,或者是我们刚刚提到 benchmarking 的方式也好,来去做这样的一个。事情对具体的,就比如说刚刚 benchmarking 能够指导的就是我刚刚提到的,我们怎么去配向 fangweb 和 dcm,因为我们能看到像 fan web 和 edu fan web edu 和 dcm baseline 其实就占掉了英文领域里。可能大概90%或者百分百百分之八九十这个量的数据,那么我们如果能通过刚刚提到 quantilebenchmarking 把这个事情搞得比较精细一些,那么其实就解决了主要的一个配比的问题。那在此基础上就会有一个新的问题,就是说你在不同的 face 间数据是不是能重复的,那这里我们发现通过小规模实验,有一个比较有意思的观察。 罗开荣(00:48:58): 众所周知,现在做大模型预训练,一般数据集是只过一遍的,也就是一个 onepass 的一个圈,但我们发现在等算力的情况下,如果你适当的取出数据集高质量的部分去做重复的训练,它是可能会比单轮训练来的强的。比如说这里展示的这个第二行,我们可能选了最好的三分之一的数据,然后在 dcmbaseline 它第一个分片大概30B 的一个 token 的这样的量。取得最好的三分之一,也就是取得大概最好的十倍,那对照组就是下面 uniform,那他用30G 训一遍,那实验组就是我们这里,尤其看我们看第二行就是我们取了 top三分之一,然后训了三遍。那结果会发现,你在训了重复三遍,是你取了一个少的部分,重复三遍,它平均下来它的这个 performance 可能还是有提升的。 罗开荣(00:49:56): 这里又会涉及到一个度的问题,例如我们看到最上面一行,如果你重复了,你可能就取了大概六分之一到七分之一,你重复了六到七遍,那么它可能会在像 mou 这样的 benchmark 上刷的非常高。你会发现它可能由于某些能力维度被过度的强化,它是损害了一个平均的能力,那么这就会导致我们要去做一个对高质量数据的可控重复,要有选择的重复,并且不能重复太多遍。那这就会涉及到我们一个,一方面是涉及到我们刚刚提到的这个全局去重,为什么我们要做一个非常 aggressive 的全局去重,就是我们保证多数的数据集,它只出现一遍,这样我们能去做非常精准的控制。 罗开荣(00:50:42): 然后第二个是我们会做一个比较有策略性的,或者是非常符合直觉的一个高质量的数据集,我们要可以多重复几遍,那么这里我举了一个例子就是翻 webedu。在全局去重之后,我们在后四个 face 也就2345这四个 face。它的这个采样是从全部采用百分百,然后第三个阶段50%下一个阶段30%最后一个阶段10%。这就意味着最好的10%的数据。其实在这四个过程中,它都出现了,它重复了四遍,而比如说最差的50%它只在第二个 face 出现了一次,那么这样就能利用质量,它就有两个好处。第一,它确实见过这些数据。第二,它出现的比较早,它只出现一次,那么它那些 noise 的部分,它可能就在整个过程中,随着它的遗忘就。消耗掉了背后的逻辑是这样,我们发现这样的一个组合虽然是也是比较合理,并且能够提升这个效率。 罗开荣(00:51:42): 然后再往后一个方式叫做这个混合课程学习,加上一个多 trackpoint 的权重,平均乍一看好像有点奇怪,那其实这个是我们最近在前一段时间另外一篇论文的结果。我们会有一个观察,或者说好奇,如果你的学这个为什么课程学习这个东西,也就是说你的这个样本有一个序的你的样本可能是从简单到难,或者从低质量到高质量,它有一个序。那么这样一个序的策略,为什么在目前的大模型训练中很少被采用,那我们发现这个跟学习率的问题是有关系的,如果学习率不衰减的时候,那么你去对样本做一个质量打分或者排序,也就是传统意义上的课程学习,我们去将这个高质量的样本后置,我们发现它是能提高训练效率。 罗开荣(00:52:34): 那么具体而言,就是这样一张图,就是左边这样一个例子,那么这个点画线是大家常见的一些学习率调度器,也就是 learning rate schedule。比如说这个虚线是这个 cosine子线是目前被采用比较多的这个叫 wfd,而如果你去做课程学习,那我们可以看到绿线,也就是你的这个分数,这个 quality 的 score,它的这个分布是这样一个上升的曲线。就会在最后的那个区间出现,你用了非常高质量的数据,但是你用了一个非常低的学习率这样一个情况,那我们发现这个学更要低的学习率,对于它这个模型去学这些这个数据是有坏处的。 罗开荣(00:53:19): 能不能看右上角这张图,如果你用的是一个常数学习率,看点画线就是它这个常数学习率,那我们能看到绿色那条线,也就是说你去做了一个升序的质量排序,你的最好数据是放在最后的,那么它在训练后期其实是能利用好那一部分。质量特别高的数据反超掉,比如说你用一个均匀的顺序去训,但是如果比如说你用这个大家常用的这种 cosine 的 learning rate schedule,那么它的这个 performance 就没有办法去 match 到你用一个均匀的。 罗开荣(00:53:55): 数据排布去做训练的结果,那么这里它背后的原因就是刚刚我们提到的,你用了一个很高质量的数据,但是你用了一个很低的学习率,它是会损害对这一部分数据的学习的。那么我们是不是就可以说我们就不去衰减学习率来配上课程学习它是不是就更好,但其实也不因为你在训练过程中会有很大的训练噪声。这部分训练的你不降低学习率,他训练的造成很大训练 loss 更高,那这个时候我们采用了一个解决方法,其实是一个非常经典的,叫做这个 modelaverage,或者说 weight average。对多个 checkpoint 去做权重平平均,比如说用 exponential moving average 去降低这个噪声的影响,那这个方法我们就叫做 cma curriculum model average。 罗开荣(00:54:53): 作为一个课程学习和权重平均的加权,那下面是我们做的一个 ablation 的实验,那我们会发现在你的数据总量不变的情况下,你去做这样一个权重的加权,那它即使在筛选过的 bclbaseline 这样的数据上,它还是能有一个一个一个一个 performance 的提升的。然后我们还做了一个更精细的比较,也就是说我们不完,我们去测这个学习率去做不同程度的衰减,也就是说它既不是衰减到零,也不是完全不衰减,而是说 decay 到一个不同的位置。 罗开荣(00:55:34): 这里的横轴,那我们再去看我们采用一个课程学习,加上权重平均的策略,它会得到怎样的效果。上面的这条红线就是我们采用的这个 cma。的方式也就是这里标的 ascend 加 ema,那么我们会发现它会比通常的做法,也就是下面标的 uniform 加 mwsd 来的好。然后对应的就是我们新观察到的一个红色框框出来的更优的一个区间,和之前大家会关注到的一个。一个区间。同时我们还发现,如果你只做其中的一部分是不足的,比如说你用了课程学习,但你没有做权重平均你去做这个 dk,或者是你没有去加课程学习,而是只用了权重平均。那他其实都没法 match 到我们,或者说没法稳定的 match 到我们现在采用的这种 cma 的一个方法,那么是我们在小规模实验下得到的一个结果。 罗开荣(00:56:45): 这会以?线上同学有提问说这个 wsd 最后掉分有点诡异 ok 这个问题是这样的,因为我这里的横这个横坐标,它其实表示的是你的最终的学习率的一个大小。那么如果你的学习率开的太大,也就是说你完全不做学习率的筛减,那么你对应的你训练噪声是非常大的,那么在这种情况下。 罗开荣(00:57:16): 你的这个 performance 它就是会往下掉,所以这个是掉分的一个原因。对是线上同学刚刚的提问,然后再下一个问题,就是在这种情况下,我们怎么样去 adapt 这样一个观察和策略到我们实际的训练中,这里我们有一个新的问题,如何去构建多领域的一个课程学习。因为你怎么去做到领域之间,它的比例是均匀的,但是你领域间使得它的数据质量是有一个排序,这里我们讲解决思路就是说我们去做一个。就是出多步的一个方式,首先第一步我们会去领域内做一个单调,然后第二个是做一个类似于你做一个 mergesort 的时候去做一个。交叉的妹,那么最后的话,你可以通过这个 residual 之后的一个分数去把不同领域的这个数据并在一起得到最后的结果,那么它最后就能保证说你的这个。不同领域之间,它的比例是均匀的,但是你在每个单看每领域这个数据质量又是一个单升单调增的一个方式,然后采用现在这个方式的话,它也能和我们用的这个 struct 框架是能够 align 起来的,这个是我们去构建多领域课程学习的一个方式。 罗开荣(00:58:46): 然后就刚刚提到的,因为我们要用 cma,所以我们对学习率也需要有一定的设计。那在我们的实验中,大家看这个左上角就我们 decay 到的大概是在六亿负四这样一个六乘十的负四次方,这样一个 scale 相对于大家常用的这种 decay 到零的设计,其实是。比较高的,我们是为了保证,尤其在最后废除一个这样比较高的数据,个比较高质量的数据配比下,它还是有一个合适的学习力去做学习的。 罗开荣(00:59:17): 然后我们看左下角的话,它这个 loss 的图它会有一个快速的 drop,这个对应的是我们在750步附近的时候学习率的 drop 所导致的,因为学习率降低,它对应的会有一个 loss 的一个快速降低。然后这里大家还会注意到这个 chiningcurve 它好像也不是大家通常意义的 power law 的一个下降,而是可能再往后它的这个下降会很快。这个也是这个和右边那张图大家会看到一个比较反常的你的这个 validationloss,或者说你的 evaluation loss 在往上涨,这两个事情也是耦合在一起。 罗开荣(00:59:57): 为什么会出现在这个情况,其实和刚刚前面讲到的我们的策略是有关系的,就是我们代码和数学的比例是在往上增加的,而这两种数据集它本身的 ppl 是或者说它对应的这个 loss 就是比较低的,那么它会导致你它的占比增加就会导致你。平均算下来你的 trainingloss 是在往下降的。那另一方面是我们的 validationset,或者说我们去观察做 evaluation 的这个 validationset,它的是一个 dcom 的子集,也就是它更偏这个 web data 的性质。那么你的数学和代码它的比例增加的时候,你的 validationset 也会因为你的数据分布的变化而随之有上升,所以这个是目前这几张图,大家能够抽出来的一些信息。目前这部分大家线上和线下有什么问题吗?对于我们整个训练的策略和多阶段的一个方式。 罗开荣(01:01:02): Ok 好,如果没有问题的话,我们就最后讲一讲我们在国产范例,尤其是在这个生成910a 上去做训练的一些经验吧。首先第一个挑战就是来自于精度受限的挑战10a 它主要只要支持这个 fp16,也就是那它的这个数值范围是比较小。而大模型训练过程中,其实是很容易出现离群值,就是因为你前向反向之后,然后再加上这个现在 transformer 的一个结构,它是有残差连接的,所以你的这个数值上,它其实是往往是很容易边训边变大,那么它就会出现这个离群。而离群值本身又会是平均值的数倍,它就会很容易溢出,而溢出的话,它可能会先出现上移,就是你的不断的出现离群值的叠加和这个。 罗开荣(01:01:53): 这个数值的变大,那么他它就会反过来导致你的 losssteel 降低这个 lossscale 是大家之前在 fb16上训练的一个经验,你再去算这个 loss 的时候,会再乘一个比较大的常数来保证它的 gradient 不会接近零。如果你出现上亿了,那它对应的常数就会。缩小变小,那变小就对应的是下面那张图,它快速的从一个很大的值,然后这个衰减到零附近,那这个反过来就会导致你的部分梯度会突然变得特别小。然后在零的出现梯度消失,衰减到零附近,那么最后它这两个因素一叠加,就会导致你的 loss 上升,出现训练的崩溃,也就是看到大家看到右边你的 loss loss。快速的趋近于零,然后你 loss 开始往上翘,这个训练就这个出问题了。那这个的话我们前前期做了很多的一些分析和调研,最后发现它其实有两个位置的张量是特别容易出现溢出的,一个是对应的是 attention 的时候,它那个对应的 logic。还有你去做左边的。Logic 还有就是你在那个 threegroup,也就是你在 feed forward 层以及你在最后的那个输出的那个 lm head 那个 mp,它的那个 output 位置,这两个位置是很容易出现。 罗开荣(01:03:21): 数值上的溢出的,那么我们就采用了两种模型结构上的调整来去解决这个训练稳定性的问题。第一个是这个 qknome,也就是说大家一般去算。Attention 的时候就是 qk,然后再除以一个根号 D 做这个 soft max 之前。而现在我们采用策略会在过这个去算 attention 之前,先对 qk 过一个这个 imnorm 把它的数值压下来。然后第二个是我们会去解对应刚刚我们上图看到的对应 attention 那个 logic 溢出的一个情况的解决方案。然后第二个是我们会发现这个。就对应前一个刚刚提到的这个在 ffn 前附近出现溢出的情况,我们提出了这个 sandwichnorm sandwich norm 其实很形象,也就是我们比如说在 attention 和 ffn 它的前后之前,大家是要不然加 pre norm,要不然加 post norm,那我们。那两个都加上就跟叠三明治一样的,把这个实际的层叠在中间,那这个东西叫三,这个东西它就会使得我们可以看右图它这个做结构优化,前后一些数值上它会显著的被控制住,训练就明显的更加稳定。 罗开荣(01:04:37): 由此我们可以去对,就是由于国产算力它这个数值精度的问题去做一个解决,然后最后我们会大概过一下我们的模型的结构以及训练的参数,然后我们模型结构上其实主要是参考了这个千问31.7B 的一个设计。因为我们没有去用这个 timeembedding 所以我们 non embedding primer 和它一样是1.4B 我们的这个 embedding primer 是它两倍,那么所以它是0.3B 我们就0.6B 所以总共是**。然后我们上述采用的就刚刚提到的像这个 qknorm sandwich norm 还有一个叫 soft caping 的技术是主要在 output logic 用的,我们词表也是参考了千问系列,所以其实我们的主要的一个贡献其实集中在的是说是稳定性,是数据的处理方面。然后这里 learningrate 和 size 其实大部分还是通过小规模实验的一个结果以及经验来确定。然后刚刚也看到我们采用了这个 dynamicloss skill 的这样一个手段来处理一个非常经典的手段来处理这个 fp16溢出的一个问题。然后这里我们的一个 window 是20,这样它使得 lowscale 能够非常灵活的来应对这个溢出的一个问题,那最后我们可以快速过一下,我们整个评测的一个榜单。 罗开荣(01:05:59): 这里,首先我们可以看到像在中文数学和代码这些方面能力上,我们平均下来大概在46分左右,那这个可能是比像 GEMMA2**比如 google 他们只开源权重的模型,其实还要来的高,然后我们也比像,比如说 smalllm1.7b,也就是说 non embedding primary 的大致是差不多的这样一个模型。我们的这个结果也是要显著的高的,然后对于像大家比较关关注的这种比较常见的 reasoning 和 knowledge 的一些 benchmark,也就是反映模型 general 能力的,我们的这个分数大概是67.74和像玉兰 MINI2.4B,比我们。这个才大上一圈的这样一个模型,其实它的我们这个 performance 也是差不多的,然后最后的总表的话,那个数其实也就是我们刚刚开头看到的,这里我们的 averagescore 它的一个分数和位置,然后如果我们 recap1下就是。基于刚刚我们一系列的方式和手段,最后我们的能够达到一个参数和 performance 上一个这个号也是最优的一个效果。 罗开荣(01:07:10): 还有一个事情就是这个我们那个,哈哈哈,主席他这个做的就是非常仔细的做了一个 license 的一个 check。然后我们最后再通过 appendixb 去 check 了一下这个 license,因为今天算是所以特地要强调一下这个事儿。对,然后这里我们还特地强调了一下,就为什么没有用 MNIST 也是一个和泛外的 edu 以及地相 baseline。类似的一个比较主流的开源数据集,但我们在训练过程中没有采用,因为对 media 他们的 license 里面其实是不允许对这个数据的重分发,以及对他们 statistics 的一个接接接入。所以我们其实是把他们排除在我们 claim 的这样一个全开源的系列之外的,然后最后是对未来的一个展望,也就是说我们接下来可能会考虑要去做的,比如说低精度低成本的一些训练,还有一些就是再把我们现在这个高校数据训练一些事情做一个推广。 罗开荣(01:08:15): 以及做一些跟现在后面要跟 posttrain 相关的一些问题,这个都是一些跟 general 的一个 step,然后最后这里附了一个大家,这个我们全开源的一个全开源的一些链接就是。包括我们的模型,我们的数据,我们的处理框架,我们的训练整个。结果的一个链接,如果大家感兴趣的话,就是欢迎来看,给我们一些 feedback 然后这个今天的报告就主要是这些非常感谢大家的聆听,然后最后 one more thing 就是这个 join us 然后这里列了一下我们 group 的一个网站,然后我们导师是陈文光老师欢迎。大家如果对这个 project 感兴趣的话可以联系我,也联系这个 to 纳的元老,也就是这个主席。确实。确实。如果对这个感兴趣的话,联系我或者联系这个出纳的元老主席,然后我的微信是这个,如果大家对今天这个 talk 感兴趣,或者对我们这个项目感兴趣的话,可以加一下加我的微信,我们可以进一步的有。 罗开荣(01:09:38): 稍微讨论,然后我刚刚看这个线上还有同学有个问题说对于溢出的问题前向的时候做 norm 和更新的时候做 clip 其实是两种不同的方法。针对问题也不一样,对这你说的对,就是这里的 clip 我可能这里没有仔细的展开,就是这里的 clip 我们其实也不是做了一个 hardclip,而是做一个 soft clip,也就是说之前可能是大家不是过了一个数值就把它掐掉,而是说。我们会过一个 tanh个非线性映射,然后把它的数值范围控制在比如说某个常数以内,而不是完全把那个结果 clip 掉,这个可能也是我不知道是不是能解决这个问题。 罗开荣(01:10:22): 然后线下和线上的同学,大家还有关于这个 talk 或者是关于其他的问题都可以提问或者对。除了这个计算精度的问题,在升腾上训练和在 nv 的卡上训练没有其他的区别吗?ok 这里其实还有一个点就是它的通信的问题。就是这个是刚刚就刚刚有些同学可能会问的,比如说我刚刚说我们为什么我们用的是没有采用这个餐饮白纸,为什么不直接把千问的那个?千问31.7B 的抄过来,这里其实有一个考虑,就是如果要用它 embedding 的话,你就会有对开始和结结束那个 share embedding 这样一个通信。但是对于华为深腾它的这个它这个10a 它通信其实就没有那么好,所以我们就做了一个 chatterbox 我们。宁可多算一部分,我们不去做这个参数的共享,那这个可能也能回应你的一个问题,就是这个设计其实也和它的它的一个性质也有关系。 罗开荣(01:11:31): 还有一个问题是,就是比如你前面做对于数据的质量的评价的时候也是用的就是所有的那些各种评价标准平均来评价吗?还是算术平均这样,这是个很好的问题。刚刚也提到了刚刚那位同学也提到了,就是现在其实有很多的一个维度的 benchmark,但事实上我们是有侧重的,我们其实基本上会主要关注 mlu 这个维度,因为就像刚刚提到你这两个维度基本上是相反。如果你对他去做一个评估的话,那他很可能是看不出太多的效果的。所以这里其实是某种程度上是做了取舍,就是我们更希望就是右边,那个 top。就是最最分数最高的反而是在右边是分数不高的? 罗开荣(01:12:32): 线上或线下大家还有其他问题吗? 罗开荣(01:12:50): 首先 dcm 打分器,它就 dcm 这个事情,他自己就是把这个事情做了,他就是从 cc 里洗出来的。然后所以他其实是把这个事情做了。所以我理解您的说,为什么不用 dcm 那个打分器,把所有数据都打一遍。这个逻辑就是我们觉得他那个打分器其实不够好,因为就真正你想关注的你也不是说他那个分数越高越好,而是你想关注的是这些。 罗开荣(01:13:15): 比如说你想看这个 mou 反映出来这个能力维度它越高越好,这两个东西其实不是完全的 line 的。就比如说,如果你看这个看看右边这个数字是比较非常明显,像 dcm 它对分数最高的那一部分数据,它可能在 vinalgrade 上,反而可能没有。比如说15%到60%之间这个区间的数据来的好。然后如果你去看 dcm,它的这个数据分布也会发现。其实它分最高的那个部分,它的数据的长度是偏短的,就是它 sequencelength 是比它的 average 来的短的,所以这某种程度上都反映出来。 罗开荣(01:13:52): 目前的这些大家有一句话叫便宜没好货,就现在就是你用 dcm 这种打分器,它是一个 fasttext,那个东西它其实很容易去捕捉一些这个叫 serious,就是说一些比较浅层的一些特征。很难去。就是它很难去捕捉一些比较,这个可能就是它很容易去 capture 出一些浅层的一些特征。那么在这种情况下,如果我们但你要去用一个比如说小的模型去把所有东西打变的话,它又太贵了。所以这个东西某种程度上是一个折中,就是你可以用这个东西去快速打变,然后作为一个单调性的标识,然后我再给它印到同样一个,比如说 benchmark,或者说能力的这个维度再去做一个细致的。 罗开荣(01:14:46): 大概是这么样子? 罗开荣(01:15:01): 那没有问题,今天感谢大家的参与! 罗开荣(01:15:34): 人现在是会议的功能。因为我刚刚电脑掉了。或是丢掉,因为腾讯会议现在就是人出去了,或是就会变。然后再重新加上就是扣后。