Độ đo Perplexity đánh giá mô hình ngôn ngữ lớn (LLM Perplexity Evaluation)
Trong huấn luyện và đánh giá LLM (như GPT, LLaMA), Perplexity (PPL) là độ đo tiêu chuẩn để đánh giá khả năng dự đoán từ tiếp theo của mô hình:
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: fused-softmax-cross-entropy-loss.
Nội dung đề bài
Mô tả bài toán
Trong huấn luyện và đánh giá LLM (như GPT, LLaMA), Perplexity (PPL) là độ đo tiêu chuẩn để đánh giá khả năng dự đoán từ tiếp theo của mô hình: PPL = exp ( 1Nvalid ∑i=1Nvalid Li ) trong đó Li là Cross-Entropy loss tại vị trí token thứ i. PPL có thể diễn giải một cách trực quan là: *"Trung bình tại mỗi bước sinh, mô hình đang phân vân giữa bao nhiêu lựa chọn từ vựng có xác suất ngang nhau"*. PPL càng thấp, mô hình càng thông minh.
Trong thực tế, câu văn có độ dài khác nhau và được đệm bằng pad_token_id (thường có mask nhãn y = -100 trong PyTorch Hugging Face). Các token bị mask này tuyệt đối không được tính vào tổng loss và không được tính vào Nvalid.
Hãy viết hàm compute_perplexity(loss_matrix: np.ndarray, target_mask: np.ndarray) -> float:
loss_matrix: ma trận 2D (B, S) chứa giá trị Cross-Entropy loss tại từng token.target_mask: ma trận boolean 2D (B, S) trong đóTruelà token hợp lệ cần đánh giá,Falselà padding token cần bỏ qua.- Tính loss trung bình trên các token hợp lệ và lấy hàm mũ
exp(). - Trả về giá trị Perplexity dạng float. Nếu không có token hợp lệ nào, ném
ValueError.
Input
- Hàm
compute_perplexity(loss_matrix,target_mask): 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
compute_perplexity: Trả về kết quả kiểufloattheo đú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
loss_mat = np.full((2, 5), np.log(100.0))
mask = np.ones((2, 5), dtype=bool)
ppl = compute_perplexity(loss_mat, mask)Output
100Giả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
loss_mat = np.array([[np.log(5.0), 100.0], [np.log(5.0), 100.0]])
mask = np.array([[True, False], [True, False]])
ppl = compute_perplexity(loss_mat, mask)Output
5Giả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.
