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