Transformers documentation
CPM
Bu model 2020-12-01 tarihinde HF papers'ta yayımlandı ve 2021-04-10 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
CPM
Genel Bakış
CPM modeli, 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 tarafından CPM: A Large-scale Generative Chinese Pre-trained Language Model makalesinde önerilmiştir.
Makalenin özeti aşağıdaki gibidir:
Önceden eğitilmiş dil modelleri (PLM), çeşitli aşağı akış NLP görevleri için faydalı olduğu kanıtlanmıştır. Son zamanlarda, 175 milyar parametreye ve 570GB eğitim verisine sahip GPT-3, az örnekli (hatta sıfır örnekli) öğrenme kapasitesi nedeniyle çok fazla ilgi çekti. Ancak GPT-3'ü Çin NLP görevlerini çözmek için uygulamak hâlâ zorlu, çünkü GPT-3'ün eğitim korpusu ağırlıklı olarak İngilizcedir ve parametreler kamuya açık değildir. Bu teknik raporda, büyük ölçekli Çin eğitim verisi üzerinde üretken ön eğitimle Çin Ön-eğitilmiş Dil Modelini (CPM) yayımlıyoruz. Bilgimize göre, 2,6 milyar parametreye ve 100GB Çin eğitim verisine sahip CPM, sohbet, deneme üretimi, boşluk doldurma testi ve dil anlama gibi çeşitli aşağı akış Çin NLP görevlerini kolaylaştırabilecek en büyük Çin ön-eğitilmiş dil modelidir. Kapsamlı deneyler, CPM'nin az örnekli (hatta sıfır örnekli) öğrenme ayarlarında birçok NLP görevinde güçlü performans elde ettiğini göstermektedir.
Bu model canwenxu tarafından katkıda bulunmuştur. Orijinal uygulama burada bulunabilir: https://github.com/TsinghuaAI/CPM-Generate
CPM’nin mimarisi, tokenizasyon yöntemi dışında GPT-2 ile aynıdır. API referans bilgileri için GPT-2 belgelerine başvurun.
CpmTokenizer
sınıf 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 )
Jieba-RS segmentasyon aracıyla ön-tokenizasyonu çalıştırır. CPM modellerinde kullanılır.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Özel jetonların ekleneceği kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi.
Dönüş değeri
list[int]
Uygun özel jetonlarla girdi kimlikleri listesi.
Sıralı sınıflandırma görevleri için bir dizi veya dizi çiftinden model girdilerini birleştirerek ve özel jetonlar ekleyerek oluşturun. Bir XLNet dizisi aşağıdaki biçime sahiptir:
- tek dizi:
X <sep> <cls> - dizi çifti:
A <sep> B <sep> <cls>
Tek bir dizideki token dizisini (alt kelimeler için dizeler) dönüştürür.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi.
Dönüş değeri
list[int]
Verilen dizilere göre token type kimlikleri listesi.
Sıralama çifti sınıflandırma görevinde kullanılacak şekilde, iletilen iki diziden bir maske oluşturun. Bir XLNet
sequence pair mask aşağıdaki formata sahiptir:
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence | second sequence |token_ids_1 None ise, bu yöntem maskenin yalnızca ilk bölümünü (0'ları) döndürür.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi. - already_has_special_tokens (
bool, isteğe bağlı, varsayılanFalse) — Token listesinin, model için özel token'larla zaten biçimlendirilmiş olup olmadığı.
Dönüş değeri
list[int]
[0, 1] aralığında tamsayıların bir listesi: özel bir jeton için 1, bir dizi jetonu için 0.
Özel tokenler eklenmemiş bir token listesinden dizi kimliklerini alır. Bu yöntem, tokenizer'ın prepare_for_model yöntemi kullanılarak özel tokenler eklenirken çağrılır.
CpmTokenizerFast
sınıf 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 )
Jieba-RS segmentasyon aracıyla ön-tokenizasyonu çalıştırır. CPM modellerinde kullanılır.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Özel jetonların ekleneceği kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi.
Dönüş değeri
list[int]
Uygun özel jetonlarla girdi kimlikleri listesi.
Sıralı sınıflandırma görevleri için bir dizi veya dizi çiftinden model girdilerini birleştirerek ve özel jetonlar ekleyerek oluşturun. Bir XLNet dizisi aşağıdaki biçime sahiptir:
- tek dizi:
X <sep> <cls> - dizi çifti:
A <sep> B <sep> <cls>
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi.
Dönüş değeri
list[int]
Verilen dizilere göre token type kimlikleri listesi.
Sıralama çifti sınıflandırma görevinde kullanılacak şekilde, iletilen iki diziden bir maske oluşturun. Bir XLNet
sequence pair mask aşağıdaki formata sahiptir:
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence | second sequence |token_ids_1 None ise, bu yöntem maskenin yalnızca ilk bölümünü (0'ları) döndürür.