Quản lý token đặc biệt và đệm chuỗi (Special Tokens & Padding Mask)
Khi huấn luyện mô hình theo lô (mini-batch), các câu trong cùng một batch thường có độ dài khác nhau. Ta buộc phải đệm (<pad>) các câu ngắn cho bằng độ dài câu dài nhất hoặc max_le…
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: word-level-frequency-threshold-tokenizer.
Nội dung đề bài
Mô tả bài toán
Khi huấn luyện mô hình theo lô (mini-batch), các câu trong cùng một batch thường có độ dài khác nhau. Ta buộc phải đệm (<pad>) các câu ngắn cho bằng độ dài câu dài nhất hoặc max_length, đồng thời tạo Attention Mask để ngăn mô hình chú ý đến các token đệm này.
Hãy viết hàm pad_batch(sequences: list[list[int]], pad_id: int = 0, max_length: int = None) -> tuple[np.ndarray, np.ndarray]:
sequences: danh sách B chuỗi token ID. Nếu rỗng, raiseValueError.pad_id: ID của token<pad>.max_length: độ dài cố định của batch.- Nếu
max_length is None: lấy độ dài của chuỗi dài nhất trong batch: L = maxi len(si). - Nếu
max_lengthđược cung cấp: - Nếu có chuỗi nào dài hơn
max_length, cắt ngắn (truncate) chuỗi đó về đúngmax_lengthtoken đầu tiên. - Đệm các chuỗi ngắn hơn về đúng
max_length. - Trả về tuple
(padded_sequences, attention_mask): padded_sequences: mảng 2D int64 shape (B, L).attention_mask: mảng 2D int64 shape (B, L) chứa giá trị 1 cho token thật và 0 cho pad token.
Input
- Hàm
pad_batch(sequences,pad_id,max_length): 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
pad_batch: Trả về kết quả kiểutuple[np.ndarray, np.ndarray]theo đú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: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- 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
batch = [[10, 20, 30], [40, 50]]
padded, mask = pad_batch(batch, pad_id=0)Output
([[10, 20, 30],
[40, 50, 0]], [[1, 1, 1],
[1, 1, 0]])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
batch = [[1, 2, 3, 4, 5]]
padded, mask = pad_batch(batch, pad_id=0, max_length=3)Output
([[1, 2, 3]], [[1, 1, 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ế.
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.
