0
0
Lập trình
Admin Team
Admin Teamtechmely

[GPU trong AI] Bài 4: Sử dụng cuML cho các bài toán Machine Learning hiệu quả

Đăng vào 1 tháng trước

• 3 phút đọc

Giới thiệu

Trong bài viết trước, chúng ta đã khám phá cách sử dụng GPU để xử lý dữ liệu bằng thư viện cuDF. Ở bài viết này, chúng ta sẽ tìm hiểu về cuML - một thư viện mạnh mẽ thuộc bộ công cụ RAPIDS, nhằm hỗ trợ việc xử lý các bài toán Machine Learning (ML) bằng GPU.

Trả lời câu hỏi từ bài viết trước

Trước khi bắt đầu, mình muốn trả lời một câu hỏi từ bài viết trước: Tại sao tổng thời gian (total time) không bằng tổng thời gian của CPU và GPU? Lý do là vì công cụ profiling sẽ không tính đến thời gian sao chép dữ liệu giữa CPU và GPU.

Tìm hiểu về cuML

Như đã đề cập trong bài viết trước, cuML là một trong những thư viện chính của RAPIDS, cho phép người dùng thực hiện các thuật toán Machine Learning trên GPU với cú pháp rất giống với thư viện sklearn. Điều này rất thuận lợi cho những ai đã quen với sklearn.

Tiến trình xử lý dữ liệu

Trước khi thực hiện các bài toán ML, chúng ta cần phân tích dữ liệu. Trong trường hợp này, các giá trị trong dữ liệu đều được biểu diễn dưới dạng object, và một số cột có giá trị bị thiếu (missing values).

So sánh tốc độ giữa CPU và GPU

Bây giờ, chúng ta sẽ so sánh tốc độ xử lý giữa CPU và GPU khi thực hiện toàn bộ các bước từ xử lý dữ liệu cho đến xây dựng mô hình và đưa ra dự đoán kết quả.

Thực hiện trên CPU

Thực hiện trên GPU

Như các bạn có thể thấy, gần như toàn bộ đoạn mã không thay đổi bất kỳ chi tiết nào ngoài việc thay đổi ở phần import thư viện từ sklearn sang cuML. Điều thú vị là tốc độ xử lý đã tăng lên tới 26 lần. Tuy nhiên, độ chính xác (accuracy) có thể giảm xuống một chút, điều này xảy ra do cuML và quá trình biến đổi dữ liệu giữa dạng dữ liệu số nguyên 8 bit, 16 bit và 32 bit nhằm tối ưu hóa tốc độ và giảm bộ nhớ.

Lưu ý về quy trình xử lý dữ liệu

Một điểm lưu ý quan trọng là cuML không chỉ đơn giản là chuyển đổi dữ liệu sang các kiểu dữ liệu nhỏ hơn như unit8, unit16, và unit32 mà còn áp dụng kỹ thuật quantization. Kỹ thuật này có khả năng giảm số bit cần thiết để lưu trữ dữ liệu mà không làm thay đổi đáng kể kết quả.

Lợi ích về bộ nhớ

Cụ thể, ban đầu, chúng ta cần 144.0 MB bộ nhớ, nhưng khi chuyển sang sử dụng cuML, bộ nhớ tiêu thụ chỉ còn 47.6 MB.

Tóm tắt về GPU và việc sử dụng trong ML

Qua những thông tin trên, chúng ta có thể thấy rằng GPU mang lại hiệu suất xử lý rất ấn tượng, nhưng không phải lúc nào cũng nên sử dụng GPU cho mọi bài toán. Bởi vì dữ liệu phải được sao chép từ CPU (host) sang GPU (device), nếu dữ liệu quá ít, việc sao chép này có thể trở thành một trở ngại đáng kể. Do đó, chúng ta cần cân nhắc và chỉ nên sử dụng GPU cho các bài toán ML khi xử lý với dữ liệu lớn.

Làm thế nào để xác định dữ liệu lớn hay nhỏ?

Mỗi máy tính có tốc độ xử lý khác nhau, vì vậy dữ liệu được coi là lớn hoặc nhỏ có thể thay đổi. Dưới đây là hai cách để xác định:

  1. Đọc file CSV bằng cả CPU và GPU, sau đó so sánh nếu có sự chênh lệch lớn thì nên sử dụng GPU; nếu không, tiếp tục sử dụng CPU.
  2. Phân tích đoạn mã bằng các công cụ của NVIDIA để biết liệu việc chọn GPU có phù hợp hay không. Nếu bạn chưa biết cách sử dụng các công cụ của NVIDIA, hãy tham khảo tài liệu hướng dẫn.

Kết luận

Như vậy, bài viết hôm nay đã hướng dẫn các bạn sử dụng cuML để xử lý các bài toán Machine Learning trên GPU. Hãy chuẩn bị sẵn sàng cho những bài viết tiếp theo, nơi mình sẽ khám phá thêm về hiệu quả của GPU trong Deep Learning.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào