DeepSeek LLM

news/2025/2/1 18:45:46/文章来源:https://www.cnblogs.com/zz-w/p/18696425

一、背景动机

  1. 开源社区的关注点:LLaMA 之后,开源社区主要关注训练固定规模的高质量 LLM(如 7B、13B、34B 和 70B),而对 LLM 的缩放定律研究探索较少。

  2. 缩放定律的重要性:当前开源 LLM 仍处于 AGI 发展的初期阶段,因此研究扩展定律对于未来发展至关重要。

  3. 缩放结论的分歧:早期研究(Hoffmann 等人,2022 年;Kaplan 等人,2020 年)对计算预算增长时的模型和数据扩展提出了不同的结论,并未充分解决超参数的影响。

  4. 研究目标:本研究广泛探索 LLM 的缩放行为,主要应用于 7B 和 67B 规模的模型,以奠定开源 LLM 未来扩展的基础。

  5. 关键研究内容

    • 研究 batch size 和 learning rate 随模型规模的缩放规律,发现其趋势。
    • 研究数据和模型规模的缩放关系,揭示最佳的模型/数据扩展分配策略,并预测大规模模型的性能。
    • 发现不同数据集的缩放定律存在显著差异,表明数据选择对缩放行为影响较大,在跨数据集推广缩放定律时需谨慎。

二、做了什么

  1. 收集 2 万亿个代币进行预训练,主要使用中文和英文。
  2. 在模型层面,我们通常遵循 LLaMA 的架构,但用多步学习率调度器取代了余弦学习率调度器,在保持性能的同时促进持续训练。
  3. 从不同来源收集了超过 100 万个实例用于监督微调 (SFT) (Ouyang et al., 2022)。
  4. 分享在数据消融技术中不同 SFT 策略和发现的经验
  5. 利用直接偏好优化 (DPO) (Rafailov et al., 2023) 来提高模型的对话性能。

三、预训练

主要目标: 全面增强数据集的丰富性和多样性

3.1 数据预处理

方法分为三个基本阶段:重复数据删除、过滤和重新混合。
其中,重复数据删除和重新混合阶段通过对唯一实例进行采样来确保数据的多样化表示。过滤阶段提高了信息的密度,从而实现了更高效和有效的模型训练。

重复数据删除

扩大了重复数据删除的范围。因为与在单个转储中删除重复数据相比,对整个 Common Crawl 语料库进行重复数据删除可以提高重复实例的删除率。表 1 表明,与 91 个转储相比,在 91 个转储中消除重复数据删除的文档数量是单个转储方法的四倍。

Note: "转储"(dump) 指的是某个时间点抓取到的完整网页数据的存储文件。例如,Common Crawl 定期抓取互联网上的大量网页,并将这些数据存储在不同时间的快照(转储,dump)中。

单个转储(Single Dump)指的是某次抓取的完整网页数据快照。例如:
2023 年 1 月的 Common Crawl 数据 → 这是一个单独的转储
2023 年 7 月的 Common Crawl 数据 → 这是另一个独立的转储
传统去重方法 主要在单个转储内部执行,即在同一次抓取的数据范围内查找并删除重复的内容。

image

过滤

在过滤阶段,我们专注于为文档质量评估制定稳健的标准。这涉及结合语言和语义评估的详细分析,从个人和全局角度提供数据质量视图。

重新混合

在重新混合阶段,我们调整了解决数据不平衡的方法,专注于增加代表性不足的域的存在。这项调整旨在实现更加平衡和包容的数据集,确保充分代表不同的观点和信息。

3.2 分词器 (Tokenizer) 设计与实现

实现了基于 Huggingface tokenizersBBPE(Byte-level Byte Pair Encoding) 算法(详见;我的另一篇博客:),分词策略与 GPT-2 相似,主要特点如下:


1. 预分词(Pre-tokenization)

目的:防止来自不同字符类别的 token 进行合并,提高分词合理性。

  • 防止新行、标点符号和 CJK(中文-日语-韩语)字符合并
    例如:

    "你好,world!"
    
    • 无预分词 可能会生成错误的 token,如 ["你好", ",world", "!"](错误合并)
    • 使用预分词,确保 ["你好", ",", "world", "!"](正确拆分)
  • 数字拆分为单个字符

    • 2024 → ["2", "0", "2", "4"]
    • 这样有助于模型更好地处理数字,而不是将整个数字作为一个 token。

2. 词汇表设计

  • 训练数据:分词器在 约 24GB 的多语言语料库 上进行训练,以适应不同语言的文本处理需求。
  • 词汇表规模
    • 常规 token 数量:100,000
    • 额外增加 15 个特殊标记(例如 [PAD], [UNK], [CLS], [SEP] 等),使最终词汇表达到 100,015
    • 训练时词汇表大小配置为 102,400,为未来的扩展预留空间,提高训练计算效率。

