目录

torchtune.modules

模型组件和构建块

MultiHeadAttention

支持分组查询注意力(GQA)的多头注意力层,首次提出于 https://arxiv.org/abs/2305.13245v1

FeedForward

该类实现了源自 Llama2 的前馈网络。

KVCache

独立的 nn.Module 包含一个 kv 缓存,用于在推理过程中缓存过去的键和值。

RotaryPositionalEmbeddings

该类实现了RoPE(旋转位置嵌入)提出的 https://arxiv.org/abs/2104.09864

RMSNorm

以 fp32 精度进行均方根归一化。

Fp32LayerNorm

LayerNorm 的包装器,用于支持混合精度训练。

TanhGate

实现一个基本的可学习门控机制,用于缩放层输出

TiedLinear

一个无偏置的线性层,与另一个线性层共享相同的权重。

TransformerSelfAttentionLayer

源自 Llama2 模型的 Transformer 层。

TransformerCrossAttentionLayer

交叉注意力 Transformer 层遵循与 TransformerSelfAttentionLayer 相同的约定。

TransformerDecoder

源自 Llama2 架构的 Transformer 解码器。

VisionTransformer

ViT架构的实现(https://arxiv.org/abs/2010.11929),支持切片图像,输出隐藏层,并可选地进行CLS投影。

LayerDropout

一个将层丢弃应用于底层模块输入张量的模块。

prepare_layer_dropout

通过用 ModuleLayerDropoutWrapper 包装每个层,为模型的层准备层丢弃。

损失

loss.CEWithChunkedOutputLoss

分块输出的交叉熵,通过每次仅提升一个块的数据类型来节省内存。

loss.ForwardKLLoss

针对有效索引的 Kullback-Leibler 散度损失。

loss.ForwardKLWithChunkedOutputLoss

前向 KL 散度,采用分块输出,通过每次仅提升一个块的数据类型来节省内存。

基础分词器

基本分词器是将文本直接编码为标记ID并解码为文本的分词器模型。这些通常是字节对编码,它们构成了特定于模型的分词器的基础。

tokenizers.SentencePieceBaseTokenizer

SentencePieceProcessor 的一个轻量级封装,额外处理了前导空格的修剪。

tokenizers.TikTokenBaseTokenizer

一个围绕 tiktoken 编码的轻量级封装。

tokenizers.ModelTokenizer

抽象分词器,它在 tokenize_messages 方法中实现了特定于模型的特殊标记逻辑。

tokenizers.BaseTokenizer

抽象的标记编码模型,实现了encodedecode方法。

Tokenizer Utilities

这些是可供任何分词器使用的辅助方法。

tokenizers.tokenize_messages_no_special_tokens

逐个对消息列表进行分词,然后将其拼接,返回一个令牌列表和一个掩码列表。

tokenizers.parse_hf_tokenizer_json

解析来自Hugging Face模型的tokenizer.json文件,以提取特殊标记字符串到ID的映射。

PEFT 组件

peft.LoRALinear

LoRA线性层,如《LoRA: Low-Rank Adaptation of Large Language Models》中所介绍。

peft.DoRALinear

DoRA线性层,如在DoRA:大型语言模型的权重分解低秩适应中所介绍。

peft.AdapterModule

用于包含适配器权重的 nn.Module 的接口。

peft.get_adapter_params

返回模型中与适配器对应的参数子集。

peft.set_trainable_params

基于适配器参数的状态字典,为 nn.Module 设置可训练参数。

peft.get_adapter_state_dict

返回模型中对应于适配器的完整 state_dict 的子集。

peft.validate_missing_and_unexpected_for_lora

一种更节省内存的方式,用于验证 LoRA 状态字典加载是否正确完成。

peft.disable_adapter

暂时禁用模型中的适配器。

融合组件

用于构建融合两个或多个预训练模型的组件。

model_fusion.DeepFusionModel

DeepFusion 是一种融合模型架构,它将预训练的编码器与预训练的解码器(LLM)在内部解码层中进行结合。

model_fusion.FusionLayer

融合层,如在 Flamingo:一种用于少样本学习的视觉语言模型 中所介绍。

model_fusion.FusionEmbedding

融合嵌入支持在保持原始嵌入冻结的同时训练额外的特殊标记。

model_fusion.register_fusion_module

为 nn.Module 添加 fusion_params 方法,该方法将所有模块的参数标记为融合参数。

model_fusion.get_fusion_params

返回模型中与融合模块对应的参数子集。

模块工具

这些是通用工具,所有模块均可使用。

common_utils.reparametrize_as_dtype_state_dict_post_hook

一个 state_dict 钩子,用于将 NF4 张量替换为其恢复的高精度权重,并可选择将恢复后的权重卸载到 CPU。

common_utils.local_kv_cache

此上下文管理器可在给定模型上临时启用 KV 缓存,该模型尚未设置 KV 缓存。

common_utils.disable_kv_cache

此上下文管理器会临时禁用给定模型上的 KV 缓存,该模型必须已预先设置好 KV 缓存。

common_utils.delete_kv_caches

删除模型中所有注意力层的KV缓存,并确保 cache_enabled 设置为 False。

视觉转换

用于图像预处理的函数。

transforms.Transform

所有数据和模型变换的松散接口。

transforms.VisionCrossAttentionMask

计算文本和图像输入的交叉注意力掩码。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源