数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
一、Configuration
PretrainedConfig
基类实现了一些通用方法,如从本地或者远程加载/保存一个configuration
。每个派生的config class
实现了模型的特定属性。所有config class
的常见属性是:hidden_size
、num_attention_heads
、num_hidden_layers
。文本模型进一步实现了vocab_size
属性。配置文件可以加载到内存、以及保存到文件。注意,使用配置文件来初始化一个模型并不会加载模型的权重,它仅仅影响模型的配置。
安装
Transformer
:pip install transformers pip install transformers[torch] # cpu-only pip install transformers[tf-cpu] # cpu-only pip install transformers[flax] # cpu-only pip install git+https://github.com/huggingface/transformers conda install -c huggingface transformers
检验是否安装成功:
xxxxxxxxxx
python -c "from transformers import pipeline; print(pipeline('sentiment-analysis')('we love you'))
1.1 API
class transformers.PretrainedConfig
:PretrainedConfig
基类。xxxxxxxxxx
class transformers.PretrainedConfig(**kwargs)参数:
name_or_path
:一个字符串,默认为空字符串,作为pretrained_model_name_or_path
传递给PreTrainedModel.from_pretrained()/TFPreTrainedModel.from_pretrained()
。output_hidden_states
:一个布尔值,默认为False
,指定模型是否应该返回所有的hidden state
。output_attentions
:一个布尔值,默认为False
,指定模型是否应该返回所有的注意力。return_dict
:一个布尔值,默认为True
,指定模型是否应该返回一个ModelOutput
而不是一个普通的元组。is_encoder_decoder
:一个布尔值,默认为False
,指定模型是否作为一个encoder/decoder
使用。is_decoder
:一个布尔值,默认为False
,模型是否被用作解码器。如果为False
,则模型被用作编码器。cross_attention_hidden_size
:一个整数,指定cross-attention layer
的隐层维度。当该模型被用作encoder-decoder setting
中的解码器时,并且当cross-attention
隐层维度与self.config.hidden_size
维度不同时使用。add_cross_attention
:一个布尔值,默认为False
,指定是否应该将cross-attention layer
添加到模型中。注意,这个选项只与可以作为
EncoderDecoderModel
类的解码器的模型有关,其中EncoderDecoderModel
类包括AUTO_MODELS_FOR_CAUSAL_LM
中的所有模型。tie_encoder_decoder
:一个布尔值,默认为False
,指定是否所有编码器权重应与它们的等价的解码器权重绑定(即,权重共享)。注意,这要求编码器和解码器的参数名称完全相同。
prune_heads
:一个字典,键为层的编号,值为head
的编号组成的列表,默认为空字典。该参数指定模型每一层的被裁剪的head
。例如:
{1: [0, 2], 2: [2, 3]}
表示layer 1
裁剪heads 0, 2
,layer 2
裁剪heads 2, 3
。chunk_size_feed_forward
:一个整数,默认为零,指定residual attention block
中所有feed forward layer
的chunk size
。chunk size = 0
意味着feed forward layer
不被分块;chunk size = n
意味着feed forward layer
每次处理 $ n $ 个embedding
,其中n < sequence_length
,这是在Reformer
论文中提出的方法。
针对序列生成任务的参数:
max_length
:一个整数,默认为20
,指定模型的生成方法中,默认使用的最大长度。min_length
:一个整数,默认为10
,指定模型的生成方法中,默认使用的最小长度。do_sample
:一个布尔值,默认为False
,指定模型的生成方法中,是否使用采样。如果为False
则使用贪心解码greedy decoding
。early_stopping
:一个布尔值,默认为False
,指定模型的生成方法中,是否当至少num_beams
句子已经生成的时候提前结束beam search
。num_beams
:一个整数,默认为1
,指定模型的生成方法中,beam search
默认使用的beam
数量(即,beam size
)。1
意味着没有beam search
。num_beam_groups
:一个整数,默认为1
,指定模型的生成方法中,将num_beams
分成的组数,以确保在模型的生成方法中不同beam group
的多样性。1
意味着没有group beam search
。diversity_penalty
:一个浮点数,默认为0.0
,指定模型的生成方法中,控制group beam search
的多样性。0
意味着没有多样性惩罚。惩罚越大,输出的多样性越强。temperature
:一个浮点数,默认为1.0
,指定模型的生成方法中,用于建模next token
概率(即softmax
函数的温度)。必须是严格为正的数。top_k
:一个整数,默认为50
,指定模型的生成方法中,用于top-k-filtering
的、保留最高概率的多少个vocabulary token
。top_p
:一个浮点数,默认为1.0
,指定模型的生成方法中,top_p
的值。如果top_p < 1.0
,那么保留概率加起来大于等于top_p
的、top
概率的token
。repetition_penalty
:一个浮点数,默认为1.0
,指定模型的生成方法中,repetition penalty
的超参数。1.0
意味着没有惩罚。length_penalty
:一个浮点数,默认为1.0
,指定模型的生成方法中,beam-based
方法中针对长度的指数惩罚。它以指数的形式作用在序列长度上,然后把序列的得分除以这个指数结果。由于序列的得分是对数似然(是个负数),因此
length_penalty > 0.0
会鼓励更长的序列,而length_penalty < 0.0
会鼓励更短的序列。no_repeat_ngram_size
:一个整数,默认为0
,指定模型的生成方法中,no_repeat_ngram_size
的值。如果是大于零的整数,则所有该size
的ngram
只能出现一次。encoder_no_repeat_ngram_size
:一个整数,默认为0
,指定模型的生成方法中,encoder_no_repeat_ngram_size
的值。如果是大于零的整数,则出现在encoder_input_ids
中的所有该size
的ngram
,都不能出现在decoder_input_ids
中。bad_words_ids
:一个整数列表,指定模型的生成方法中,哪些token id
禁止被生成。为了获得不应该出现在生成文本中的单词的
token id
,使用tokenizer.encode(bad_word, add_prefix_space=True)
。num_return_sequences
:一个整数,默认为1
,指定模型的生成方法中,batch
中每个样本需要独立返回的序列数量。output_scores
:一个布尔值,默认为False
,指定模型的生成方法中,是否需要返回logits
。return_dict_in_generate
:一个布尔值,默认为False
,指定模型的生成方法中,是否应该返回ModelOutput
而不是torch.LongTensor
。forced_bos_token_id
:一个整数,指定模型的生成方法中,在解码器的decoder_start_token_id
之后强制作为第一个被生成的token
的token id
。这对于像
mBART
这样的多语言模型非常有用,在这种情况下,第一个被生成的token
需要是target language token
。forced_eos_token_id
:一个整数,指定模型的生成方法中,当生成的序列达到max_length
时,强制作为最后一个被生成的token
的token id
。remove_invalid_values
:一个布尔值,指定模型的生成方法中,是否删除模型中可能的nan
和inf
输出以防止生成方法崩溃。注意,使用
remove_invalid_values
会减慢生成速度。
针对微调任务的参数:
architectures
:一个字符串列表,指定微调任务中,可以与模型预训练权重一起使用的模型架构。finetuning_task
:一个字符串,指定微调任务中,微调任务的名称。当从原始的checkpoint
转换时,可以用这个参数。id2label
:一个整数到字符串的字典,指定微调任务中,index
到label
名字的映射。label2id
:一个字符串到整数的字典,指定微调任务中,label
名字到index
的映射。num_labels
:一个整数,指定微调任务中,使用的label
的数量,通常用于分类任务。task_specific_params
:一个Dict[str, Any]
字典 ,指定微调任务中,存储的额外关键字参数。problem_type
:一个字符串,指定微调任务中,针对XxxForSequenceClassification
模型的问题类型,可以为"regression"
、"single_label_classification"
、"multi_label_classification"
。
和
tokenizer
关联的参数:tokenizer_class
:一个字符串,指定要使用的tokenizer class
的名字。如果未设置,则默认使用模型相关的tokenizer
。prefix
:一个字符串,指定在调用模型之前,应该在每个文本的开头添加的一个特定的prompt
。bos_token_id
:一个整数,指定beginning-of-stream token
的ID
。pad_token_id
:一个整数,指定padding token
的ID
。eos_token_id
:一个整数,指定end-of-stream token
的ID
。decoder_start_token_id
:一个整数,指定如果一个encoder-decoder
模型以不同于bos
的token
开始解码,则指定该token
的id
。sep_token_id
:一个整数,指定separation token
的ID
。
PyTorch
特定的参数:torchscript
:一个布尔值,默认为False
,指定该模型是否应与Torchscript
一起使用。tie_word_embeddings
:一个布尔值,默认为True
,指定模型的input word embedding
和output word embedding
是否应该绑定(即,权重共享)。请注意,仅当模型有一个output word embedding layer
时,该参数才生效。torch_dtype
:一个字符串,指定权重的dtype
。这个属性可以用来将模型初始化为一个非默认的dtype
(模型权重通常是float32
),从而允许优化存储。 例如,如果保存的模型是float16
,理想情况下,我们希望将模型权重初始化为float16
而不是float32
。由于
config
对象是以纯文本形式存储的,这个属性只包含浮点类型的字符串,没有torch.
前缀。例如,对于torch.float16
的torch_dtype
是"float16"
字符串。注意,这个属性目前在模型加载时没有被使用(而是在将模型初始化时使用)。
TensorFlow
特定的参数:use_bfloat16
:一个布尔值,默认为False
,指定模型是否应该使用BFloat16
(仅用于部分TF
模型)。tf_legacy_loss
:一个布尔值,默认为False
,指定模型是否应该使用legacy TensorFlow loss
。legacy loss
具有可变的output shape
,并且可能与XLA
不兼容。该参数将在Transformer
后续版本中移除。
PretrainedConfig
的class
属性(由派生类所覆盖):model_type
:一个字符串,用于模型类型的一个identifier
。它被序列化到JSON
文件中,并用于在AutoConfig
中重新创建正确的对象。is_composition
:一个布尔值,指定该config class
是否由多个sub-config
组成。在这种情况下,该config
必须从两个或更多的PretrainedConfig
类型的配置中初始化。keys_to_ignore_at_inference
:一个字符串列表,在推断过程中查看模型的dictionary output
时,默认要忽略的键的列表。attribute_map
:一个字符串到字符串的字典,将模型的specific attribute name
映射到标准化的属性名。
PretrainedConfig
的通用属性(在所有子类中都存在):vocab_size
:一个整数,指定词表的大小,它也是embedding
矩阵的第一个维度。对于像ViT
这样没有文本模态的模型,这个属性可能会丢失。hidden_size
:一个整数,指定模型的隐层维度。num_attention_heads
:一个整数,指定模型的注意力头的数量。num_hidden_layers
:一个整数,指定模型中block
的数量。
方法:
push_to_hub()
:将配置文件上传到Model Hub
,同时同步位于repo_path_or_name
中的repo
的local clone
。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 )参数:参考
PreTrainedTokenizerBase.push_to_hub()
方法。dict_torch_dtype_to_str(d: Dict[str, Any]) -> None
:检查字典d
及其嵌套的字典是否有torch_dtype
键,如果有,就把torch.dtype
转换为一个对应的字符串。如torch.float32
转换为"float32"
。from_dict(config_dict: Dict[str, Any], **kwargs) -> PretrainedConfig
:从字典中创建一个PretrainedConfig
。from_json_file(json_file: Union[str, os.PathLike]) -> PretrainedConfig
:从json
文件中创建一个PretrainedConfig
。from_pretrained(pretrained_model_name_or_path: Union[str, os.PathLike], **kwargs) -> PretrainedConfig
:从pretrained model configuration
中建一个PretrainedConfig
。参数:参考
PreTrainedTokenizerBase.from_pretrained()
方法。get_config_dict(pretrained_model_name_or_path: Union[str, os.PathLike], **kwargs) -> Tuple[Dict[str, Any], Dict[str, Any]]
:从一个配置对象中返回字典,这个字典可用于from_dict()
。参数:参考
from_pretrained()
。返回值:一个元组,每个元素都是一个字典,其中第二个字典通常是空字典。
register_for_auto_class(auto_class="AutoConfig")
:将当前的class
注册到给定的auto class
。该方法仅用于自定义的config class
,因为内置的config class
已经注册到AutoConfig
。save_pretrained(save_directory: Union[str, os.PathLike], push_to_hub: bool = False, **kwargs)
:保存配置对象到save_directory
目录,从而便于from_pretrained()
方法加载。参数:参考
PreTrainedTokenizerBase.save_pretrained()
方法。to_dict() -> Dict[str, Any]
:将配置对象序列化为字典。to_diff_dict() -> Dict[str, Any]
:将配置对象序列化为字典,但是字典中移除了所有的默认配置从而便于阅读。to_json_file(json_file_path: Union[str, os.PathLike], use_diff: bool = True)
:将配置对象保存到json
文件。to_json_string(use_diff: bool = True) -> str
:将配置对象序列化为json
字符串。update(config_dict: Dict[str, Any])
:根据config_dict
指定的属性来更新当前配置对象的属性。update_from_string(update_str: str)
:根据update_str
指定的属性来更新当前配置对象的属性。update_str
的格式为:"n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index"
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论