Rust for Machine Learning - Tạo sinh văn bản - Phần Cuối
Trong bốn phần trước chúng ta đã cùng nhau thực hành tải về mô hình, khởi tạo các đối tượng thực hiện nhiệm vụ token-hóa và đối tượng kiến trúc mô hình trên bộ nhớ sử dụng kỹ thuật “memory mapping”, chúng ta cũng đã tìm hiểu về logits, ý nghĩa và cách xử lý các logits.
Trong phần cuối này, chúng ta sẽ cùng tìm hiểu và triển khai cơ chế lấy mẫu, chúng ta sẽ tìm hiểu nốt một tham số quan trọng mà chúng ta chưa kịp nói đến trong video trước, đó là top_p. Tham số này sẽ kết hợp với temprature để tạo sinh những văn bản phù hợp nhất, đa dạng sắc thái và có tính sánh tạo thông qua kỹ thuật “nucleus sampling”. Cũng cần phải nói rõ là việc chọn từ kế tiếp để có thể sinh ra một văn bản hoàn toàn do lập trình viên quyết định, mô hình chỉ cung cấp các gợi ý cùng xác suất khả năng phù hợp ở mức rất thô.
Trong phần cuối này chúng ta sẽ cùng nhau triển khai vòng lặp tạo sinh văn bản và cách thức tạo vòng tròn “đầu vào → đầu ra → đầu vào” như đoạn mã sau:
for i in 0..sample_length {
let (input_ids, context_len) = if i == 0 {
let tensor = Tensor::new(vec![all_tokens.clone()], &device)?;
(tensor, 0)
} else {
let last_token = *all_tokens.last().unwrap();
let tensor = Tensor::new(vec![vec![last_token]], &device)?;
(tensor, all_tokens.len() - 1)
};
let logits: Tensor = model.forward(&input_ids, context_len)?;
...
}
Hãy cùng RustDev Vietnam tìm hiểu triển khai hoàn thiện chương trình qua video “#0056 - Rust for Machine Learning - Tạo sinh văn bản - Phần Cuối” trên kênh Youtube RustDev Vietnam.
Đừng quên nhấn đăng ký kênh RustDev Vietnam để không bị bỏ lỡ các video mới của chúng tôi nhé!

All rights reserved