Tokenization BPE Từ Đầu – Byte Pair Encoding
1. Khởi tạo vocabulary = tất cả ký tự đơn + ký hiệu kết thúc </w>
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: text-preprocessing-and-ngrams.
Nội dung đề bài
Mục tiêu kiến thức
Byte Pair Encoding (BPE) là thuật toán tokenization phổ biến nhất trong LLMs (GPT-2, GPT-3, LLaMA).
Thuật toán BPE:
- Khởi tạo vocabulary = tất cả ký tự đơn + ký hiệu kết thúc
</w> - Lặp
num_mergeslần:
a. Tìm cặp token liền kề xuất hiện nhiều nhất trong corpus b. Ghép cặp đó thành 1 token mới c. Thêm merge rule vào danh sách
Encode: áp dụng merge rules theo thứ tự để tokenize text mới.
Yêu cầu
def get_vocab(corpus: list[str]) -> dict:
# Split each word into chars + '</w>', count frequencies
# e.g. 'low': {'l o w </w>': 5}
pass
def get_stats(vocab: dict) -> dict:
# Count adjacent pair frequencies across all words
pass
def merge_vocab(pair: tuple, vocab: dict) -> dict:
# Merge pair into single token in vocab
pass
def train_bpe(corpus: list[str], num_merges: int) -> list[tuple]:
# Returns ordered list of merge rules (pairs)
pass
def encode_bpe(text: str, merges: list[tuple]) -> list[str]:
# Tokenize text using learned merges
passInput
- Hàm
get_vocab(corpus): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng. - Hàm
get_stats(vocab): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng. - Hàm
merge_vocab(pair,vocab): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng. - Hàm
train_bpe(corpus,num_merges): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng. - Hàm
encode_bpe(text,merges): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
get_vocab: Trả về kết quả kiểudicttheo đúng đặc tả kỹ thuật và kích thước quy định. - Hàm
get_stats: Trả về kết quả kiểudicttheo đúng đặc tả kỹ thuật và kích thước quy định. - Hàm
merge_vocab: Trả về kết quả kiểudicttheo đúng đặc tả kỹ thuật và kích thước quy định. - Hàm
train_bpe: Trả về kết quả kiểulisttheo đúng đặc tả kỹ thuật và kích thước quy định. - Hàm
encode_bpe: Trả về kết quả kiểulisttheo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 5000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
vocab = get_vocab(['low', 'low', 'newer'])Output
{
'l o w </w>': 2,
'n e w e r </w>': 1
}Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
corpus = ['low'] * 5 + ['lowest'] * 2 + ['newer'] * 6 + ['wider'] * 3
merges = train_bpe(corpus, num_merges=5)Output
[('e', 'r'), ('er', '</w>'), ('l', 'o'), ('lo', 'w'), ('n', 'e')]Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
