Shortcuts

torchtune.modules

建模组件和构建模块

MultiHeadAttention

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

FeedForward

该类实现了从Llama2派生的前馈网络。

KVCache

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

RotaryPositionalEmbeddings

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

RMSNorm

fp32中的均方根归一化。

Fp32LayerNorm

围绕LayerNorm的包装器,以支持混合精度训练。

TanhGate

实现一个基本的可学习门来缩放层输出

TiedLinear

一个没有偏置的绑定线性层,与另一个线性层共享相同的权重。

TransformerSelfAttentionLayer

Transformer层源自Llama2模型。

TransformerCrossAttentionLayer

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

TransformerDecoder

Transformer 解码器源自 Llama2 架构。

VisionTransformer

ViT架构的实现(https://arxiv.org/abs/2010.11929),支持瓦片裁剪图像、隐藏层输出和可选的CLS投影。

LayerDropout

一个模块,它对底层模块的输入张量应用层丢弃。

prepare_layer_dropout

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

损失

loss.CEWithChunkedOutputLoss

使用分块输出的交叉熵,通过一次只提升一个块来节省内存。

loss.ForwardKLLoss

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

loss.ForwardKLWithChunkedOutputLoss

使用分块输出的前向KL,通过一次只上转换一个块来节省内存。

基础分词器

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

tokenizers.SentencePieceBaseTokenizer

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

tokenizers.TikTokenBaseTokenizer

一个轻量级的tiktoken编码包装器。

tokenizers.ModelTokenizer

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

tokenizers.BaseTokenizer

实现了encodedecode方法的抽象令牌编码模型。

分词器工具

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

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: Weight-Decomposed Low-Rank Adaptation of Large Language Models中介绍的那样。

peft.AdapterModule

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

peft.get_adapter_params

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

peft.set_trainable_params

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

peft.get_adapter_state_dict

返回模型中与适配器对应的完整状态字典的子集。

peft.validate_missing_and_unexpected_for_lora

一种更节省内存的方法来验证LoRA状态字典加载是否正确。

peft.disable_adapter

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

融合组件

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

model_fusion.DeepFusionModel

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

model_fusion.FusionLayer

融合层,如Flamingo: a Visual Language Model for Few-Shot Learning中介绍的。

model_fusion.FusionEmbedding

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

model_fusion.register_fusion_module

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

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

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