List of topics
Biểu thức chính quy - Regular Expressions
Chi tiết các thuật toán tách từ
Chuẩn hóa văn bản
[Bổ trợ học máy] Mô hình hồi quy tuyến tính
[Bổ trợ học máy] Các thuật toán Training
Vector Semantics và Embeddings
SkipGram, Glove và FastText
Mô hình ngôn ngữ
RNN và LSTM
Bài toán dịch máy
Mô hình Transfomer
Mô hình Bert và ứng dụng
Thực hành Bert và ứng dụng với bài toán NER và POS Tag
GPT + Đào tạo phân tán
Bài toán truy xuất thông tin - Information Retrieval
Vector Database and RAG
Transformer nâng cao
Prompt Engineering
Dự án cuối khóa

Transformer nâng cao

Các cách đào tạo mô hình Transformer trên văn bản dài

  • Cách 1: Positional Encoding tốt hơn. Thay vì dùng encoding vị trí như paper gốc Transformer, 2 cái tên có thể thay thế là ALiBi và ROPE. Một cách encode vị trí có thể scale theo context của câu.

  • Cách 2: Bạn không cần phải tính toán attention scores giữa tất cả các tokens. Một số tokens quan trọng hơn các tokens khác, vì vậy có thể sử dụng Sparse Attention. Điều này sẽ tăng tốc cả quá trình training và inference.

  • Cách 3: Flash Attention triển khai hiệu quả attention layer cho GPU. Nó sử dụng tiling và tránh việc tạo ra các ma trận trung gian lớn (n, n) không phù hợp với GPU SRAM. Điều này sẽ tăng tốc cả quá trình training và inference.

  • Multi-Query attention thay vì Multi-Head attention. Bạn chia sẻ weights giữa tất cả các heads khi nhân tuyến tính K và V. Nó sẽ tăng tốc đáng kể quá trình inference.

  • Conditional computation tránh việc sử dụng tất cả các model parameters lên tất cả các tokens từ input sequence. CoLT5 chỉ áp dụng các tính toán nặng nề lên những tokens quan trọng nhất và xử lý phần còn lại của các tokens với một phiên bản nhẹ hơn của các layers. Điều này sẽ tăng tốc cả quá trình training và inference.

1. Tối ưu trên văn bản dài

1.1. Cách 1 - ROPE

Đưa Rope vào Transformer:

Team nâng cấp mô hình Transformer thay vì sử dụng Embedding vị trí thường thì sử dụng Phép nhúng vị trí xoay (Rotary Position Embedding) giúp cải thiện hiệu năng phân loại từ 1-2%.

RoFormer thêm thông tin vị trí vào vector q k thay vì phải tạo một lớp chỉ positional Embedding.

RoFormer áp dụng việc xoay vector q k với một góc không đổi để tăng mối quan hệ vị trí tương đối.

Ví dụ ở vị trí trong câu từ m=1 đến m=2 và vị trí m=2 đến m=3, ở cùng một vị trí embedding ví dụ i = 0 vector q sẽ quay một góc giống nhau. Tương tự vector k cũng quay một góc giống nhau.

Notebook: https://colab.research.google.com/drive/1QBkP6ve4f2-KapKaWDeodkR8_2JEYWjw?usp=sharing.

Bài báo: https://arxiv.org/pdf/2104.09864v5.

Biểu diễn ROPE: https://colab.research.google.com/drive/1SMsORT8958HOs2c99bC9FYV4sfKrs0el?usp=sharing

1.3. Cách 3 - Flash Attention

Cơ chế

Lập trình

Team thực hiện Benchmark Multiheaded Attention thường của Transformer và FlashAttention để tối ưu truy cập memory của GPU.

Kết quả sau 1000 lần thực hiện thì FlashAttention nhanh hơn khoảng gấp rưỡi so với Attention thông thường.

BenchMark này được thực hiện trên GPU T4 Google Colab.

P/S: trong Pytorch hàm scaled_dot_product_attention đã sử dụng Attention.

Notebook và kết quả: https://colab.research.google.com/drive/1-HjN3McMS_boMyBZFAt1TP7NLoRUd346?usp=sharing

1.5. Mixture of Experts

1.6. Một số hướng mới

3. Video

3.1. [NLP 02] Zoom 9-10-2024

1. Tối ưu trên văn bản dài
1.1. Cách 1 - ROPE
1.2. Cách 2 - Sparse Attention
1.3. Cách 3 - Flash Attention
1.4. Cách 4 - Multiquery Attention
1.5. Mixture of Experts
1.6. Một số hướng mới
2. Tối ưu tốc độ sinh
2.1. Beam Search
2.2. KV Cache
3. Video
3.1. [NLP 02] Zoom 9-10-2024