Transformers documentation

CPM

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Mô hình này được công bố trên HF papers vào ngày 2020-12-01 và được đóng góp cho Hugging Face Transformers vào ngày 2021-04-10.

CPM

Tổng quan

Mô hình CPM được đề xuất trong CPM: A Large-scale Generative Chinese Pre-trained Language Model bởi 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.

Tóm tắt từ bài báo như sau:

Các Mô hình Ngôn ngữ Tiền huấn luyện (PLM) đã chứng minh được lợi ích của chúng đối với nhiều tác vụ NLP hạ nguồn khác nhau. Gần đây, GPT-3, với 175 tỷ tham số và 570GB dữ liệu huấn luyện, đã thu hút nhiều sự chú ý nhờ khả năng học few-shot (thậm chí zero-shot). Tuy nhiên, việc áp dụng GPT-3 để giải quyết các tác vụ NLP tiếng Trung vẫn còn nhiều thách thức, vì tập dữ liệu huấn luyện của GPT-3 chủ yếu là tiếng Anh và các tham số không được công bố công khai. Trong báo cáo kỹ thuật này, chúng tôi công bố Mô hình Ngôn ngữ Tiền huấn luyện tiếng Trung (CPM) với tiền huấn luyện sinh tạo trên dữ liệu huấn luyện tiếng Trung quy mô lớn. Theo hiểu biết của chúng tôi, CPM, với 2,6 tỷ tham số và 100GB dữ liệu huấn luyện tiếng Trung, là mô hình ngôn ngữ tiền huấn luyện tiếng Trung lớn nhất, có thể hỗ trợ một số tác vụ NLP tiếng Trung hạ nguồn, chẳng hạn như hội thoại, tạo bài luận, bài kiểm tra cloze và hiểu ngôn ngữ. Các thí nghiệm rộng rãi cho thấy CPM đạt hiệu suất mạnh mẽ trên nhiều tác vụ NLP trong các cài đặt học few-shot (thậm chí zero-shot).

Mô hình này được đóng góp bởi canwenxu. Bản triển khai gốc có thể được tìm thấy tại đây: https://github.com/TsinghuaAI/CPM-Generate

Kiến trúc của CPM giống với GPT-2, ngoại trừ phương pháp tokenization. Tham khảo tài liệu GPT-2 để biết thông tin tham chiếu API.

CpmTokenizer

lớp transformers.CpmTokenizer

< >

( 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 )

Chạy tiền phân tách token bằng công cụ phân đoạn Jieba-RS. Nó được sử dụng trong các mô hình CPM.

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID mà các token đặc biệt sẽ được thêm vào.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.

Trả về

list[int]

Danh sách input IDs với các token đặc biệt phù hợp.

Xây dựng đầu vào mô hình từ một chuỗi hoặc một cặp chuỗi cho các tác vụ phân loại chuỗi bằng cách nối và thêm các token đặc biệt. Một chuỗi XLNet có định dạng như sau:

  • một chuỗi đơn: X <sep> <cls>
  • cặp chuỗi: A <sep> B <sep> <cls>

convert_tokens_to_string

< >

( tokens )

Chuyển đổi một chuỗi các token (chuỗi ký tự cho các từ con) trong một chuỗi duy nhất.

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.

Trả về

list[int]

Danh sách token type IDs theo chuỗi được cho.

Tạo một mask từ hai chuỗi được truyền vào để sử dụng trong một tác vụ phân loại cặp chuỗi. Một XLNet

mặt nạ cặp chuỗi có định dạng như sau:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

Nếu token_ids_1 là None, phương thức này chỉ trả về phần đầu tiên của mask (các số 0).

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.
  • already_has_special_tokens (bool, tùy chọn, mặc định là False) — Danh sách token đã được định dạng với các token đặc biệt cho mô hình hay chưa.

Trả về

list[int]

Một danh sách các số nguyên trong khoảng [0, 1]: 1 cho một token đặc biệt, 0 cho một token chuỗi.

Lấy các id của chuỗi từ một danh sách token chưa được thêm token đặc biệt. Phương thức này được gọi khi thêm token đặc biệt bằng cách sử dụng phương thức prepare_for_model của tokenizer.

CpmTokenizerFast

lớp transformers.CpmTokenizerFast

< >

( 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 )

Chạy tiền phân tách token bằng công cụ phân đoạn Jieba-RS. Nó được sử dụng trong các mô hình CPM.

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID mà các token đặc biệt sẽ được thêm vào.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.

Trả về

list[int]

Danh sách input IDs với các token đặc biệt phù hợp.

Xây dựng đầu vào mô hình từ một chuỗi hoặc một cặp chuỗi cho các tác vụ phân loại chuỗi bằng cách nối và thêm các token đặc biệt. Một chuỗi XLNet có định dạng như sau:

  • một chuỗi đơn: X <sep> <cls>
  • cặp chuỗi: A <sep> B <sep> <cls>

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.

Trả về

list[int]

Danh sách token type IDs theo chuỗi được cho.

Tạo một mask từ hai chuỗi được truyền vào để sử dụng trong một tác vụ phân loại cặp chuỗi. Một XLNet

mặt nạ cặp chuỗi có định dạng như sau:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

Nếu token_ids_1 là None, phương thức này chỉ trả về phần đầu tiên của mask (các số 0).

Update on GitHub