3. 设计考量

  • 兼容多语言:预分词策略确保 CJK 语言与拉丁字符的合理处理。
  • 优化计算效率:调整词汇表大小(102,400)避免计算资源浪费,并预留扩展空间。
  • 对数字的特殊处理:确保数字以单字符 token 形式存储,提高泛化能力。

4. 关键贡献

  • 改进了 BBPE 分词策略,在 多语言数据上优化 了分词规则,确保更合理的 token 结构。
  • 通过 GPT-2 类似的预分词方式 避免字符类别混合,提高模型的输入质量。
  • 设计合理的词汇表大小,在保证计算效率的同时,为未来扩展提供空间。

3.3 模型结构

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

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

相关文章

24-25Web开发技术#SpringBoot综合项目实战e1

选用IntelliJ IDEA Community Edition 2024.2 将reggie作为项目(Project)打开 开发环境搭建 系统开发及运行环境 JDK安装尽量遵循原项目的配置,在Oracle官网下载JDK11需注册Oracle账户,较麻烦。 在https://jdk.java.net/archive/找到11 GA (build 11+28)下载Windows版本的压缩…

星球助手发布更新v1.4.0

星球助手发布更新v1.4.0,重要的更新内容有 ​添加了展示评论的功能,可复制评论内容,可展示图片 添加下载评论中的图片的功能 修复了帖子文字展示不全的问题 修复了问答帖子无法搜索的问题 修复了当帖子有多张图片时无法完整显示图片的问题 修复了下载用户信息报错的问题 修复…

CTF-web-POST

1.照样是打开题目链接2.翻译源代码,仍然是向url添加“?what=flag” 3.但是这题需要用hackbar添加4.得到flag

7.机房预约系统

机房预约系统。需求文件目录代码 机房预约系统.cpp #include<iostream> #include "Identity.h" #include<fstream> #include<string> #include "globalFile.h" #include "student.h" #include "teacher.h" #include…

CTF-web-GET

1.打开题目2.翻译原代码,要求添加"?what=flag"3.得到flag:flag{0e8b036fa161804be74c7f33161dc451}

JFrog Artifactory 系列6 --- 其他配置

一、概览 1. 承上启下 JFrog Artifactory 系列 二、其他配置 1. Token过期时间三、参考 https://jfrog.com/help/r/artifactory-intermittent-403-errors-while-working-with-artifactory

新春“码”启 | Cocos 3D 开发微信小游戏(第4天):游戏资源设计和框架核心源代码

新春开发 Cocos 3D 微信小游戏计划的第 4 天,包括游戏资源设计建议,如 UI 背景自适应、碰撞检测组件选用;游戏控制逻辑设计方面,包括组件层级管理及核心代码框架,还有配置中心和消息中心代码,所有的资源与代码均可免费下载……放飞自我的时光总是过得很快,一晃春节就过去…

动手学大模型应用开发,第2天:调用大模型(下)

五、调用智谱 AI 1. ChatGLM 大模型 智谱 AI 是由清华大学计算机系技术成果转化而来的公司,致力于打造新一代认知智能通用模型。公司合作研发了双语千亿级超大规模预训练模型 GLM-130B,并构建了高精度通用知识图谱,形成数据与知识双轮驱动的认知引擎,基于此模型打造了 Chat…

《浅谈树拓扑序计数相关问题的一些方法》阅读笔记

才发现原来我不会拓扑序计数。临时补一下。树拓扑序计数 叶向树拓扑序计数 朴素的做法是 dp 然后归纳,但是论文给出了新解释。 考察一个简单的拓扑序生成方式:你有一个集合,初始为空,每次选择树中不在集合里的一个点,取它最浅的不在集合里的点,加入集合,重复操作 \(n\) …

MyBatis之万能的map

在映射的mxl文件中写sql语句时,可以将parameterType设置为map,这样就可以想传什么就传什么,废话不多说,上代码 insertUser2和insertUser的区别是,前者传递的是map,后者传递的是User类,如果User类的属性很多的话,后者这种传递方式需要定义一个对象,并且实现每一个属性…

昆明理工大学计算机25考研面试真题

--昆工昆明理工大学计算机技术人工智能软件工程网络空间安全计算机系统结构计算机软件与理论计算机应用技术网络与信息安全408考研综合程序设计891计算机专业核心综合数据库系统原理

提示工程 (Prompt Engineering)

概念 提示工程也叫 指令工程。调优不知道训练数据怎么办?高质量prompt 核心要点:具体、丰富、少歧义本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/18696337