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 và code bạn nộp đượ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, raise ValueError.
- pad_id: ID của token <pad>.
- max_length: độ dài cố định của batch.
- Nếu maxlength 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ề đúng max_length token đầ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ểu tuple[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.
