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