Transformers documentation
Từ điển
Từ điển
Từ điển này định nghĩa các thuật ngữ chung về machine learning và 🤗 Transformers để giúp bạn hiểu tài liệu tốt hơn.
A
attention mask
Mặt nạ chú ý (attention mask) là một đối số tùy chọn được sử dụng khi xử lý các chuỗi (sequences) theo lô (batching).
Tham số này chỉ cho mô hình biết những token nào cần được chú ý và những token nào không.
Ví dụ, hãy xem xét hai chuỗi sau:
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "This is a short sequence."
>>> sequence_b = "This is a rather long sequence. It is at least longer than the sequence A."
>>> encoded_sequence_a = tokenizer(sequence_a)["input_ids"]
>>> encoded_sequence_b = tokenizer(sequence_b)["input_ids"]Các phiên bản đã mã hóa có độ dài khác nhau:
>>> len(encoded_sequence_a), len(encoded_sequence_b)
(8, 19)Do đó, chúng ta không thể đặt chúng cùng nhau trong cùng một tensor như vậy. Chuỗi đầu tiên cần được đệm (padding) lên đến độ dài của chuỗi thứ hai, hoặc chuỗi thứ hai cần bị cắt ngắn xuống độ dài của chuỗi đầu tiên.
Trong trường hợp đầu tiên, danh sách các ID sẽ được mở rộng bằng các chỉ số đệm. Chúng ta có thể truyền một danh sách vào tokenizer và yêu cầu nó đệm như sau:
>>> padded_sequences = tokenizer([sequence_a, sequence_b], padding=True)Chúng ta có thể thấy rằng các số 0 đã được thêm vào phía bên phải của câu đầu tiên để làm cho nó có cùng độ dài với câu thứ hai:
>>> padded_sequences["input_ids"]
[[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]Sau đó, điều này có thể được chuyển đổi thành một tensor trong PyTorch. Attention mask là một tensor nhị phân chỉ ra vị trí của các chỉ số được đệm (padded) để mô hình không chú ý đến chúng. Đối với BertTokenizer, 1 chỉ ra một giá trị cần được chú ý, trong khi 0 chỉ ra một giá trị được đệm. Attention mask này nằm trong từ điển được trả về bởi tokenizer dưới khóa “attention_mask”:
>>> padded_sequences["attention_mask"]
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]mô hình tự mã hóa
Xem mô hình encoder và masked language modeling
mô hình tự hồi quy
Xem mô hình hóa ngôn ngữ nhân quả và mô hình giải mã
B
backbone
Backbone là mạng (các embedding và các lớp) tạo ra các trạng thái ẩn hoặc đặc trưng thô. Nó thường được kết nối với một head, nhận các đặc trưng này làm đầu vào để đưa ra dự đoán. Ví dụ, ViTModel là một backbone không có head cụ thể ở phía trên. Các mô hình khác cũng có thể sử dụng ViTModel làm backbone, chẳng hạn như DPT.
C
mô hình hóa ngôn ngữ nhân quả
Một tác vụ tiền huấn luyện mà trong đó mô hình đọc các văn bản theo thứ tự và phải dự đoán từ tiếp theo. Thông thường, điều này được thực hiện bằng cách đọc toàn bộ câu nhưng sử dụng một mặt nạ (mask) bên trong mô hình để che các token tương lai tại một bước thời gian nhất định.
channel
Hình ảnh màu được tạo thành từ một số tổ hợp các giá trị trong ba kênh: đỏ, lục và lam (RGB), còn hình ảnh thang xám chỉ có một kênh. Trong 🤗 Transformers, kênh có thể là chiều đầu tiên hoặc chiều cuối cùng của tensor hình ảnh: [n_channels, height, width] hoặc [height, width, n_channels].
phân loại thời gian kết nối (CTC)
Thuật toán cho phép mô hình học mà không cần biết chính xác cách đầu vào và đầu ra được căn chỉnh; CTC tính toán phân phối của tất cả các đầu ra có thể có cho một đầu vào nhất định và chọn ra đầu ra có khả năng cao nhất từ đó. CTC thường được sử dụng trong các tác vụ nhận dạng giọng nói vì giọng nói không phải lúc nào cũng căn chỉnh sạch sẽ với bản ghi chép do nhiều lý do khác nhau, chẳng hạn như tốc độ nói khác nhau của người nói.
cuộn
Một loại lớp trong mạng nơ-ron, trong đó ma trận đầu vào được nhân theo từng phần tử với một ma trận nhỏ hơn (lõi hoặc bộ lọc) và các giá trị được cộng lại trong một ma trận mới. Đây được gọi là phép toán tích chập, được lặp lại trên toàn bộ ma trận đầu vào. Mỗi phép toán được áp dụng cho một đoạn khác nhau của ma trận đầu vào. Mạng nơ-ron tích chập (CNN) thường được sử dụng trong thị giác máy tính.
D
DataParallel (DP)
Kỹ thuật song song hóa cho việc huấn luyện trên nhiều GPU, trong đó cùng một cấu hình được nhân bản nhiều lần, mỗi bản nhận một lát dữ liệu riêng biệt. Việc xử lý được thực hiện song song và tất cả các cấu hình được đồng bộ hóa vào cuối mỗi bước huấn luyện.
Tìm hiểu thêm về DataParallel.
ID đầu vào của bộ giải mã
Đầu vào này dành riêng cho các mô hình encoder-decoder và chứa các ID đầu vào sẽ được đưa vào decoder. Các đầu vào này nên được sử dụng cho các tác vụ sequence-to-sequence, chẳng hạn như dịch thuật hoặc tóm tắt, và thường được xây dựng theo cách riêng biệt cho từng mô hình.
Hầu hết các mô hình encoder-decoder (BART, T5) tự tạo decoder_input_ids của chúng từ labels. Đối với các mô hình như vậy,
việc truyền labels là cách được ưu tiên để xử lý huấn luyện.
Hãy kiểm tra tài liệu của từng mô hình để xem chúng xử lý các ID đầu vào này như thế nào cho việc huấn luyện tuần tự sang tuần tự.
mô hình decoder
Còn được gọi là các mô hình tự hồi quy, các mô hình decoder liên quan đến một tác vụ tiền huấn luyện (gọi là mô hình hóa ngôn ngữ nhân quả) trong đó mô hình đọc các văn bản theo thứ tự và phải dự đoán từ tiếp theo. Việc này thường được thực hiện bằng cách đọc toàn bộ câu với một mặt nạ để che các token tương lai tại một bước thời gian nhất định.
học sâu (DL)
Các thuật toán học máy sử dụng mạng nơ-ron có nhiều lớp.
E
mô hình encoder
Còn được gọi là mô hình tự mã hóa, các mô hình mã hóa nhận một đầu vào (chẳng hạn như văn bản hoặc hình ảnh) và biến đổi chúng thành một biểu diễn số nén gọi là embedding. Thông thường, các mô hình mã hóa được tiền huấn luyện bằng các kỹ thuật như masked language modeling, trong đó một phần của chuỗi đầu vào bị che đi và buộc mô hình phải tạo ra các biểu diễn có ý nghĩa hơn.
F
trích xuất đặc trưng
Quá trình lựa chọn và biến đổi dữ liệu thô thành một tập các đặc trưng có tính thông tin và hữu ích hơn cho các thuật toán học máy. Một số ví dụ về trích xuất đặc trưng bao gồm việc biến đổi văn bản thô thành các vector nhúng từ (word embeddings) và trích xuất các đặc trưng quan trọng như cạnh hoặc hình dạng từ dữ liệu ảnh/đoạn video.
chia nhỏ khối tiền tiến
Trong mỗi khối chú ý dư (residual attention block) của transformers, lớp tự chú ý (self-attention) thường được theo sau bởi 2 lớp tiền truyền (feed forward).
Kích thước nhúng trung gian (intermediate embedding size) của các lớp tiền truyền thường lớn hơn kích thước ẩn (hidden size) của mô hình (ví dụ, đối với google-bert/bert-base-uncased).
Với đầu vào có kích thước [batch_size, sequence_length], bộ nhớ cần thiết để lưu trữ các embedding feed forward trung gian [batch_size, sequence_length, config.intermediate_size] có thể chiếm một phần lớn trong việc sử dụng bộ nhớ. Các tác giả của Reformer: The Efficient Transformer nhận thấy rằng vì phép tính độc lập với chiều sequence_length, về mặt toán học, việc tính toán các embedding đầu ra của cả hai lớp feed forward [batch_size, config.hidden_size]_0, ..., [batch_size, config.hidden_size]_n riêng lẻ và sau đó ghép chúng lại thành [batch_size, sequence_length, config.hidden_size] với n = sequence_length là tương đương, đổi lại thời gian tính toán tăng lên nhưng giảm bớt việc sử dụng bộ nhớ, đồng thời cho ra kết quả tương đương về mặt toán học.
Đối với các mô hình sử dụng hàm apply_chunking_to_forward(), chunk_size xác định số lượng output embeddings được tính toán song song, do đó xác định sự đánh đổi giữa độ phức tạp bộ nhớ và thời gian. Nếu chunk_size được đặt thành 0, sẽ không thực hiện việc chia chunk cho feed forward.
các mô hình đã tinh chỉnh
Finetuning là một dạng của transfer learning, trong đó bạn lấy một mô hình đã được huấn luyện trước, đóng băng các trọng số của nó và thay thế lớp đầu ra bằng một model head mới được thêm vào. Model head này được huấn luyện trên bộ dữ liệu mục tiêu của bạn.
Xem hướng dẫn Chỉnh huấn luyện một mô hình được huấn luyện trước để biết thêm chi tiết, và tìm hiểu cách chỉnh huấn luyện các mô hình với 🤗 Transformers.
H
head
Model head (đầu mô hình) là lớp cuối cùng của mạng nơ-ron, nhận các trạng thái ẩn thô (raw hidden states) và chiếu chúng lên một chiều khác. Mỗi tác vụ có một model head riêng. Ví dụ:
- GPT2ForSequenceClassification là một đầu phân loại chuỗi - một lớp tuyến tính - nằm trên mô hình cơ sở GPT2Model.
- ViTForImageClassification là một đầu phân loại hình ảnh - một lớp tuyến tính đặt trên trạng thái ẩn cuối cùng của token
CLS- nằm trên mô hình cơ sở ViTModel. - Wav2Vec2ForCTC là một đầu mô hình hóa ngôn ngữ có CTC trên nền tảng Wav2Vec2Model cơ bản.
I
image patch
Các mô hình Transformer dựa trên thị giác chia một hình ảnh thành các mảnh nhỏ hơn, nhúng tuyến tính chúng, sau đó truyền vào mô hình dưới dạng một chuỗi. Bạn có thể tìm thấy patch_size - hoặc độ phân giải - của mô hình trong cấu hình của nó.
inference
Inference là quá trình đánh giá một mô hình trên dữ liệu mới sau khi huấn luyện hoàn tất. Xem hướng dẫn Pipeline for inference để tìm hiểu cách thực hiện inference với 🤗 Transformers.
ID đầu vào
Các id đầu vào thường là tham số bắt buộc duy nhất cần truyền cho mô hình. Chúng là các chỉ số token, tức là biểu diễn số của các token tạo nên các chuỗi sẽ được mô hình sử dụng làm đầu vào.
Mỗi tokenizer hoạt động theo cách khác nhau nhưng cơ chế cơ bản vẫn giống nhau. Dưới đây là một ví dụ sử dụng tokenizer BERT, đây là một tokenizer WordPiece:
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence = "A Titan RTX has 24GB of VRAM"Tokenizer chịu trách nhiệm chia chuỗi thành các token có sẵn trong từ điển của tokenizer.
>>> tokenized_sequence = tokenizer.tokenize(sequence)Các token là từ hoặc phần từ. Ví dụ, “VRAM” không có trong từ điển của mô hình nên nó được tách thành “V”, “RA” và “M”. Để chỉ ra rằng các token đó không phải là những từ riêng biệt mà là các phần của cùng một từ, một tiền tố double-hash được thêm vào “RA” và “M”:
>>> print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']Các token này sau đó có thể được chuyển đổi thành các ID mà mô hình có thể hiểu được. Việc này có thể thực hiện bằng cách trực tiếp đưa câu vào tokenizer, tận dụng cài đặt Rust của 🤗 Tokenizers để đạt hiệu suất tối ưu.
>>> inputs = tokenizer(sequence)Tokenizer trả về một từ điển chứa tất cả các đối số cần thiết để mô hình tương ứng hoạt động đúng. Các chỉ số token nằm dưới khóa input_ids:
>>> encoded_sequence = inputs["input_ids"]
>>> print(encoded_sequence)
[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]Lưu ý rằng tokenizer tự động thêm các “token đặc biệt” (nếu mô hình liên quan có sử dụng chúng), đây là các ID đặc biệt mà mô hình đôi khi sử dụng.
Nếu chúng ta giải mã chuỗi các id trước đó,
>>> decoded_sequence = tokenizer.decode(encoded_sequence)chúng ta sẽ thấy
>>> print(decoded_sequence)
[CLS] A Titan RTX has 24GB of VRAM [SEP]vì đây là cách mà BertModel sẽ kỳ vọng vào các đầu vào của nó.
L
labels
Các nhãn là một đối số tùy chọn có thể được truyền vào để mô hình tự tính toán loss. Các nhãn này phải là dự đoán mong đợi của mô hình: nó sẽ sử dụng loss chuẩn để tính toán loss giữa các dự đoán của nó và giá trị mong đợi (nhãn).
Các nhãn này khác nhau tùy theo đầu mô hình, ví dụ:
- Đối với các mô hình phân loại chuỗi (BertForSequenceClassification), mô hình mong đợi một tensor có chiều
(batch_size)trong đó mỗi giá trị của batch tương ứng với nhãn dự kiến của toàn bộ chuỗi. - Đối với các mô hình phân loại token, (BertForTokenClassification), mô hình mong đợi một tensor có kích thước
(batch_size, seq_length)trong đó mỗi giá trị tương ứng với nhãn dự kiến của từng token riêng lẻ. - Đối với mô hình hóa ngôn ngữ có che (masked language modeling) (BertForMaskedLM), mô hình mong đợi một tensor có kích thước
(batch_size, seq_length)trong đó mỗi giá trị tương ứng với nhãn mong đợi của từng token riêng lẻ: nhãn là ID của token cho token bị che, và các giá trị cần bỏ qua cho phần còn lại (thường là -100). - Đối với các tác vụ sequence-to-sequence, (BartForConditionalGeneration, MBartForConditionalGeneration), mô hình
mong đợi một tensor có chiều
(batch_size, tgt_seq_length)trong đó mỗi giá trị tương ứng với các chuỗi đích liên quan đến từng chuỗi đầu vào. Trong quá trình huấn luyện, cả BART và T5 sẽ tự động tạo radecoder_input_idsvà decoder attention masks phù hợp bên trong. Chúng thường không cần được cung cấp. Điều này không áp dụng cho các mô hình sử dụng khung Encoder-Decoder. - Đối với các mô hình phân loại ảnh, (ViTForImageClassification), mô hình mong đợi một tensor có chiều
(batch_size)trong đó mỗi giá trị của batch tương ứng với nhãn dự kiến của từng ảnh riêng lẻ. - Đối với các mô hình phân đoạn ngữ nghĩa, (SegformerForSemanticSegmentation), mô hình mong đợi một tensor có kích thước
(batch_size, height, width)trong đó mỗi giá trị của batch tương ứng với nhãn mong đợi của từng pixel riêng lẻ. - Đối với các mô hình phát hiện đối tượng, (DetrForObjectDetection), mô hình mong đợi một danh sách các từ điển có khóa
class_labelsvàboxes, trong đó mỗi giá trị của batch tương ứng với nhãn mong đợi và số lượng hộp bao quanh của từng hình ảnh riêng lẻ. - Đối với các mô hình nhận dạng giọng nói tự động, (Wav2Vec2ForCTC), mô hình mong đợi một tensor có kích thước
(batch_size, target_length)trong đó mỗi giá trị tương ứng với nhãn dự kiến của từng token riêng lẻ.
Nhãn của từng model có thể khác nhau, vì vậy hãy luôn kiểm tra tài liệu của mỗi model để biết thêm thông tin về các nhãn cụ thể của chúng!
Các mô hình cơ sở (BertModel) không nhận nhãn, vì đây là các mô hình transformer cơ sở, chỉ đơn thuần xuất ra các đặc trưng.
các mô hình ngôn ngữ lớn (LLM)
Thuật ngữ chung dùng để chỉ các mô hình ngôn ngữ transformer (GPT-3, BLOOM, OPT) được huấn luyện trên một lượng lớn dữ liệu. Các mô hình này cũng thường có số lượng tham số có thể học rất lớn (ví dụ: 175 tỷ cho GPT-3).
M
mô hình hóa ngôn ngữ có che (masked language modeling - MLM)
Một tác vụ tiền huấn luyện trong đó mô hình nhìn thấy một phiên bản bị hỏng của văn bản, thường được thực hiện bằng cách che một số token ngẫu nhiên, và phải dự đoán văn bản gốc.
đa phương thức
Nhiệm vụ kết hợp văn bản với một loại đầu vào khác (ví dụ: hình ảnh).
N
Tạo ngôn ngữ tự nhiên (NLG)
Tất cả các tác vụ liên quan đến việc tạo văn bản (ví dụ: Viết Với Transformers, dịch thuật).
Xử lý ngôn ngữ tự nhiên (NLP)
Một cách chung để nói về “xử lý văn bản”.
Hiểu ngôn ngữ tự nhiên (NLU)
Tất cả các tác vụ liên quan đến việc hiểu nội dung trong một văn bản (ví dụ như phân loại toàn bộ văn bản, các từ riêng lẻ).
P
pipeline
Một pipeline trong 🤗 Transformers là một khái niệm trừu tượng, chỉ đến một chuỗi các bước được thực hiện theo một trình tự cụ thể để tiền xử lý và biến đổi dữ liệu, sau đó trả về một dự đoán từ mô hình. Một số giai đoạn ví dụ có thể có trong một pipeline bao gồm tiền xử lý dữ liệu, trích xuất đặc trưng và chuẩn hóa.
Để biết thêm chi tiết, xem Pipelines for inference.
PipelineParallel (PP)
Kỹ thuật song song trong đó mô hình được chia dọc (theo cấp lớp) trên nhiều GPU, sao cho chỉ một hoặc vài lớp của mô hình được đặt trên một GPU duy nhất. Mỗi GPU xử lý song song các giai đoạn khác nhau của pipeline và làm việc trên một phần nhỏ của batch. Tìm hiểu thêm về PipelineParallel.
giá trị pixel
Một tensor chứa các biểu diễn số của một hình ảnh được truyền vào mô hình. Các giá trị pixel có hình dạng [batch_size, num_channels, height, width] và được tạo ra từ một bộ xử lý hình ảnh.
pooling
Một thao tác thu gọn một ma trận thành một ma trận nhỏ hơn, bằng cách lấy giá trị lớn nhất hoặc trung bình của các chiều được pooling. Các lớp pooling thường được đặt giữa các lớp tích chập để hạ mẫu (downsample) biểu diễn đặc trưng.
ID vị trí
Ngược lại với RNN, vốn có vị trí của từng token được nhúng bên trong, các transformer không nhận biết được vị trí của từng token. Do đó, các ID vị trí (position_ids) được mô hình sử dụng để xác định vị trí của từng token trong danh sách các token.
Đây là một tham số tùy chọn. Nếu không có position_ids nào được truyền vào mô hình, các ID sẽ được tạo tự động dưới dạng nhúng vị trí tuyệt đối.
Các embedding vị trí tuyệt đối được chọn trong khoảng [0, config.max_position_embeddings - 1]. Một số mô hình sử dụng các loại embedding vị trí khác, chẳng hạn như embedding vị trí hình sin hoặc embedding vị trí tương đối.
tiền xử lý
Nhiệm vụ chuẩn bị dữ liệu thô thành định dạng có thể dễ dàng sử dụng bởi các mô hình học máy. Ví dụ, văn bản thường được tiền xử lý bằng cách phân tách token. Để có cái nhìn rõ hơn về việc tiền xử lý trông như thế nào đối với các loại đầu vào khác, hãy xem hướng dẫn Preprocess.
mô hình được huấn luyện trước
Một mô hình đã được tiền huấn luyện trên một số dữ liệu (ví dụ như toàn bộ Wikipedia). Các phương pháp tiền huấn luyện bao gồm một mục tiêu tự giám sát, có thể là đọc văn bản và cố gắng dự đoán từ tiếp theo (xem mô hình hóa ngôn ngữ nhân quả) hoặc che một số từ và cố gắng dự đoán chúng (xem mô hình hóa ngôn ngữ che).
Các mô hình giọng nói và thị giác có các mục tiêu tiền huấn luyện riêng. Ví dụ, Wav2Vec2 là một mô hình giọng nói được tiền huấn luyện trên một tác vụ tương phản, yêu cầu mô hình xác định biểu diễn giọng nói “đúng” từ một tập hợp các biểu diễn giọng nói “sai”. Mặt khác, BEiT là một mô hình thị giác được tiền huấn luyện trên tác vụ mô hình hóa ảnh có che, trong đó một số mảnh ảnh bị che đi và mô hình phải dự đoán các mảnh bị che (tương tự như mục tiêu mô hình hóa ngôn ngữ có che).
R
mạng nơ-ron hồi quy (RNN)
Một loại mô hình sử dụng vòng lặp trên một lớp để xử lý văn bản.
học biểu diễn
Một lĩnh vực con của machine learning, tập trung vào việc học các biểu diễn có ý nghĩa từ dữ liệu thô. Một số ví dụ về kỹ thuật biểu diễn học bao gồm word embeddings, autoencoders và Generative Adversarial Networks (GANs).
S
tốc độ lấy mẫu
Một phép đo bằng hertz cho biết số lượng mẫu (tín hiệu âm thanh) được lấy mỗi giây. Tốc độ lấy mẫu là kết quả của việc rời rạc hóa một tín hiệu liên tục như giọng nói.
self-attention
Mỗi phần tử của đầu vào xác định các phần tử khác trong đầu vào mà nó cần chú ý đến.
học tự giám sát
Một nhóm các kỹ thuật học máy trong đó mô hình tự tạo ra mục tiêu học tập từ dữ liệu không dán nhãn. Nó khác với học không giám sát và học có giám sát ở chỗ quá trình học được giám sát, nhưng không phải một cách tường minh từ phía người dùng.
Một ví dụ về học tự giám sát là modeling ngôn ngữ có mặt nạ, trong đó một mô hình được truyền các câu có một tỷ lệ token bị loại bỏ và học cách dự đoán các token bị thiếu.
học bán giám sát
Một phạm trù rộng của các kỹ thuật huấn luyện machine learning, tận dụng một lượng nhỏ dữ liệu có nhãn kết hợp với một lượng lớn dữ liệu không nhãn để cải thiện độ chính xác của mô hình, khác với học có giám sát và học không giám sát.
Một ví dụ về phương pháp học bán giám sát là “tự huấn luyện” (self-training), trong đó một mô hình được huấn luyện trên dữ liệu có nhãn, sau đó được sử dụng để đưa ra dự đoán trên dữ liệu không nhãn. Phần dữ liệu không nhãn mà mô hình dự đoán với độ tin cậy cao nhất sẽ được thêm vào tập dữ liệu có nhãn và dùng để huấn luyện lại mô hình.
sequence-to-sequence (seq2seq)
Các mô hình tạo ra một chuỗi mới từ một đầu vào, chẳng hạn như các mô hình dịch thuật hoặc các mô hình tóm tắt (chẳng hạn như Bart hoặc T5).
DDP phân mảnh
Một tên gọi khác cho khái niệm nền tảng ZeRO như được sử dụng bởi nhiều triển khai ZeRO khác.
stride
Trong convolution hoặc pooling, stride là khoảng cách mà kernel di chuyển trên một ma trận. Stride bằng 1 có nghĩa là kernel di chuyển một pixel một lúc, và stride bằng 2 có nghĩa là kernel di chuyển hai pixel một lúc.
học có giám sát
Một hình thức huấn luyện mô hình sử dụng trực tiếp dữ liệu có nhãn để hiệu chỉnh và hướng dẫn hiệu suất của mô hình. Dữ liệu được đưa vào mô hình đang được huấn luyện, và các dự đoán của nó được so sánh với các nhãn đã biết. Mô hình cập nhật trọng số của mình dựa trên mức độ sai lệch của các dự đoán, và quá trình này được lặp lại để tối ưu hóa hiệu suất mô hình.
T
Song song Tensor (TP)
Kỹ thuật song song hóa cho việc huấn luyện trên nhiều GPU, trong đó mỗi tensor được chia thành nhiều phần, thay vì toàn bộ tensor nằm trên một GPU duy nhất, mỗi phần của tensor nằm trên GPU được chỉ định riêng. Các phần được xử lý riêng biệt và song song trên các GPU khác nhau, và kết quả được đồng bộ hóa vào cuối bước xử lý. Đây là điều đôi khi được gọi là song song hóa ngang, vì việc chia tách diễn ra ở mức ngang. Tìm hiểu thêm về Tensor Parallelism tại đây.
token
Một phần của câu, thường là một từ, nhưng cũng có thể là một subword (các từ không phổ biến thường được tách thành các subword) hoặc một ký hiệu chấm câu.
ID loại token
Mục đích của một số mô hình là thực hiện phân loại trên các cặp câu hoặc trả lời câu hỏi.
Điều này yêu cầu hai chuỗi khác nhau phải được ghép lại trong một mục “input_ids” duy nhất, thường được thực hiện với sự hỗ trợ của các token đặc biệt, chẳng hạn như token phân loại ([CLS]) và token phân tách ([SEP]). Ví dụ, mô hình BERT xây dựng đầu vào hai chuỗi của nó như sau:
>>> # [CLS] SEQUENCE_A [SEP] SEQUENCE_B [SEP]Chúng ta có thể sử dụng tokenizer của mình để tự động tạo ra một câu như vậy bằng cách truyền hai chuỗi vào tokenizer dưới dạng hai đối số (không phải một danh sách như trước) như sau:
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "HuggingFace is based in NYC"
>>> sequence_b = "Where is HuggingFace based?"
>>> encoded_dict = tokenizer(sequence_a, sequence_b)
>>> decoded = tokenizer.decode(encoded_dict["input_ids"])sẽ trả về:
>>> print(decoded)
[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]Điều này là đủ để một số mô hình hiểu được nơi một chuỗi kết thúc và nơi chuỗi khác bắt đầu. Tuy nhiên, các mô hình khác, chẳng hạn như BERT, cũng triển khai các ID loại token (còn được gọi là ID phân đoạn). Chúng được biểu diễn dưới dạng một mặt nạ nhị phân xác định hai loại chuỗi trong mô hình.
Tokenizer trả về mặt nạ này dưới dạng mục “token_type_ids”:
>>> encoded_dict["token_type_ids"]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]Chuỗi đầu tiên, “context” được dùng cho câu hỏi, có tất cả các token của nó được biểu diễn bằng 0, trong khi chuỗi thứ hai, tương ứng với “question”, có tất cả các token của nó được biểu diễn bằng 1.
Một số mô hình, chẳng hạn như XLNetModel, sử dụng một token bổ sung được biểu diễn bằng 2.
chuyển giao học
Một kỹ thuật liên quan đến việc lấy một mô hình đã được huấn luyện trước và điều chỉnh nó để phù hợp với bộ dữ liệu đặc thù cho tác vụ của bạn. Thay vì huấn luyện một mô hình từ đầu, bạn có thể tận dụng kiến thức thu được từ một mô hình hiện có như một điểm khởi đầu. Điều này giúp tăng tốc quá trình học và giảm lượng dữ liệu huấn luyện cần thiết.
transformer
Kiến trúc mô hình học sâu dựa trên cơ chế tự chú ý (self-attention).
U
học không giám sát
Một hình thức huấn luyện mô hình trong đó dữ liệu cung cấp cho mô hình không được gắn nhãn. Các kỹ thuật học không giám sát khai thác thông tin thống kê của phân phối dữ liệu để tìm ra các mẫu hữu ích cho tác vụ đang thực hiện.
Z
Zero Redundancy Optimizer (ZeRO)
Kỹ thuật song song thực hiện việc chia nhỏ (sharding) các tensor khá tương tự như TensorParallel, ngoại trừ việc toàn bộ tensor được tái tạo kịp thời cho phép tính toán tiến (forward) hoặc lùi (backward), do đó mô hình không cần phải được sửa đổi. Phương pháp này cũng hỗ trợ các kỹ thuật offloading khác nhau để bù đắp cho bộ nhớ GPU hạn chế. Tìm hiểu thêm về ZeRO tại đây.
Update on GitHub