预训练模型 | 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的配置。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)