ai-186Đọc toàn bộ đề miễn phí

Độ đ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:

AITrung bình30 phút

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ủ đề

perplexitypplevaluationcross-entropyllm

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 đó True là token hợp lệ cần đánh giá, False là 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ểu float 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

loss_mat = np.full((2, 5), np.log(100.0))
mask = np.ones((2, 5), dtype=bool)
ppl = compute_perplexity(loss_mat, mask)

Output

100

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

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

5

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ế.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.