Transformers documentation
CPM
Este modelo foi publicado no HF papers em 2020-12-01 e contribuído para o Hugging Face Transformers em 2021-04-10.
CPM
Visão geral
O modelo CPM foi proposto em CPM: A Large-scale Generative Chinese Pre-trained Language Model por Zhengyan Zhang, Xu Han, Hao Zhou, Pei Ke, Yuxian Gu, Deming Ye, Yujia Qin, Yusheng Su, Haozhe Ji, Jian Guan, Fanchao Qi, Xiaozhi Wang, Yanan Zheng, Guoyang Zeng, Huanqi Cao, Shengqi Chen, Daixuan Li, Zhenbo Sun, Zhiyuan Liu, Minlie Huang, Wentao Han, Jie Tang, Juanzi Li, Xiaoyan Zhu, Maosong Sun.
O resumo do artigo é o seguinte:
Os Modelos de Linguagem Pré-treinados (PLMs) demonstraram ser benéficos para diversas tarefas de NLP de nível inferior. Recentemente, o GPT-3, com 175 bilhões de parâmetros e 570GB de dados de treinamento, chamou muita atenção devido à capacidade de aprendizado few-shot (e até zero-shot). No entanto, aplicar o GPT-3 para resolver tarefas de NLP em chinês ainda é desafiador, pois o corpus de treinamento do GPT-3 é predominantemente em inglês e os parâmetros não estão publicamente disponíveis. Neste relatório técnico, liberamos o Modelo de Linguagem Pré-treinado em Chinês (CPM) com pré-treinamento generativo em dados de treinamento em chinês em larga escala. Até onde temos conhecimento, o CPM, com 2,6 bilhões de parâmetros e 100GB de dados de treinamento em chinês, é o maior modelo de linguagem pré-treinado em chinês, o que pode facilitar várias tarefas de NLP em chinês de nível inferior, como conversação, geração de ensaios, teste de lacunas e compreensão de linguagem. Experimentos extensos demonstram que o CPM alcança forte desempenho em muitas tarefas de NLP nas configurações de aprendizado few-shot (e até zero-shot).
Este modelo foi contribuído por canwenxu. A implementação original pode ser encontrada aqui: https://github.com/TsinghuaAI/CPM-Generate
A arquitetura do CPM é a mesma do GPT-2, exceto pelo método de tokenização. Consulte a documentação do GPT-2 para informações de referência da API.
CpmTokenizer
classe transformers.CpmTokenizer
< source >( vocab_filedo_lower_case = Falseremove_space = Truekeep_accents = Falsebos_token = '<s>'eos_token = '</s>'unk_token = '<unk>'sep_token = '<sep>'pad_token = '<pad>'cls_token = '<cls>'mask_token = '<mask>'additional_special_tokens = ['<eop>', '<eod>']sp_model_kwargs: dict[str, typing.Any] | None = None**kwargs )
Executa a pré-tokenização com a ferramenta de segmentação Jieba-RS. É usado em modelos CPM.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parâmetros
- token_ids_0 (
list[int]) — Lista de IDs aos quais os tokens especiais serão adicionados. - token_ids_1 (
list[int], opcional) — Lista opcional de IDs para pares de sequências.
Retorna
list[int]
Lista de IDs de entrada com os tokens especiais apropriados.
Construa as entradas do modelo a partir de uma sequência ou de um par de sequências para tarefas de classificação de sequência, concatenando e adicionando tokens especiais. Uma sequência do XLNet tem o seguinte formato:
- sequência única:
X <sep> <cls> - par de sequências:
A <sep> B <sep> <cls>
Converte uma sequência de tokens (strings para subpalavras) em uma única string.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parâmetros
- token_ids_0 (
list[int]) — Lista de IDs. - token_ids_1 (
list[int], opcional) — Lista opcional de IDs para pares de sequências.
Retorna
list[int]
Lista de IDs de tipo de token de acordo com a(s) sequência(s) fornecida(s).
Crie uma máscara a partir das duas sequências passadas para ser usada em uma tarefa de classificação de pares de sequências. Um XLNet
a máscara de par de sequências tem o seguinte formato:
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence | second sequence |Se token_ids_1 for None, este método retorna apenas a primeira parte da máscara (0s).
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]
Parâmetros
- token_ids_0 (
list[int]) — Lista de IDs. - token_ids_1 (
list[int], opcional) — Lista opcional de IDs para pares de sequências. - already_has_special_tokens (
bool, opcional, padrãoFalse) — Indica se a lista de tokens já está formatada com tokens especiais para o modelo.
Retorna
list[int]
Uma lista de inteiros no intervalo [0, 1]: 1 para um token especial, 0 para um token de sequência.
Recupera os ids de sequência de uma lista de tokens que não possui tokens especiais adicionados. Este método é chamado ao adicionar tokens especiais usando o método prepare_for_model do tokenizer.
CpmTokenizerFast
classe transformers.CpmTokenizerFast
< source >( vocab_file = Nonetokenizer_file = Nonedo_lower_case = Falseremove_space = Truekeep_accents = Falsebos_token = '<s>'eos_token = '</s>'unk_token = '<unk>'sep_token = '<sep>'pad_token = '<pad>'cls_token = '<cls>'mask_token = '<mask>'additional_special_tokens = ['<eop>', '<eod>']**kwargs )
Executa a pré-tokenização com a ferramenta de segmentação Jieba-RS. É usado em modelos CPM.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parâmetros
- token_ids_0 (
list[int]) — Lista de IDs aos quais os tokens especiais serão adicionados. - token_ids_1 (
list[int], opcional) — Lista opcional de IDs para pares de sequências.
Retorna
list[int]
Lista de IDs de entrada com os tokens especiais apropriados.
Construa as entradas do modelo a partir de uma sequência ou de um par de sequências para tarefas de classificação de sequência, concatenando e adicionando tokens especiais. Uma sequência do XLNet tem o seguinte formato:
- sequência única:
X <sep> <cls> - par de sequências:
A <sep> B <sep> <cls>
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parâmetros
- token_ids_0 (
list[int]) — Lista de IDs. - token_ids_1 (
list[int], opcional) — Lista opcional de IDs para pares de sequências.
Retorna
list[int]
Lista de IDs de tipo de token de acordo com a(s) sequência(s) fornecida(s).
Crie uma máscara a partir das duas sequências passadas para ser usada em uma tarefa de classificação de pares de sequências. Um XLNet
a máscara de par de sequências tem o seguinte formato:
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence | second sequence |Se token_ids_1 for None, este método retorna apenas a primeira parte da máscara (0s).