Chuyển giờ đào tạo thành phút với GPU Acceleration Nếu bạn là một học viên học máy, bạn biết cảnh này rất rõ. Bạn đã dành hàng giờ tranh cãi dữ liệu, kỹ thuật các tính năng hoàn hảo và cẩn thận thiết kế thí nghiệm của bạn. và hit vào. model.fit(X, y) Và sau đó... bạn chờ đợi. Thanh tiến độ chạy về phía trước với tốc độ băng giá. Bạn lấy một tách cà phê. Bạn kiểm tra Slack. Bạn quay trở lại, và CPU của bạn vẫn đang nghiền nát. Bạn không thể kiểm tra các tính năng, điều chỉnh các siêu tham số, và giữ đầu của bạn trong vấn đề. Phần đắt nhất của máy học là thời gian của bạn XGBoost đã giành được danh tiếng của mình như là nhà máy tăng cường độ dốc. Nó là tiêu chuẩn vàng trên các bộ dữ liệu bảng. Nhưng sức mạnh của nó đi kèm với một chi phí. Khi bạn mở rộng đến hàng triệu hàng, đào tạo bóng thời gian từ phút thành giờ. Hầu hết các học viên không nhận ra rằng XGBoost có một tham số duy nhất có thể biến đổi trải nghiệm này. Chuyển nó, và mô hình của bạn có thể đào tạo nhanh hơn 5-15 lần. Không thay đổi thuật toán. Không có thư viện mới. Chỉ có một dòng trong cấu hình của bạn. Đó là một thay đổi đưa bạn từ hoàn thành một thí nghiệm duy nhất trong một ngày để chạy nhiều. tìm kiếm siêu tham số mà một lần kéo dài trong nhiều ngày bây giờ bao bọc trong nhiều giờ. Thay vì chờ đợi trên một thanh tiến bộ, bạn ở lại trong vòng tròn, kiểm tra các ý tưởng trong khi họ là mới và giữ động lực trong công việc của bạn. Trong nhiều trường hợp, tốc độ CUDA tạo ra sự khác biệt giữa việc hoàn thành một công việc và không bao giờ hoàn thành nó. Các thông số “Magic”: GPU Acceleration Made Easy XGBoost có hỗ trợ tích hợp cho NVIDIA CUDA, vì vậy việc nhấn vào GPU tăng tốc không yêu cầu thư viện mới hoặc viết lại mã. Dưới đây là một dòng công việc CPU điển hình: import xgboost as xgb model = xgb.XGBClassifier( ... tree_method="hist" # CPU training ) model.fit(X_train, y_train) Để sử dụng GPU của bạn, bạn chỉ cần thay đổi hai : tree_method "gpu_hist" import xgboost as xgb model = xgb.XGBClassifier( ... tree_method="gpu_hist" # GPU training ) model.fit(X_train, y_train) hoặc đối với những người quay trở lại, thiết lập : device="cuda" import xgboost as xgb xgb_model = xgb.XGBRegressor(device="cuda") xgb_model.fit(X, y) Đó là nó. Cho dù bạn đang sử dụng XGBClassifier hoặc XGBRegressor, thêm nói với XGBoost để sử dụng tất cả các tài nguyên GPU NVIDIA có sẵn. thay đổi duy nhất này có thể làm cho đào tạo của bạn nhanh hơn 5-15x trên tập dữ liệu lớn. device="cuda" The Proof: A 46x Speed-up on Amex Dự đoán mặc định Để thể hiện sự tăng tốc trong hành động, chúng tôi đã so sánh một máy phân loại XGBoost trên một tiểu bộ 5,5 triệu hàng (50giga) của bộ dữ liệu Dự đoán mặc định của American Express, bao gồm 313 tính năng. Chúng tôi đã đào tạo mô hình trên hai cấu hình: CPU: CPU M3 Pro 12 lõi GPU: GPU NVIDIA A100 Dưới đây là thời gian so sánh đào tạo: Kết quả là kịch tính: Thời gian đào tạo CPU: 27 phút NVIDIA GPU Thời gian đào tạo: 35 giây Trong khi đạt được hiệu suất gần giống hệt nhau. Trên 50M hoặc 500M hàng, giờ CPU có thể kéo dài trong ngày, trong khi GPU, được xây dựng cho tải trọng làm việc song song lớn, xử lý sự tăng trưởng với thời gian thêm tối thiểu. Sự khác biệt giữa các số liệu như R2, RMSE và MAE là tối thiểu, cho dù trên các mô hình cơ bản hoặc các mô hình được điều chỉnh. Vì vậy, bạn không giao dịch độ chính xác cho tốc độ. Về sức mạnh dự đoán, cả hai mô hình đều đồng ý về một điều: Đây là đặc điểm quan trọng nhất, và cũng làm cho top năm. Ngoài ra, họ bắt đầu khác biệt. P-2_last B_1_last Mô hình CPU tập trung vào tính năng, tập trung vào các giá trị mới nhất. Mô hình GPU ưa thích tổng hợp Các tính năng như , B và , tính năng CPU không bao giờ xếp hạng trong top năm của nó. _last _mean P-2_mean -22_mean B-1_mean Điều này cho thấy một giả thuyết: mô hình CPU nắm bắt các tín hiệu rủi ro ngắn hạn, phản ứng với các sự kiện gần đây nhất, trong khi mô hình GPU nắm bắt các mô hình dài hạn, đánh giá rủi ro của khách hàng trong toàn bộ lịch sử của họ. Chúng tôi cũng mong đợi rằng trên các bộ dữ liệu lớn hơn, quy mô terabyte, GPU có thể tạo ra các mô hình có số liệu tốt hơn một chút nhờ khả năng xử lý nhiều dữ liệu hơn cùng một lúc. Chạy mã và xem sự khác biệt hiệu suất trong điều này . Try It Yourself: Notebook sổ ghi chép sổ ghi chép Thực hành tốt nhất cho GPU Acceleration Thêm Để tận dụng tối đa tốc độ GPU, hãy ghi nhớ những thực tiễn tốt nhất này: device="cuda" Bắt đầu với dữ liệu đúng kích thước Tốc độ GPU hoạt động tốt nhất trên các bộ dữ liệu đủ lớn để biện minh cho việc di chuyển dữ liệu từ RAM hệ thống sang bộ nhớ GPU. điểm ngọt thường là các bộ dữ liệu từ 4 GB đến 24 GB, mặc dù lợi ích có thể xuất hiện bắt đầu từ 2-4 GB. Đối với tập dữ liệu rất nhỏ, thời gian dành để chuyển dữ liệu sang GPU và thiết lập tính toán song song thực sự có thể vượt quá thời gian đào tạo chính nó, làm cho đào tạo CPU nhanh hơn trong những trường hợp này. Hãy nhớ VRAM của bạn: Chèn dữ liệu của bạn vào bộ nhớ GPU GPU có bộ nhớ tốc độ cao riêng, được gọi là VRAM, tách biệt với RAM hệ thống của bạn. Đối với đào tạo tiêu chuẩn, tập dữ liệu của bạn cần phải phù hợp hoàn toàn với VRAM. lệnh nvidia-smi Theo quy tắc, nếu DataFrame của bạn sử dụng 10 GB RAM hệ thống, bạn sẽ cần một GPU với hơn 10 GB VRAM. Đối với tải trọng công việc lớn, GPU như NVIDIA A10G (24 GB) hoặc A100 (40–80 GB) là lựa chọn phổ biến. Tối ưu hóa các loại dữ liệu để giảm dấu chân bộ nhớ Một trong những cách đơn giản nhất để lưu VRAM là sử dụng các loại dữ liệu hiệu quả hơn.Panda mặc định đến các loại 64-bit (float64, int64), thường chính xác hơn so với cần thiết. Chuyển đổi các cột sang các kiểu 32-bit (float32, int32) có thể giảm khoảng một nửa sử dụng bộ nhớ mà không ảnh hưởng đến độ chính xác của mô hình. Điều chỉnh nhỏ này có thể tạo ra sự khác biệt lớn khi làm việc với các tập dữ liệu lớn trên GPU. df['my_column'].astype('float32') Go End-to-End: Tăng tốc chuẩn bị dữ liệu với cudf.pandas Thông thường, chướng ngại vật lớn nhất không phải là đào tạo bản thân mà là chuẩn bị dữ liệu. di chuyển dữ liệu về phía trước và trở lại giữa CPU và bộ nhớ GPU bổ sung thêm các phụ kiện có thể làm chậm quy trình làm việc của bạn. thư viện giải quyết điều này bằng cách cung cấp một thay thế drop-in được cung cấp bởi GPU cho pandas. cudf.pandas Bắt đầu script của bạn với Import Tất cả các hoạt động tải dữ liệu và kỹ thuật tính năng chạy trực tiếp trên GPU. Khi bạn chuyển DataFrame gốc GPU này sang XGBoost, bạn loại bỏ quá trình chuyển nhượng và đạt được tốc độ tăng tốc từ đầu đến cuối. cudf.pandas as pd Đối với bộ dữ liệu lớn hơn VRAM: Sử dụng bộ nhớ bên ngoài Điều gì sẽ xảy ra nếu bộ dữ liệu của bạn là 100 GB, nhưng GPU của bạn chỉ có 24 GB VRAM? Với XGBoost 3.0, hỗ trợ bộ nhớ bên ngoài cho phép bạn xử lý điều này bằng cách xử lý dữ liệu trong các mảnh từ bộ nhớ hệ thống hoặc đĩa. Điều này cho phép đào tạo GPU tăng tốc cho các tập dữ liệu quy mô terabyte trên một GPU duy nhất, mà không làm mất hiệu suất. Beyond VRAM: Đào tạo Terabyte-Scale Datasets với XGBoost 3.0 Trong quá khứ, các tập dữ liệu lớn hơn VRAM của GPU là một giới hạn khó khăn cho đào tạo tăng tốc. Việc phát hành XGBoost 3.0 loại bỏ rào cản này với một Điều này cho phép bạn đào tạo các tập dữ liệu khổng lồ bằng cách truyền dữ liệu từ bộ nhớ hệ thống hoặc đĩa trực tiếp đến GPU để xử lý. external memory capability Điều này làm cho tăng độ dốc có thể mở rộng trên khối lượng công việc quy mô terabyte trên một GPU duy nhất, một nhiệm vụ mà trước đây đòi hỏi các cụm phân tán lớn. Trên phần cứng hiện đại như NVIDIA Grace Hopper Superchip, phương pháp này có thể nhanh hơn 8 lần so với một hệ thống CPU đa lõi, tất cả trong khi duy trì hiệu suất và độ chính xác đầy đủ. Mặc dù tính năng này hoạt động với đối tượng DMatrix cốt lõi thay vì Scikit-Learn wrapper, nhưng các thông số vẫn quen thuộc. Khi đính kèm với Để chuẩn bị dữ liệu, toàn bộ quy trình làm việc của bạn cho các tập dữ liệu quy mô terabyte giờ đây có thể chạy trên GPU. tập dữ liệu khổng lồ bây giờ cung cấp cho bạn quy mô cần thiết để xây dựng các mô hình mạnh hơn trong một phần nhỏ thời gian. cudf.pandas Reclaim thời gian của bạn Trong học máy, chi phí lớn nhất là thời gian chờ đợi. chờ đợi cho các mô hình để đào tạo, cho dữ liệu để xử lý, hoặc cho các thí nghiệm để hoàn thành làm chậm khả năng của bạn để kiểm tra các ý tưởng, khám phá những hiểu biết, và tạo ra giá trị. NVIDIA GPU Acceleration cho phép bạn thu hồi thời gian đó. Với một thay đổi thông số duy nhất, bạn có thể đào tạo các mô hình nhanh hơn 5-15 lần, chạy đường ống dữ liệu từ đầu đến cuối trên GPU, và thậm chí làm việc với các tập dữ liệu lớn hơn bộ nhớ GPU của bạn. Các công cụ đã sẵn sàng, các tích hợp liền mạch, và thiết lập đơn giản. lặp lại nhanh hơn có nghĩa là nhiều thử nghiệm hơn, nhiều khám phá hơn và cuối cùng, các mô hình tốt hơn. Từ đây, bạn có một vài cách khác nhau để lặn: Thực hiện theo Notebook NVIDIA cho một hướng dẫn từng bước. Xem toàn bộ bước đi trong video YouTube. Đi sâu vào tài liệu chính thức __XGBoost t__o khám phá tất cả các tùy chọn cấu hình cuda.GPU Acceleration Made Ea sổ ghi chép sổ ghi chép video youtube video youtube Đừng chỉ chấp nhận lời nói của tôi cho nó. Run my Amex và cảm nhận được dòng công việc của bạn có thể nhanh hơn bao nhiêu. , Notebook , Notebook Notebook Tòa nhà hạnh phúc, Paola