Phân mảnh phần cứng vẫn là một nút thắt dai dẳng đối với các kỹ sư học sâu đang tìm kiếm hiệu suất ổn định.
Bản phát hành mới nhất từ nhómBurn, phiên bản 0.20, cố gắng giải quyết vấn đề này bằng cách thống nhất mô hình thực thi CPU và GPU.
Sự hợp nhất này mở ra một lộ trình để giảm nợ kỹ thuật trong khi có khả năng tăng tốc độ suy luận trên phần cứng phổ thông.
Các framework học sâu thường buộc phải chấp nhận một sự thỏa hiệp:
viết mã chung chạy chậm, hoặc duy trì các kernel chuyên biệt cho từng loại phần cứng mục tiêu.
Mục tiêu chính của Burn 0.20 là loại bỏ sự đánh đổi này.
Nhóm đã thiết kế bản phát hành này để giải quyết “một thách thức kinh điển trong học sâu:
đạt được hiệu suất đỉnh trên phần cứng đa dạng mà không cần duy trì các codebase bị phân mảnh.” Thay vì dựa vào các mẫu nặng nề dựa trên macro làm phình to tệp nhị phân, backend CubeCL đã được tái cấu trúc giờ đây hỗ trợ các kiểu dữ liệu động với thông tin tại thời điểm biên dịch.
Việc dọn dẹp kiến trúc này chuyển thành mã sạch hơn và thời gian biên dịch nhanh hơn cho người dùng cuối.
Bằng cách thống nhất các kernel CPU và GPU thông qua CubeCL, framework có thể “vắt kiệt hiệu suất tối đa từ mọi thứ, từ GPU NVIDIA Blackwell đến CPU tiêu dùng tiêu chuẩn.”
CubeK, một dự án mới giới thiệu các hướng dẫn kiến trúc kernel nghiêm ngặt, thúc đẩy sự thống nhất này.
Trong các phiên bản trước, việc chuyên biệt hóa phần cứng và xử lý lỗi xảy ra mỗi khi một kernel được khởi chạy, gây ra độ trễ làm ảnh hưởng đến hiệu suất CPU.
Kiến trúc được cập nhật di chuyển logic này sang giai đoạn biên dịch just-in-time (JIT).
Bằng cách lưu vào bộ nhớ đệm các chuyên biệt hóa trong quá trình biên dịch ban đầu, framework giảm chi phí phát sinh cần thiết để CPU khởi chạy các kernel phức tạp.
Điều này cho phép engine tạo ra các kernel tối ưu – chẳng hạn cho Flash Attention – bằng cách tự động chọn các lệnh và kích thước lát cắt tốt nhất cho bất kỳ backend nào đang hoạt động.
Nội dung chính
Hiệu suất học sâu và hiệu quả CPU
Giải quyết vấn đề phân mảnh phần cứng mang lại nhiều lợi ích.
Chạy suy luận trên CPU thường có lợi về chi phí hơn so với việc cung cấp các cụm GPU chuyên dụng, với điều kiện độ trễ vẫn nằm trong giới hạn chấp nhận được.
Bản cập nhật Burn 0.20 mang đến những thay đổi cho backend CPU CubeCL có thể làm thay đổi tính toán ROI cho việc suy luận dựa trên CPU.
Backend giờ đây tập trung vào căn chỉnh dòng bộ nhớ đệm và hợp nhất bộ nhớ.
Bằng cách tăng kích thước dòng để hỗ trợ vector hóa SIMD và điều chỉnh cài đặt cube để tôn trọng ranh giới bộ nhớ đệm vật lý, hệ thống cố gắng loại bỏ sự tranh chấp khi nhiều lõi cạnh tranh cho các phân đoạn bộ nhớ.
Các điểm chuẩn do nhóm cung cấp cho thấy những thay đổi này mang lại kết quả có thể đo lường được.
Trong các thao tácmax_pool2d, triển khai mới đạt được tốc độ nhanh hơn tới 4 lần so với LibTorch.
Cụ thể, với hình dạng (2, 32, 512, 512), CubeCL ghi nhận thời gian thực thi trung bình là 4.66ms so với 16.96ms của LibTorch và 851.3ms của ndarray.
Những cải tiến này không yêu cầu thay đổi logic cơ bản của thao tác;
thay vào đó, “chúng bắt nguồn từ một chiến lược khởi chạy tận dụng kiến trúc CPU tốt hơn.” Đối với nhà phát triển, điều này ngụ ý rằng cải tiến hiệu suất có thể đạt được mà không cần tái cấu trúc các định nghĩa mô hình hiện có.
Burn 0.20 cũng mở rộng phạm vi của các mô hình học được hỗ trợ.
Các nhà phát triển đã thiết kế lại các khái niệm trừu tượng cốt lõi để tách rời trình học khỏi các nhà cung cấp phản hồi.
Thay đổi kiến trúc này nhằm mục đích làm cho vòng lặp huấn luyện dễ mở rộng hơn cho nhu cầu nghiên cứu hoặc sản xuất tùy chỉnh mà không làm phức tạp thiết lập ban đầu.
Các phiên bản trước tập trung nhiều vào học có giám sát, cơ sở hạ tầng mới này đặt nền móng cho việc hỗ trợ học tăng cường chính thức trong các bản phát hành sắp tới.
Trong khi các bản cập nhật CPU nhắm đến hiệu quả chi phí, bản phát hành này cũng hướng tới thị trường hiệu suất cao.
Phiên bản 0.20 bổ sung hỗ trợ cho Bộ tăng tốc Bộ nhớ Tensor (TMA) và PTX nội tuyến cho các lệnh Thực hiện Nhân-Tích lũy Ma trận (MMA) thủ công.
Những bổ sung này nhắm mục tiêu đến kiến trúc Blackwell của NVIDIA, chẳng hạn như RTX 5090, cùng với kiến trúc Ada và Hopper.
Bằng cách điều chỉnh engine nhân ma trận để kết hợp TMA với chuyên môn hóa warp, framework hướng tới đưa CubeCL tiến gần hơn đến hiệu suất đỉnh lý thuyết của silicon hiện đại cho học sâu.
Phân mảnh phần cứng đã được giải quyết?
Chưa hoàn toàn (vẫn còn)
Các nhà phát triển minh bạch về các giới hạn hiện tại của backend CPU.
Nó vẫn chưa được tối ưu hóa đầy đủ trên mọi toán tử.
Cụ thể, tích chập và nhân ma trận cần thêm công việc trước khi nhóm đề xuất backend CPU như một mục tiêu chính cho môi trường sản xuất.
Các nhóm đang đánh giá phiên bản này để triển khai ngay lập tức nên kiểm tra việc sử dụng toán tử cụ thể của họ so với những hạn chế này.
Đối với người dùng hiện tại, bản cập nhật giới thiệu các thay đổi phá vỡ trong API.
Các thao tácscattervàselect_assigngiờ đây yêu cầu mộtIndexingUpdateOpđể chỉ định rõ ràng hành vi cập nhật.
Ngoài ra, structShapekhông còn triển khaiIntoIterator, yêu cầu nhà phát triển truy cập trực tiếp trườngdimsđể lặp theo giá trị.
Thực thi lười biếng thường làm phức tạp việc gỡ lỗi, vì lỗi tách rời khỏi điểm xuất phát của chúng.
Để giảm thiểu điều này, phiên bản 0.20 giới thiệu việc truyền lỗi dựa trên Result.
Đồng bộ hóa một thiết bị giờ đây trả về mộtResult<(), Error>, cho phép ứng dụng bắt các vấn đề như lỗi hết bộ nhớ một cách thanh lịch thay vì bị sập.
Điều này mở rộng đến việc tải không sao chép cho các mô hình ONNX.
Trình nhập khẩu đã được đại tu để hỗ trợ các tham chiếu tensor được ánh xạ bộ nhớ, giúp cải thiện hiệu quả bộ nhớ khi tải các mô hình lớn.
Bằng cách ưu tiên hợp nhất việc thực thi kernel, nhóm Burn đang giải quyết vấn đề phân mảnh phần cứng thường buộc các kỹ sư học sâu phải lựa chọn giữa tốc độ phát triển và hiệu suất thời gian chạy.
Đối với các trưởng nhóm kỹ thuật, có tiềm năng giảm chi phí suy luận trên CPU tiêu chuẩn cho các thao tác được hỗ trợ.
Tuy nhiên, lưu ý về việc sẵn sàng cho tích chập và nhân ma trận cho thấy rằng mặc dù kiến trúc là hợp lý, việc triển khai chỉ bao phủ các trường hợp sử dụng cụ thể thay vì toàn bộ bối cảnh học sâu.
Xem thêm:Cách hiện đại hóa ứng dụng thúc đẩy sự tồn tại của doanh nghiệp
Muốn tìm hiểu thêm về AI và dữ liệu lớn từ các nhà lãnh đạo ngành?Hãy xemAI & Big Data Expodiễn ra tại Amsterdam, California và London.
Sự kiện toàn diện này là một phần củaTechExvà được tổ chức cùng địa điểm với các sự kiện công nghệ hàng đầu khác.
Nhấpvào đâyđể biết thêm thông tin.
AI News được cung cấp bởiTechForge Media.
Khám phá các sự kiện và hội thảo trực tuyến về công nghệ doanh nghiệp sắp tới kháctại đây.







![[Tự học C++] Số dấu phẩy động(float, double,…) trong C++](https://cafedev.vn/wp-content/uploads/2019/12/cafedevn_c_develoment-100x70.jpg)

