- # why - # what - 大语言模型在训练之前需要做的一些准备工作以及[[超参数]]的设定。 - # how - 搜集数据 - 数据通常来自大规模互联网文本数据(维基百科、网页、书籍、社交媒体、新闻、电子书等) - 进行清洗,参考[[FineWeb]] - 爬虫抓取 - 删除网页的`html`标签,只留纯文本 - 删除重复数据 - 移除个人身份信息等 - 数据量:15 万亿 token,44TB 储存空间 - gpt-3.5最终有 1750亿个权重,与训练数据 token 数量相当,这里面有什么联系?[[预测即压缩压缩即智能,智能即具备理解力]] - 举例子 - |GPT-3 dataset 数据集 | token | 采样比例 | | ----------- | ----- | ---- | | CommonCrawl | 410b | 60% | | WebText2 | 19b | 22% | | Books1 | 12b | 8% | | Books2 | 55b | 8% | | Wikipedia | 3b | 3% | - | LLaMA dataset 数据集 | sampling prop. 采样比例 | Epochs 训练次数 | Disk size | | ------------- | ------------------- | ----------- | --------- | | CommonCrawl | 67.0% | 1.10 | 3.3TB | | C4 | 15.0% | 1.06 | 783GB | | Github | 4.5% | 0.64 | 328GB | | Wikipedia | 4.5% | 2.45 | 83GB | | Books | 4.5% | 2.23 | 85GB | | ArXiv | 2.5% | 1.06 | 92GB | | StackExchange | 2.0% | 1.03 | 78GB | - [[tokenization]]词元化 - 将互联网上的自然语言数据通过编码方式(如 BPE 编码),转换为一系列的「整数序列」,这个过程叫做词元化。 - 每个token有固定的、唯一的Token ID - 这些 token ID 组成了模型的[[词汇表]] - GPT-3 词汇表:50257 - 在预训练**开始前**: - 创建一个 token Embedding矩阵(随机初始化权重),形状为:(50257, 12288),每个token ID对应矩阵中**固定的一列**。 - 创建一个 position Embedding矩阵(随机初始化权重),形状为:(2048, 12288),每个[[batch size|批次]]数据的长度对应矩阵中**固定的一列**。 - |超参数||| |--|--|--| |词汇表| 50257|每个 token 都是一个独立的 token ID| | 上下文窗口| 2048|模型的工作记忆,超出这个范围的会被忘记。理论上可以无限长,限制是考虑了训练成本后的方案。| | 训练 token|3000 亿|从互联网是抓取的数据,经过词元化后的 token 数量。| |维度 dimension|12288|"feature" or "dimension" or "embedding size", one of the several "hyperparameters" of the model | - ### 输入训练数据至 Embedding - ``` Token ID: 0 → "<PAD>" Token ID: 1 → "Hello" Token ID: 2 → "World" ... Token ID: 50256 → "<END>"` ``` - 模型根据这些ID到Embedding矩阵的对应行,**直接找到并取出Token的Embedding向量**。 - 模型根据这些token所在的位置(比如第1个、第2个位置…)再到Position Embedding矩阵中找到位置向量。 - 将两个向量相加获得最终的输入Embedding,送入Transformer模型训练。 - | Token ID | token Embedding向量 | position Embedding向量 | imput embedding | | ----------- | ----------------------- | ----------------------- | -------------------------------------- | | 0 ("<PAD>") | 第一列随机权重 `[随机值, 随机值, …]` | 第一列随机权重 `[随机值, 随机值, …]` | token Embedding向量+position Embedding向量 | | 1 ("Hello") | 第二列随机权重 `[随机值, 随机值, …]` | 第一列随机权重 `[随机值, 随机值, …]` | token Embedding向量+position Embedding向量 | | 2 ("World") | 第三列随机权重 `[随机值, 随机值, …]` | 第一列随机权重 `[随机值, 随机值, …]` | token Embedding向量+position Embedding向量 | | … | …… | | | - # how good - # Ref.