Generate AI手册 -- 第III部分:现代语言模型基础

在网上读到一篇非常不错的博客,特意将其翻译为中文,分享给大家。原文可以引用:
@misc{Brown24GAIHB,
author = {Brown, William},
title = {Generative AI Handbook: A Roadmap for Learning Resources},
year = 2024,
url = {https://genai-handbook.github.io}
}

\(\rm{III}\)部分:现代语言建模的基础

目标:调查与训练 LLMs 相关的中心主题,重点是基础概念。

在这一部分,我们将探索许多概念,这些概念将带我们从仅解码器 Transformer 架构走向理解许多当今前沿 LLMs 的实现方式选择和权衡。如果你想先从鸟瞰图的角度了解本节和以下一些节的主题,Sebastian Raschka 的 “Understanding Large Language Models” 的帖子是一个很好的总结(至少直到 2023 年中)。

第13章:Tokenization

字符级Tokenization(像 Karpathy 视频中的几种)对于大规模 Transformer 来说往往不如单词级Tokenization高效,但简单地选择一个固定全词“字典”(例如韦氏词典)会冒着在推理时遇到未见过的单词或拼写错误的风险。相反,典型的方法是使用子词级Tokenization来“覆盖”可能的输入空间,同时通过使用像 Byte-Pair Encoding(BPE)这样的算法来选择适当的token集,从而保持来自更大Token池的效率增益。如果你在初级算法课程中见过霍夫曼编码,我认为这对 BPE 来说是一个有用的类比,尽管输入输出格式明显不同,因为我们事先不知道“Token”的集合。我建议观看 Andrej Karpathy 的Tokenization视频,并查看 Masato Hagiwara 的这个 tokenization指南

第14章:位置编码

正如我们在前一节中看到的,Transformer 本身并没有像 RNN 那样对上下文窗口内的邻接或位置有相同的概念,位置必须通过某种向量编码来表示。虽然这可以通过像独热编码这样的东西来简单地完成,但对于上下文扩展和可学习性来说,这是不切实际的,因为它放弃了序数的概念。最初,这是通过正弦位置编码来完成的,如果你熟悉,这可能会让你想起傅里叶特征;当今最流行的实现可能是旋转位置编码(Rotary Positional Encoding,RoPE),它在训练期间更稳定,学习速度更快。

资源:

第15章:预训练步骤

一旦你决定在特定语料库(例如 Common Crawl,FineWeb)上预训练一个特定大小的 LLM,在你准备开始之前,还有一些选择要做:

  • 注意力机制(多头、多查询、分组查询)
  • 激活(ReLU,GeLU,SwiGLU)
  • 优化器、学习率和调度器(AdamW,预热,余弦衰减)
  • Dropout
  • 超参数选择和搜索策略
  • 批处理、并行化策略、梯度累积
  • 训练多长时间,多久重复数据
  • ……还有很多其他维度的变量

据我所知,没有万金油的规则来指导你如何进行,但我将分享一些值得考虑的资源,这取决于你的兴趣:

第16章:分布式训练和 FSDP

与训练模型相关的一些额外挑战是,模型太大而无法装载在单个 GPU(甚至多 GPU 机器),通常需要使用像完全分片数据并行架构(Fully Sharded Data Parallelism,FSDP),这样的分布式训练协议实现在训练期间模型跨机器共存。它的前身分布式数据并行架构(Distributed Data Parallelism,DDP)值得去理解,在下面链接的第一篇文章中有所涵盖。

资源:

第17章:Scaling Laws

了解Scaling Laws作为一个元话题是有用的,因为它在 LLMs 的讨论中经常出现(最突出的是在引用“Chinchilla”论文时),比任何特定的经验发现或技术都要多。简而言之,通过扩大语言模型的大小、数据和计算的规模,可以对模型损失做出相当可靠的预测。这样就可以校准最佳超参数设置,而无需运行昂贵的网格搜索(grid searches)。

资源:

第18章:混合专家

虽然许多著名的 LLM(如 Llama3)今天使用的是“密集”模型(即没有强制稀疏化),但混合专家(Mixture-of-Experts,MoE)架构越来越受欢迎,用于在“知识”和效率之间权衡,可能最值得注意的是在开源世界中的 Mistral AI 的“Mixtral”模型(8x7B 和 8x22B),并且据传用于 GPT-4 。在MoE模型中,对于每一步推理,只有一小部分参数是“活动的”,训练好的路由器模块用于选择在每一层使用的并行“专家”。这允许模型在规模上增长(也许是“知识”或“智力”),同时与同等规模的密集模型相比,在训练或推理方面保持高效。

参见 Hugging Face 的技术概述博客文章 ,以及 Trelis Research 的可视化解释视频

posted @ 2024-07-28 12:22  不秃头的程序员不秃头  阅读(41)  评论(0)    收藏  举报