| | | | | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | | [A2 Systems](A2%20Systems.md) | 1. [[Triton]] 实现 [[FlashAttention]]<br>2. 多机 NCCL Pipeline [分布式数据并行 DDP](分布式数据并行%20DDP.md)+ [优化器状态分片技术](优化器状态分片技术.md)。 | 建好 NVTX/ Nsight Profiling 流程 | | [A3 Scaling](A3%20Scaling.md) | 调参 + 调用训练 API 拟合 Scaling Law 使用 IsoFLOP 拟合 Scaling Law。为了模拟训练运行的高风险,学生会获得一个训练 API[超参数→损失]和一个固定的计算预算,并且必须选择提交哪些运行来收集数据点。在后台,训练 API 是通过在一系列预先计算的运行之间进行插值来支持的。 | 先读 OpenAI 2020 Scaling Law 论文 | | [A4 Data](A4%20Data.md) | 从 Common Crawl 原始档抽取‑去重‑过滤 将 Common Crawl HTML 转换为文本,过滤(质量、有害内容、PII),删除重复数据。这是一项苦差事,却没有得到足够的重视。 | 学 `warc` 解析、Bloom Filter 去重 | | [A5 Alignment](A5%20Alignment.md) | [[监督微调 SFT]] + [[PPO]]/RLHF 解决数学题;可选 [[DPO]] Safety 实现监督微调、专家迭代、[[GRPO]] 和变体,在 Qwen 2.5 Math 1.5B 上运行 RL 以提升在 MATH 上的指标。我们也曾考虑过让学生自己实现推理(inference),但决定(可能是明智的)让人们使用 vllm。 | 复习 RL 基础、PEFT LoRA/QLoRA | # Notes - [一、数据 + 模型 + 算力](#%E4%B8%80%E3%80%81%E6%95%B0%E6%8D%AE%20+%20%E6%A8%A1%E5%9E%8B%20+%20%E7%AE%97%E5%8A%9B) - [1.1 算力](#1.1%20%E7%AE%97%E5%8A%9B) - [1.2 模型](#1.2%20%E6%A8%A1%E5%9E%8B) - [1.3 数据](#1.3%20%E6%95%B0%E6%8D%AE) - [1.3.1 有哪些数据](#1.3.1%20%E6%9C%89%E5%93%AA%E4%BA%9B%E6%95%B0%E6%8D%AE) - [1.3.2 基础的数据处理方式](#1.3.2%20%20%E5%9F%BA%E7%A1%80%E7%9A%84%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E6%96%B9%E5%BC%8F) - [二、数据 和 模型参数 的最佳比例?](#%E4%BA%8C%E3%80%81%E6%95%B0%E6%8D%AE%20%E5%92%8C%20%E6%A8%A1%E5%9E%8B%E5%8F%82%E6%95%B0%20%E7%9A%84%E6%9C%80%E4%BD%B3%E6%AF%94%E4%BE%8B%EF%BC%9F) - [三、如何加速训练过程(提效)](#%E4%B8%89%E3%80%81%E5%A6%82%E4%BD%95%E5%8A%A0%E9%80%9F%E8%AE%AD%E7%BB%83%E8%BF%87%E7%A8%8B%EF%BC%88%E6%8F%90%E6%95%88%EF%BC%89) - [四、后训练阶段的微调](#%E5%9B%9B%E3%80%81%E5%90%8E%E8%AE%AD%E7%BB%83%E9%98%B6%E6%AE%B5%E7%9A%84%E5%BE%AE%E8%B0%83) - [五、思考](#%E4%BA%94%E3%80%81%E6%80%9D%E8%80%83) ## 一、数据 + 模型 + 算力 ### 1.1 算力 [[FLOPs]] > **FLOPs ≈ 6 × 模型参数量 × 训练数据量 (tokens)** ### 1.2 模型 [[Transformer]] ### 1.3 数据 #### 1.3.1 有哪些数据 | 数据源 | 规模 | 质量 | 成本 | 适用场景 | | ------------------ | --- | ------- | ---------- | ------- | | [[Common Crawl]] | 极大 | 中等(需清洗) | 免费 | LLM 预训练 | | [[维基百科Wikipedia]] | 中等 | 高 | 免费 | 知识密集型任务 | | [[reddit]]/Twitter | 大 | 较低 | 部分免费 | 对话/社交文本 | | **Books Corpus** | 中等 | 高 | 有版权限制 | 长文本理解 | | **自己爬取** | 可控 | 可控 | 高(技术+法律成本) | 特定领域 | 几乎所有主流 LLM 都使用 Common Crawl 数据: | 模型 | 使用的数据集 | 基于 Common Crawl | | --------- | ---------------------------------- | --------------- | | **GPT-3** | WebText | ✅ | | **T5** | C4 (Colossal Clean Crawled Corpus) | ✅ | | **BERT** | BooksCorpus + [[Wikipedia]] | 部分 ✅ | | **LLaMA** | [[Common Crawl]] + 其他 | ✅ | | **GPT-4** | 未公开,但很可能包含 | ✅ | #### 1.3.2 基础的数据处理方式 [[数据清洗]] + [[数据去重]] + [[分词]] + 分片 + 验证 | | | | | -------- | --------------------------------------------------------------- | -------------------------------------------- | | | | **原理** | | HTML 转文本 | [[HTML]] 中提取文本 | HTML 解析库 [[resiliparse]].`extract.html2text` | | 文本过滤 | [[自然语言处理 NLP]]中的[[文本分类]]中的语言识别任务 | [[FastText]] | | | - 隐私保护:训练数据中不包含真实邮箱<br>- 数据清洗:识别并标记敏感信息<br>- 标准化处理:统一替换格式便于后续处理 | [[正则表达式]] | | | 高低质量分类 | 基于规则的文本分类<br>哪类关键词出现次数更多,就归为哪类 | | | [[NSFW]]检测 | [[FastText]] | | 去重 | 精确重复 | 行内容的 [[SHA‑256]](不碰撞哈希)计数表([[哈希]]表), | | | 模糊重复 | [[minHash]] + [[LSH]] | | 分词 | | `tiktoken`‑like [[BPE]] | | 分片 | 每个分片包含固定数量的 token 或字符 | 分成 60 个 10GB 的 `.bin` 文件 | | 验证 | | | ## 二、数据 和 模型参数 的最佳比例? [[学习@]]:学而不思则罔,思而不学则罔。 学习时间固定的情况下: 1. 时间分配:90 小时冥想训练大脑 + 10 小时做题 结果:智商暴涨,但只见过 50 道题 → 考试遇到新题型懵逼 ``` **对应**:GPT-3 (175B 参数 + 300B tokens) → 模型太大,数据太少,过拟合 ❌失败策略 2. 时间分配:5 小时思考学基础 + 95 小时疯狂刷题 结果:做了 10000 道题,但脑容量只记住了 100 个模式 → 大量重复劳动 ❌失败策略 [A3 Scaling](A3%20Scaling.md) ## 三、如何加速训练过程(提效) [A2 Systems](A2%20Systems.md) 1. 计算方式的优化 [[RMSNorm]] 2. [[Triton]]、 [[kernel]] GPU加速 3. **分布式训练** (`test_ddp*.py`) [分布式数据并行 DDP](分布式数据并行%20DDP.md)、**Reduce 的是数据,Map 的是梯度** 4. **内存优化** (`test_sharded_optimizer.py`)、[优化器状态分片技术](优化器状态分片技术.md) ## 四、后训练阶段的微调 | [A5 Alignment](A5%20Alignment.md) | [[监督微调 SFT]] + [[PPO]]/RLHF 解决数学题;可选 [[DPO]] Safety 实现监督微调、专家迭代、[[GRPO]] 和变体,在 Qwen 2.5 Math 1.5B 上运行 RL 以提升在 MATH 上的指标。我们也曾考虑过让学生自己实现推理(inference),但决定(可能是明智的)让人们使用 vllm。 | 复习 RL 基础、PEFT LoRA/QLoRA | | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | | [监督微调 SFT](监督微调%20SFT.md) | - **OpenAI 的微调模块**:<br> 通常采用监督学习的方式,你上传标注好的 JSONL 数据,然后选择一个基座模型,系统会利用这些标注数据对模型进行微调,调整模型的参数使其更适应你提供的训练数据。<br> | | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | [[DPO]] | 核心思想就是选 A 不选 B | | [[PPO]] | PPO就是让AI"保守地学习",避免一次更新就大幅改变行为,确保训练稳定可靠。 | | [[GRPO]] | 这就像**让一个学生做同一道题多次**,然后告诉他哪些答案更好,帮助他改进! | [[benchmark]]很重要 [[强化学习(Reinforcement Learning)]] [[微调实战 -- 用Open-R1微调Qwen模型,强化AI数学推理能力]] ## 五、思考 1. 智慧的本质 1. [[维特根斯坦]] 2. 对社会来说: 1. 智力和电力等价,除了上述知识似乎没有知识值钱了,甚至上述知识也不值钱了 3. 对个人来说: 1. 不能用结构化的思维去考虑和解决很多问题,比如行程规划。 1. 模式复制的压缩 vs 规律穷举的压缩 2. 具身智能是骗局 3. 深耕一个领域到 common sense 以上的 ROI 并不高。以前花十年变成律师还有意义吗? 4. 如果能达到 common sense 以上,收益会很高。最值得投资的是产品、代码技能 5. 对个人来说,最快完成多领域知识结合的商业闭环更有意义,钱=资源=电