torchtune.modules¶
模型组件和构建块¶
支持分组查询注意力(GQA)的多头注意力层,首次提出于 https://arxiv.org/abs/2305.13245v1。 |
|
该类实现了源自 Llama2 的前馈网络。 |
|
独立的 |
|
该类实现了RoPE(旋转位置嵌入)提出的 https://arxiv.org/abs/2104.09864。 |
|
以 fp32 精度进行均方根归一化。 |
|
|
|
实现一个基本的可学习门控机制,用于缩放层输出 |
|
一个无偏置的线性层,与另一个线性层共享相同的权重。 |
|
源自 Llama2 模型的 Transformer 层。 |
|
交叉注意力 Transformer 层遵循与 TransformerSelfAttentionLayer 相同的约定。 |
|
源自 Llama2 架构的 Transformer 解码器。 |
|
ViT架构的实现(https://arxiv.org/abs/2010.11929),支持切片图像,输出隐藏层,并可选地进行CLS投影。 |
|
一个将层丢弃应用于底层模块输入张量的模块。 |
|
通过用 ModuleLayerDropoutWrapper 包装每个层,为模型的层准备层丢弃。 |
损失¶
分块输出的交叉熵,通过每次仅提升一个块的数据类型来节省内存。 |
|
针对有效索引的 Kullback-Leibler 散度损失。 |
|
前向 KL 散度,采用分块输出,通过每次仅提升一个块的数据类型来节省内存。 |
基础分词器¶
基本分词器是将文本直接编码为标记ID并解码为文本的分词器模型。这些通常是字节对编码,它们构成了特定于模型的分词器的基础。
SentencePieceProcessor 的一个轻量级封装,额外处理了前导空格的修剪。 |
|
一个围绕 tiktoken 编码的轻量级封装。 |
|
抽象分词器,它在 |
|
抽象的标记编码模型,实现了 |
Tokenizer Utilities¶
这些是可供任何分词器使用的辅助方法。
逐个对消息列表进行分词,然后将其拼接,返回一个令牌列表和一个掩码列表。 |
|
解析来自Hugging Face模型的 |
PEFT 组件¶
LoRA线性层,如《LoRA: Low-Rank Adaptation of Large Language Models》中所介绍。 |
|
DoRA线性层,如在DoRA:大型语言模型的权重分解低秩适应中所介绍。 |
|
用于包含适配器权重的 |
|
返回模型中与适配器对应的参数子集。 |
|
基于适配器参数的状态字典,为 nn.Module 设置可训练参数。 |
|
返回模型中对应于适配器的完整 state_dict 的子集。 |
|
一种更节省内存的方式,用于验证 LoRA 状态字典加载是否正确完成。 |
|
暂时禁用模型中的适配器。 |
融合组件¶
用于构建融合两个或多个预训练模型的组件。
DeepFusion 是一种融合模型架构,它将预训练的编码器与预训练的解码器(LLM)在内部解码层中进行结合。 |
|
融合层,如在 Flamingo:一种用于少样本学习的视觉语言模型 中所介绍。 |
|
融合嵌入支持在保持原始嵌入冻结的同时训练额外的特殊标记。 |
|
为 nn.Module 添加 fusion_params 方法,该方法将所有模块的参数标记为融合参数。 |
|
返回模型中与融合模块对应的参数子集。 |
模块工具¶
这些是通用工具,所有模块均可使用。
一个 state_dict 钩子,用于将 NF4 张量替换为其恢复的高精度权重,并可选择将恢复后的权重卸载到 CPU。 |
|
此上下文管理器可在给定模型上临时启用 KV 缓存,该模型尚未设置 KV 缓存。 |
|
此上下文管理器会临时禁用给定模型上的 KV 缓存,该模型必须已预先设置好 KV 缓存。 |
|
删除模型中所有注意力层的KV缓存,并确保 |
视觉转换¶
用于图像预处理的函数。
所有数据和模型变换的松散接口。 |
|
计算文本和图像输入的交叉注意力掩码。 |