数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
三、Models
基类
PreTrainedModel, TFPreTrainedModel, FlaxPreTrainedModel
实现了加载/保存模型的通用方法。此外,PreTrainedModel
和TFPreTrainedModel
还实现了一些通用方法从而:- 当添加新
token
到词表时,resize
模型的input token embedding matrix
(注意,是增加embedding vector
,而不是调整embedding
维度)。 - 裁剪模型的
attention head
。
其它的一些通用方法定义在
ModuleUtilsMixin
(用于PyTorch
模型)、或TFModuleUtilsMixin
(用于TensorFlow
模型)。也有一些用于文本生成的方法定义在GenerationMixin
(用于PyTorch
模型)、TFGenerationMixin
(用于TensorFlow
模型)、或FlaxGenerationMixin
(用于Flax/JAX
模型)。- 当添加新
3.1 API
class transformers.PreTrainedModel(config: PretrainedConfig, *inputs, **kwargs)
:所有模型的基类。PreTrainedModel
负责存储模型的配置,并处理加载、下载、以及保存模型的方法,以及所有模型都有的一些方法(如resize input embedding
、裁剪the self-attention
中的head
)。参数:
config
:一个PretrainedConfig
对象,指定模型的配置。inputs
:一个位置参数,指定模型的input
。
类属性(由派生类重写):
config_class
:一个PretrainedConfig
对象,它是PretrainedConfig
的子类,指定模型的配置类。load_tf_weights
:一个可调用对象,用于在一个PyTorch
模型中加载一个TensorFlow checkpoint
。这个可调用对象的参数为:model
:一个PretrainedModel
对象,指定用于加载TensorFlow checkpoint
的模型实例。config
:一个PreTrainedConfig
对象,指定模型相关的配置对象。path
:一个字符串,指定TensorFlow checkpoint
的路径。
base_model_prefix
:一个字符串,表示在与base model
架构相同的派生类(这个派生类在base model
之上添加模块)中与base model
相关的属性。is_parallelizable
:一个布尔值,表示模型是否支持模型并行。main_input_name
:一个字符串,表示模型的main input
的名字(通常而言,对于NLP
模型是"input_ids"
、对于视觉模型而言是"pixel_values"
、对于语音模型而言是"input_values"
)。
方法:
push_to_hub()
:将模型文件上传到Model Hub
,同时同步到repo_path_or_name
对应的local clone
。xxxxxxxxxx
push_to_hub(repo_id: str, use_temp_dir: typing.Optional[bool] = Nonec, ommit_message: typing.Optional[str] = None, private: typing.Optional[bool] = None, use_auth_token: typing.Union[bool, str, NoneType] = None, max_shard_size: typing.Union[int, str, NoneType] = '10GB', create_pr: bool = False, **deprecated_kwargs )参数:参考
PreTrainedTokenizerBase.push_to_hub()
方法。from_pretrained( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType], *model_args, **kwargs)
:从一个pre-trained model configuration
中实例化一个pretrained pytorch model
。注意:
- 该模型通过默认使用
model.eval()
来设置为evaluation mode
(Dropout
模块被停用)。要训练这个模型,你应该先用model.training()
将其设置回training mode
。 - 警告
Weights from XXX not initialized from pretrained model
意味着XXX
的权重不与模型的其他部分一起进行预训练。这取决于你用下游的微调任务来训练这些权重。 - 警告
Weights from XXX not used in YYY
意味着layer XXX
没有被YYY
使用,因此这些权重被丢弃。
参数:
pretrained_model_name_or_path
:一个字符串或os.PathLike
对象,可以为:一个字符串,指定位于
huggingface.co
的model repo
中的预训练模型的model id
,如bert-base-uncased
、dbmdz/bert-base-german-cased
。一个目录的路径,该目录包含模型权重(由
save_pretrained()
保存)。一个指向
tensorflow index checkpoint file
的路径或url
。此时,from_tf
参数应该设为True
,并且config
参数应该被提供一个配置对象。这种加载路径比使用提供的转换脚本在
PyTorch
模型中转换TensorFlow checkpoint
并在之后加载PyTorch
模型要慢。一个指向
flax checkpoint file
(为.msgpack
格式) 的路径或url
。此时,from_flax
参数应该设为True
。None
,如果你同事提供了配置文件、以及state
字典。即,以config
和state_dict
关键字参数来传入。
model_args
:位置参数,它们将被传给底层模型的__init__
方法。confg
:一个PretrainedConfig
对象、字符串、或PathLike
对象,指定用于模型的配置(而不是自动加载配置)。如果是字符串或
PathLike
对象,则调用PretrainedConfig.from_pretrained()
方法。对于以下情形,配置将被自动加载:
- 模型是由
library
提供,即通过预训练模型的model id
来加载模型。 - 模型通过
save_pretrained()
方法保存,同时从被保存的目录中再次加载模型。 - 模型通过以下方式被加载:
pretrained_model_name_or_path
是一个本地路径、且该本地路径中找到一个叫做config.json
的configuration JSON file
。
- 模型是由
state_dict
:一个Dict[str, torch.Tensor]
字典,直接指定模型的state
而不是从保存的权重文件中加载。如果你想从一个预训练的配置中创建一个模型,但加载你自己的权重,可以使用这个方式。
cache_dir/force_download/resume_download/proxies/local_files_only/use_auth_token/revision
:这些参数参考PreTrainedTokenizerBase.from_pretrained()
。from_tf
:一个布尔值,指定是否从TensorFlow checkpoint save file
中加载模型权重。from_flax
:一个布尔值,指定是否从Flax checkpoint save file
中加载模型权重。ignore_mismatched_sizes
:一个布尔值,指定如果checkpoint
的某些权重与模型的权重尺寸不一致,是否会引发错误。output_loading_info
:一个布尔值,指定是否同时返回一个包含missing keys
、unexpected keys
和error messages
的字典。
用于大模型推断的参数:
low_cpu_mem_usage
:一个布尔值,指定是否试图在加载模型时不使用超过1
倍的模型大小的CPU
内存(包括峰值内存)。通常加载模型需要2
倍于模型的内存大小,一倍用于随机初始化模型(target
)、一倍用于预训练好的权重(source
)。这是一个实验性的功能,可以随时改变。它的工作方式如下:
- 保存
state_dict
的键。 - 在创建模型之前放弃
state_dict
,因为后者需要1
倍模型大小的CPU
内存。 - 在模型被实例化后,将所有
params/buffers
切换到meda device
(即,empty weights
),这些params/buffers
将要被来自于state_dict
中的值所替代。 - 第二次加载
state_dict
。 - 将来自
state_dict
中的值来替代params/buffers
。
目前,它无法处理
deepspeed ZeRO state3
,并且忽略了loading
错误。- 保存
torch_dtype
:一个字符串或torch.dtype
,覆盖默认的torch.dtype
并在此dtype
下加载模型。如果传入"auto"
,则dtype
将自动从模型的权重中推导。Pytorch
模型默认使用torch.float32
的权重类型,如果你需要加载一个fp16
类型的模型,那么需要再from_pretrained()
方法中指定torch_dtype
。或者也可以在创建模型的时候,通过
config
来告诉模型是什么类型的权重:xxxxxxxxxx
config = T5Config.from_pretrained("t5") model = AutoModel.from_config(config)device_map
:一个字符串,或Dict[str, Union[int, str, torch.device]]
字典,指定每个子模块对应的设备。不需要细化到每个参数/缓冲区名称,一旦指定一个模块的名字,它的每个子模块将被发送到同一个设备。如果模型无法完全容纳在内存中,你可以直接将模型放在不同的设备上(目前仅适用于推断)。要让
Accelerate
自动计算出最优的device_map
,请设置device_map="auto"
。此时,Accelerate
将决定模型的每一层放置在哪里,从而最大限度地利用你最快的设备(GPU
),并将其余部分卸载到CPU
上、甚至是磁盘上(如果你没有足够的GPU
内存或CPU
内存)。即使模型被分割到几个设备上,它也会像你通常期望的那样运行。当你传入一个
device_map
(如,"auto"
)时,low_cpu_mem_usage
自动被设置为True
。你可以通过查看模型的
hf_device_map
属性来检查模型是如何被分片到设备上的:xxxxxxxxxx
from transformers import AutoModelForSeq2SeqLM t0pp = AutoModelForSeq2SeqLM.from_pretrained("bigscience/T0pp", device_map="auto") print(t0pp.hf_device_map) # {'shared': 0, # 'decoder.embed_tokens': 0, # ... # 'decoder.dropout': 'cpu', # 'lm_head': 'cpu'}或者你也可以直接人工指定:
xxxxxxxxxx
device_map = {"shared": 0, "encoder": 0, "decoder": 1, "lm_head": 1}max_memory
:一个字典,指定每个设备的最大内存。如果未设定,则默认为每个GPU
的可用最大内存、以及CPU
的可用内存。offload_folder
:一个字符串或os.PathLike
对象。如果device_map
包含任何的值"disk"
,那么这个目录就是我们用于offload weights
的。offload_state_dict
:一个布尔值,如果为True
那么将暂时把CPU state dict
卸载offload
到磁盘上,从而避免CPU
内存耗尽。当有一些disk offload
时,默认为True
。load_in_8bit
:一个布尔值,如果为True
,则把加载的模型转换为mixed-8bit quantized model
。load_in_8bit_threshold
:一个浮点数,与load_in_8bit
一起工作。load_in_8bit_skip_modules
:一个字符串列表,指定哪些模块不希望被转换为8 bit
。subfolder
:一个字符串,如果相关的文件位于huggingface.co
上的模型repo
的一个子文件夹内,你可以在这里指定文件夹的名称。kwargs
:关键字参数,可以用于更新配置对象(在配置对象被加载完成之后)、初始化模型(如output_attentions=True
)。
- 该模型通过默认使用
get_input_embeddings() -> nn.Module
:返回模型的input embedding
(它将词表映射到embedding matrix
)。get_memory_footprint(return_buffers = True)
:返回模型的内存占用,单位是字节。这对于benchmark
当前模型的内存占用、以及设计某些测试很有用。get_output_embeddings() -> nn.Module
:返回模型的output embedding
(它将词表映射到embedding matrix
)。gradient_checkpointing_disable()
:停用当前模型的gradient checkpointing
(也被叫做activation checkpointing
或checkpoint activations
)。gradient_checkpointing_enable()
:启用当前模型的gradient checkpointing
。init_weights()
:如果需要的话,对权重进行裁剪和初始化。post_init()
:在每个Transformer
模型初始化结束时执行的方法(如权重初始化)。prune_heads(heads_to_prune: typing.Dict[int, typing.List[int]] )
:裁剪base model
的head
。参考
PretrainedConfig
的初始化方法。register_for_auto_class( auto_class = 'AutoModel')
:将当前class
注册到给定的auto class
。参考
PretrainedConfig.register_for_auto_class()
方法。resize_token_embeddings(new_num_tokens: typing.Optional[int] = None ) -> torch.nn.Embedding
:如果new_num_tokens != config.vocab_size
,那么resize
模型的input token embeddings matrix
。参数:
new_num_tokens
:一个整数,指定新的token
总数。如果总数增加,那么添加新的被初始化的embedding vector
;如果总数减少,那么从embedding matrix
尾部移除embedding vector
。如果模型有一个
tie_weights()
方法时,要小心tying weights embedding
。save_pretrained()
:将模型和它的配置文件保存到目录中,以便后续可以使用from_pretrained()
方法重新加载该模型。xxxxxxxxxx
save_pretrained(save_directory: typing.Union[str, os.PathLike], is_main_process: bool = True, state_dict: typing.Optional[dict] = None, save_function: typing.Callable = <function save at 0x7fe13d86c310>, push_to_hub: bool = Fals, emax_shard_size: typing.Union[int, str] = '10GB', safe_serialization: bool = False, **kwargs )参数:
save_directory/push_to_hub/max_shard_size
:参考PreTrainedTokenizerBase.save_pretrained()
方法。is_main_process
:一个布尔值,指定调用该方法的进程是否是主进程。在像TPU
这样的分布式训练中很有用,需要在所有进程上调用该方法。在这种情况下,仅在主进程上设置is_main_process=True
从而避免争用。state_dict
:torch.Tensor
的嵌套字典,指定要保存的模型的state dictionary
。默认为self.state_dict()
,但可以用来只保存模型的部分内容,或者在恢复模型的state dictionary
时需要采取特殊的预防措施(比如使用模型并行时)。save_function
:一个可调用对象,它用于保存state dictionary
。在如下场景很有用:TPU
这样的分布式训练,且需要用另一个方法来代替torch.save
时。safe_serialization
:一个布尔值,指定是否使用safetensors
或传统的PyTorch
方式(即,pickle
)保存模型。kwargs
:关键字参数,传递给push_to_hub()
方法。
set_input_embeddings(value: Module )
:设置模型的input embedding
。参数:
value
:一个nn.Module
,它将词表映射到embedding matrix
。tie_weights()
:将input embedding
和output embedding
进行权重绑定(即,权重共享)。如果在配置中设置了
torchscript flag
,那么无法处理权重共享,此时我们将拷贝权重。
class transformers.modeling_utils.ModuleUtilsMixin()
:用于torch.nn.Modules
的一些工具方法,它被作用mixin
。方法:
add_memory_hooks()
:在每个子模块的前向传播的before/after
添加一个memory hook
,从而记录内存消耗的增加。内存消耗的增加被存储在每个模块的
mem_rss_diff
属性中,可以用model.reset_memory_hooks_state()
重置为零。estimate_tokens(input_dict: typing.Dict[str, typing.Union[torch.Tensor, typing.Any]]) -> int
:一个helper
方法,用于从model input
中估计总的token
数量。参数:
input_dict
:一个字典,给出model inputs
。floating_point_ops(batch_size:int, sequence_length:int, exclude_embeddings: bool = True ) -> int
:获取该transformer
模型对一个batch
的前向传播和反向传播的浮点运算数量(non-embedding
)。参数:
batch_size
:一个整数,指定batch size
。sequence_length
:一个整数,指定batch
中每个样本的token
数量。exclude_embeddings
:一个布尔值,指定是否考虑embedding
操作和softmax
操作的浮点数运算。
默认的近似值忽略了对
token
数量的二次方依赖(如果12 * d_model << sequence_length
则有效)。对于有参数共享的transformer
(如ALBERT
或Universal Transformer
),或者对长序列进行长距离建模时,应该重写该方法。get_extended_attention_mask(attention_mask: Tensor, input_shape: typing.Tuple[int], device: <property object at 0x7fe13accc720> = None, dtype: torch.float32 = None )
:获得broadcastable attention
和causal mask
,使得未来的和masked
的token
被忽略。参数:
attention_mask
:一个张量,指定Mask
,其中元素1
代表un-masked
、0
代表masked
。input_shape
:一个元组(类型为整数),指定模型的input
的形状。
get_head_mask( head_mask: typing.Optional[torch.Tensor], num_hidden_layers: int, is_attention_chunked: bool = False)
:准备head mask
。参数:
head_mask
:一个形状为[num_heads]
或[num_hidden_layers x num_heads]
的张量,指定我们要保留哪些head
(1
表示保留,0
表示放弃)。num_hidden_layers
:一个整数,指定模型的隐层的数量。is_attention_chunked
:一个布尔值,指定attentions score
是否按chunk
来计算的。
invert_attention_mask( encoder_attention_mask: Tensor ) -> torch.Tensor
:翻转一个attention mask
(即,翻转0
和1
)。num_parameters(only_trainable: bool = False, exclude_embeddings: bool = False ) -> int
:返回模型中的所有参数数量。参数:
only_trainable
:一个布尔值,指定是否进考虑可训练的参数。exclude_embeddings
:一个布尔值,指定是否排除embedding
参数。
reset_memory_hooks_state()
:清零每个模块的mem_rss_diff
属性。
class transformers.TFPreTrainedModel(*args, **kwargs)
:所有TF
模型的基类。参数:参考
PreTrainedModel
。类别属性:参考
PreTrainedModel
。方法:
push_to_hub()
:参考PreTrainedModel.push_to_hub()
。xxxxxxxxxx
push_to_hub(repo_id: str, use_temp_dir: typing.Optional[bool] = None, commit_message: typing.Optional[str] = None, private: typing.Optional[bool] = None, use_auth_token: typing.Union[bool, str, NoneType] = None, max_shard_size: typing.Union[int, str, NoneType] = '10GB', **model_card_kwargs)compile()
:编译模型。xxxxxxxxxx
compile(optimizer = 'rmsprop', loss = 'passthrough', metrics = None, loss_weights = None, weighted_metrics = None, run_eagerly = None, steps_per_execution = None, **kwargs )create_model_card()
:创建一个model card
。xxxxxxxxxx
create_model_card(output_dir, model_name: str, language: typing.Optional[str] = None, license: typing.Optional[str] = None, tags: typing.Optional[str] = None, finetuned_from: typing.Optional[str] = None, tasks: typing.Optional[str] = None, dataset_tags: typing.Union[str, typing.List[str], NoneType] = None, dataset: typing.Union[str, typing.List[str], NoneType] = None, dataset_args: typing.Union[str, typing.List[str], NoneType] = None)eager_serving(inputs)
:用于model serving
的方法。打算不与tf.function decorator
一起编译,以便我们以后可以用它来生成多个signature
。参数:
inputs
:一个字典Dict[str, tf.Tensor]
,用于saved model
的输入。from_pretrained(pretrained_model_name_or_path, *model_args, **kwargs )
:参考PreTrainedModel.from_pretrained()
。get_bias() -> tf.Variable
:关联到LM head
的、关于bias
的字典,key
为bias
属性的名字。get_input_embeddings() -> tf.Variable
:参考PreTrainedModel.get_input_embeddings()
。get_lm_head() -> tf.keras.layers.Layer
:获取LM Head Layer
(如果模型只有一个head layer
)或者返回None
。对于拥有
lm head
的所有模型,必须重写该方法。get_output_embeddings()
:参考PreTrainedModel.get_output_embeddings()
。get_output_layer_with_bias() -> tf.keras.layers.Layer
:获取output layer
。get_prefix_bias_name() -> str
:获取bias
的被拼接的_prefix name
。load_repo_checkpoint(repo_path_or_name) -> dict
:从一个repo
中加载一个saved checkpoint
(包含模型权重和optimizer state
)。返回一个字典,该字典包含
extra metadata
信息,例如当前的epoch
计数。prepare_tf_dataset()
:将HuggingFace Dataset
封装为一个具有collation
和batching
的tf.data.Dataset
。xxxxxxxxxx
prepare_tf_dataset(dataset: datasets.Dataset, batch_size: int = 8, shuffle: bool = True, tokenizer: typing.Optional[ForwardRef('PreTrainedTokenizerBase')] = None, collate_fn: typing.Optional[typing.Callable] = None, collate_fn_args: typing.Union[typing.Dict[str, typing.Any], NoneType] = None, drop_remainder: typing.Optional[bool] = None, prefetch: bool = True) -> Dataset该方法用于创建一个
ready-to-use
的dataset
,从而可以直接传递给Keras
的方法(如fit()
)而无需进一步修改。如果数据集的列与模型的
input names
不匹配,那么不匹配的列将从数据集中删除。如果你想指定返回的列名,而不是使用与该模型相匹配的名字,我们建议使用Dataset.to_tf_dataset()
代替。prune_heads(heads_to_prune )
:参考PreTrainedModel.prune_heads()
方法。register_for_auto_class(auto_class = 'TFAutoModel' )
:参考PreTrainedModel.register_for_auto_class()
方法。resize_token_embeddings(new_num_tokens: typing.Optional[int] = None ) -> tf.Variable or tf.keras.layers.Embedding
:参考PreTrainedModel.resize_token_embeddings()
方法。save_pretrained()
:将模型和它的配置文件保存到目录中,以便后续可以使用from_pretrained()
方法重新加载该模型。xxxxxxxxxx
save_pretrained(save_directory, saved_model = False, version = 1, push_to_hub = False, signatures = None, max_shard_size: typing.Union[int, str] = '10GB', create_pr: bool = False, safe_serialization: bool = False, **kwargs )参数:
save_directory/push_to_hub/max_shard_size/safe_serialization/kwargs
:参考PreTrainedModel.save_pretrained()
方法。saved_model
:一个布尔值,指定模型是否也必须以saved model
格式保存。version
:一个整数,指定saved model
的版本。signatures
:一个字典或tf.function
,指定用于serving
的model's signature
。这将被传递给model.save()
的signatures
参数。create_pr
:一个布尔值,指定是否创建一个PR
还是直接commit
。
serving(inputs: Dict[str, tf.Tensor])
:用于model serving
的方法。参数:
inputs
:一个从字符串到tf.Tensor
的字典,给出saved model
的input
。serving_output(output: TFBaseModelOutput)
:准备saved model
的output
。每个模型必须实现该方法。参数:
output
:由模型返回的output
。set_bias(value: Dict[tf.Variable])
:设置LM head
中的所有bias
。set_input_embeddings(value)
:参考PreTrainedModel.set_input_embeddings()
方法。set_output_embeddings(value)
:设置模型的output embedding
。test_step(data)
:对Keras
默认的train_step
的修改,为我们的模型正确处理了我们outputs
与labels
的匹配,并支持直接在loss output head
上进行训练。此外,它确保input keys
在适当的地方被复制到labels
上。当使用dummy loss
时,它也会将label keys
复制到input dict
中,以确保它们在前向传播过程中对模型可用。train_step(data)
:参考test_step()
。
class transformers.modeling_tf_utils.TFModelUtilsMixin()
:用于tf.keras.Model
的一些工具方法,它被作用mixin
。方法:
num_parameters(only_trainable: bool = False) -> int
:参考ModuleUtilsMixin.num_parameters()
。
class transformers.FlaxPreTrainedModel
:所有Flax
模型的基类。xxxxxxxxxx
class transformers.FlaxPreTrainedModel(config: PretrainedConfig, module: Moduleinput_shape: typing.Tuple = (1, 1), seed: int = 0, dtype: dtype = <class 'jax.numpy.float32'>, _do_init: bool = True )参数:参考
PreTrainedModel
。类别属性:参考
PreTrainedModel
。方法:
load_flax_sharded_weights(shard_files: List[str]) -> Dict
:加载flax
模型的权重。这种加载是高效的:每个checkpoint shard
在RAM
中被逐一加载,并在被加载到模型中之后被删除。返回模型参数的嵌套字典,格式为
{'model': {'params': {'...'}}}
。to_bf16(params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict], mask: typing.Any = None)
:将浮点参数强制类型转换为jax.numpy.bfloat16
。它返回一个新的prams tree
而不是原地转换。参数:
params
:一个字典或FrozenDict
,给出了模型参数的PyTree
。mask
:与params
结构相同的PyTree
,叶子节点为布尔值,表示对应的params
是否需要强制类型转换。
该方法可以在
TPU
上使用,从而模型参数显式转换为bfloat16
精度。to_fp16(params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict], mask: typing.Any = None)
:将浮点参数强制类型转换为jax.numpy.float16
。参考to_bf16
。该方法可以在
GPU
上使用,从而模型参数显式转换为float16
精度。to_fp32(params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict], mask: typing.Any = None)
:将浮点参数强制类型转换为jax.numpy.float32
。参考to_bf16
。以下方法参考
TFPreTrainedModel
:xxxxxxxxxx
push_to_hub(repo_id: str, use_temp_dir: typing.Optional[bool] = None, commit_message: typing.Optional[str] = None, private: typing.Optional[bool] = None, use_auth_token: typing.Union[bool, str, NoneType] = None, max_shard_size: typing.Union[int, str, NoneType] = '10GB', create_pr: bool = False, **deprecated_kwargs) from_pretrained(pretrained_model_name_or_path: typing.Union[str, os.PathLike], dtype: dtype = <class 'jax.numpy.float32'>, *model_args, **kwargs) register_for_auto_class(auto_class = 'FlaxAutoModel') save_pretrained(save_directory: typing.Union[str, os.PathLike], params = None, push_to_hub = False, max_shard_size = '10GB', **kwargs )
class transformers.utils.PushToHubMixin()
:一个mixin
,它包含一些函数用于push
一个模型或tokenizer
到hub
上。方法:
push_to_hub()
:参考PreTrainedModel.push_to_hub()
。xxxxxxxxxx
push_to_hub(repo_id: str, use_temp_dir: typing.Optional[bool] = None, commit_message: typing.Optional[str] = None, private: typing.Optional[bool] = None, use_auth_token: typing.Union[bool, str, NoneType] = None, max_shard_size: typing.Union[int, str, NoneType] = '10GB', create_pr: bool = False, **deprecated_kwargs)
transformers.modeling_utils.load_sharded_checkpoint(model: torch.nn.Module, folder: str or os.PathLike, strict = True) -> NamedTuple
:与torch.nn.Module.load_state_dict()
相同,但是该函数用于sharded checkpoint
。这种加载是高效的:每个
checkpoint shard
在RAM
中被逐一加载,并在被加载到模型中之后被删除。参数:
model
:一个Module
对象,指定哪个模型需要加载checkpoint
。folder
:一个字符串或os.PathLike
对象,指定哪个目录包含checkpoint
。strict
:一个布尔值,指定是否严格加载(即,model state dict
和sharded checkpoint
严格匹配)。
返回一个命名元组,包含两个字段:
missing_keys
:包含missing key
的列表。unexpected_keys
:包含unexpected key
的列表。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论