预训练模型 | mGPT详解

模型下载地址https://www.huggingface.co/THUMT/mGPT

mGPT

mGPT使用因果语言建模目标在mC4 数据集上进行预训练。它已在本文中介绍并首次在此页面发布。

模型描述

mGPT 是一个基于 Transformer 的模型,它对涵盖超过 101 种语言的海量多语言数据进行了预训练。与 GPT-2 类似,它仅针对原始文本进行预训练,没有人工标记。我们使用与mT5 模型相同的标记化和词汇表。

预期用途

您可以使用原始模型来生成文本,或使用提示来使其适应下游任务。

如何使用

您可以直接将此模型与管道一起使用来生成文本。以下是如何使用该模型在 PyTorch 中获取给定文本的特征:

from transformers import MT5Tokenizer, GPT2LMHeadModel, TextGenerationPipeline

tokenizer = MT5Tokenizer.from_pretrained("THUMT/mGPT")
model = GPT2LMHeadModel.from_pretrained("THUMT/mGPT")

pipeline = TextGenerationPipeline(model=model, tokenizer=tokenizer)
text = "Replace me by any text you'd like."
text = pipeline(text, do_sample=True,  max_length=1024)[0]["generated_text"]

预处理

文本使用sentencepiece词汇量 250,100 进行标记。输入是 1,024 个连续标记的序列。我们用来<extra_id_0>分隔文档中的行。

预训练模型文件

config.json

{"return_dict": true, 
 "output_hidden_states": false, 
 "output_attentions": false, 
 "torchscript": false, 
 "use_bfloat16": false, 
 "pruned_heads": {}, 
 "tie_word_embeddings": true, 
 "is_encoder_decoder": false, 
 "is_decoder": false, 
 "add_cross_attention": false, 
 "tie_encoder_decoder": false, 
 "max_length": 20, 
 "min_length": 0, 
 "do_sample": false, 
 "early_stopping": false, 
 "num_beams": 1, 
 "num_beam_groups": 1, 
 "diversity_penalty": 0.0, 
 "temperature": 1.0, 
 "top_k": 50, 
 "top_p": 1.0, 
 "repetition_penalty": 1.0, 
 "length_penalty": 1.0, 
 "no_repeat_ngram_size": 0, 
 "encoder_no_repeat_ngram_size": 0, 
 "bad_words_ids": null, 
 "num_return_sequences": 1, 
 "chunk_size_feed_forward": 0, 
 "output_scores": false, 
 "return_dict_in_generate": false, 
 "forced_bos_token_id": null, 
 "forced_eos_token_id": null, 
 "remove_invalid_values": false, 
 "architectures": ["GPT2LMHeadModel"], 
 "finetuning_task": null, 
 "id2label": {"0": "LABEL_0", "1": "LABEL_1"}, 
 "label2id": {"LABEL_0": 0, "LABEL_1": 1}, 
 "tokenizer_class": null, 
 "prefix": null, 
 "bos_token_id": 1, 
 "pad_token_id": null, 
 "eos_token_id": 1, 
 "sep_token_id": null, 
 "decoder_start_token_id": null, 
 "task_specific_params": null, 
 "problem_type": null, 
 "_name_or_path": "", 
 "transformers_version": "4.8.2", 
 "vocab_size": 250100, 
 "n_ctx": 1024, 
 "n_positions": 1024, 
 "n_embd": 1024, 
 "n_layer": 24, 
 "n_head": 16, 
 "n_inner": 4096, 
 "activation_function": "gelu_new", 
 "resid_pdrop": 0.1, 
 "embd_pdrop": 0.1, 
 "attn_pdrop": 0.1, 
 "layer_norm_epsilon": 1e-05, 
 "initializer_range": 0.02, 
 "summary_type": "cls_index", 
 "summary_use_proj": true, 
 "summary_activation": null, 
 "summary_first_dropout": 0.1, 
 "summary_proj_to_labels": true, 
 "gradient_checkpointing": false, 
 "scale_attn_weights": true, 
 "use_cache": true, 
 "model_type": "gpt2"}

配置的参数。

pytorch_model.bin

使用pytorch训练保存的模型。

special_tokens_map.json

{"eos_token": "</s>", "unk_token": "<unk>", "pad_token": "<pad>","additional_special_tokens": []}

特殊tokens的映射。

spiece.model

spiece.model 文件是 自然语言处理模型中常用的词汇表文件,用于将文本数据中的单词或子词转换为数字编码,以便进行模型训练、推理和预测等操作。

spiece.model 文件是由 SentencePiece 工具生成的,它是一种基于未经处理的文本数据自动构建子词词汇表的工具。使用 SentencePiece 工具可以灵活地构建不同大小的词汇表,并根据实际任务对词汇表进行优化。在生成 spiece.model 文件时,可以通过调整参数来控制词汇表的大小、覆盖率、粒度等,以满足不同的需求。

>>> import sentencepiece as spm
>>> s = spm.SentencePieceProcessor(model_file='spm.model')
>>> for n in range(5):
...     s.encode('New York', out_type=str, enable_sampling=True, alpha=0.1, nbest_size=-1)
...
['▁', 'N', 'e', 'w', '▁York']
['▁', 'New', '▁York']
['▁', 'New', '▁Y', 'o', 'r', 'k']
['▁', 'New', '▁York']
['▁', 'New', '▁York']

需要注意的是,在使用 spiece.model 文件时,需要保证使用相同的词汇表和编码方式,以避免出现编码错误或无法解析的情况。

tokenizer_config.json

{"eos_token": "</s>", "unk_token": "<unk>", "pad_token": "<pad>", "extra_ids": 0}

tokenizer的配置。

posted @ 2023-07-09 17:37  张Zong在修行  阅读(303)  评论(0编辑  收藏  举报