Xây dựng với AI

Burn 0.22 loại bỏ generics backend để tăng tốc độ build Rust ML

Burn 0.22 xóa các tham số kiểu backend khỏi API người dùng, giảm thời gian rebuild tới 15 lần và bổ sung hỗ trợ LoRA.

Cơ chế bánh răng Rust ăn khớp với các bảng mạch phát sáng
Minh họa được tạo riêng cho bài viết này

Được dịch tự động từ bản gốc tiếng Anh.

Framework học máy Burn cho Rust đã phát hành phiên bản 0.22, một bản cập nhật quan trọng giúp đơn giản hóa mã ứng dụng và giảm đáng kể thời gian biên dịch. Được ra mắt vào tháng 10 năm 2026, phiên bản này loại bỏ các kiểu generic backend khỏi API dành cho người dùng, cho phép nhà phát triển chọn thiết bị thực thi tại runtime thay vì tại compile time. Bản cập nhật cũng giới thiệu hỗ trợ native cho fine-tuning LoRA và QLoRA, cải thiện quản lý bộ nhớ và quy trình build nhanh hơn cho các mô hình phức tạp.

Chuyện gì đã xảy ra

Các phiên bản trước của Burn yêu cầu nhà phát triển phải lan truyền các tham số kiểu backend, chẳng hạn như B: Backend, xuyên suốt toàn bộ stack ứng dụng. Cách tiếp cận này mang lại sự linh hoạt nhưng tạo ra một chuỗi phụ thuộc nặng nề, làm chậm quá trình biên dịch mỗi khi cấu trúc mô hình thay đổi. Với phiên bản 0.22, các generics backend này được loại bỏ khỏi mã người dùng. Thay vào đó, ngữ cảnh thực thi được chọn thông qua khởi tạo thiết bị, ví dụ như Device::cuda(0) hoặc Device::wgpu(). Sự chuyển đổi này tách biệt các thao tác tensor cấp cao khỏi các triển khai backend cụ thể, giúp tinh gọn quy trình phát triển.

Tác động lên thời gian build là rất lớn. Trong các benchmark do nhóm phát triển cung cấp, việc loại bỏ một lớp ẩn khỏi một mạng nơ-ron tích chập nhỏ đã giảm thời gian rebuild median ở chế độ release từ 28,42 giây xuống còn 4,57 giây. Đối với một mô hình transformer có vòng lặp huấn luyện tùy chỉnh, việc thay thế các biểu thức feedforward tương đương đã thấy thời gian rebuild giảm từ 14,73 giây xuống chỉ còn 1,00 giây. Những cải tiến này bắt nguồn từ việc phá vỡ chuỗi phụ thuộc vốn trước đây buộc phải biên dịch lại phần lớn codebase khi có những chỉnh sửa nhỏ đối với mô hình.

Ngoài các thay đổi về API, bản phát hành tập trung vào hiệu suất runtime và trải nghiệm nhà phát triển. Nó giới thiệu các pool bộ nhớ thích ứng điều chỉnh kích thước cấp phát dựa trên thống kê khối lượng công việc, giảm mức sử dụng VRAM đỉnh điểm gần một nửa trong một số benchmark CNN. Bản cập nhật cũng bổ sung hỗ trợ fine-tuning các mô hình hiện có bằng LoRA và QLoRA, cho phép thích ứng hiệu quả các mô hình lớn mà không cần sửa đổi các lớp cơ sở của chúng. Ngoài ra, framework hiện hỗ trợ xuất mô hình sang ONNX và tích hợp khả năng tính toán từ xa thông qua giao thức vận chuyển Iroh.

Cách thức hoạt động

Thay đổi kiến trúc cốt lõi liên quan đến một đường dẫn thực thi mới: Tensor → Bridge → Dispatch → Backend. Lớp bridge che giấu các biểu diễn backend cụ thể khỏi API tensor cấp cao, về mặt hiệu quả là xóa bỏ các kiểu vốn trước đây ràng buộc mã ứng dụng với các backend cụ thể. Việc xóa kiểu này cho phép hệ thống dispatch định tuyến các thao tác tới backend phù hợp tại runtime. Mặc dù trait Backend vẫn giữ vai trò trung tâm trong việc triển khai các thao tác tùy chỉnh, mã ứng dụng không còn cần phải mang các ràng buộc generic nữa. Các ngữ cảnh Autodiff giờ đây được cấu hình trên thiết bị và được kế thừa bởi các tensor, di chuyển các kiểm tra tiền điều kiện sang runtime.

Quản lý bộ nhớ đã được đại tu thông qua các pool bộ nhớ thích ứng mới của CubeCL. Thay vì kích thước pool tĩnh, hệ thống giám sát thống kê cấp phát trong một dry run và điều chỉnh kích thước trang một cách động. Nó giải phóng các trang lỗi thời khi chúng trở nên trống và di chuyển các cấp phát đang hoạt động sang bộ nhớ tự do sớm hơn. Các cấp phát nhỏ, thường xuyên thay đổi được giữ trong một pool riêng biệt để giảm thiểu phân mảnh. Cách tiếp cận này đảm bảo rằng bộ nhớ được dự trữ khớp chặt chẽ với mức sử dụng thực tế, giảm đáng kể yêu cầu VRAM đỉnh điểm mà không cần cấu hình thủ công.

Các thao tác tùy chỉnh hiện được tích hợp thông qua macro #[backend_extension], kết nối các kernel do người dùng định nghĩa với hệ thống dispatch. Điều này cho phép nhà phát triển phơi bày các hàm tùy chỉnh, chẳng hạn như nhân ma trận fused với bias và ReLU, thông qua các interface tensor tiêu chuẩn mà không cần đưa lại các generics backend. Macro tạo ra đăng ký cho lazy execution và xử lý các ranh giới đồ thị fusion, đảm bảo rằng các kernel tùy chỉnh có thể được tối ưu hóa cùng với các thao tác tích hợp sẵn. Cơ chế này hỗ trợ các thư viện mới như burn-linalg và burn-signal.

Chi tiết chính

  • Tốc độ Build: Thời gian rebuild median giảm tới 15 lần, với các mô hình transformer giảm từ 14,73s xuống còn 1,00s cho các thay đổi mã tương đương.
  • Đơn giản hóa API: Các tham số kiểu backend (B: Backend) được loại bỏ khỏi các struct và hàm dành cho người dùng, thay thế bằng việc chọn thiết bị tại runtime.
  • Hiệu quả Bộ nhớ: Các pool bộ nhớ thích ứng giảm mức sử dụng VRAM đỉnh điểm 49% đối với CNN (từ 956 MiB xuống 486 MiB) và 17,7% đối với transformer.
  • Hỗ trợ Fine-Tuning: Tích hợp native cho LoRA và QLoRA cho phép đóng băng các trọng số cơ sở trong khi huấn luyện các adapter rank thấp với các cấu hình optimizer độc lập.
  • Tính toán Từ xa: Burn Remote hiện sử dụng Iroh cho các kết nối peer-to-peer được xác thực và mã hóa, hỗ trợ replay đồ thị để giảm overhead giao tiếp.
  • Cập nhật Compiler: CubeCL đã di chuyển sang Pliron cho biểu diễn kernel và thêm các target LLVM cho GPU AMD và NVIDIA, cải thiện tính di động và tối ưu hóa.

Tại sao điều này quan trọng

Đối với các kỹ sư phần mềm xây dựng sản phẩm ML bằng Rust, tốc độ biên dịch là một nút thắt cổ chai lớn về năng suất. Việc loại bỏ các generics backend có nghĩa là phát triển lặp đi lặp lại—chỉnh sửa kiến trúc mô hình hoặc debug vòng lặp huấn luyện—trở nên nhanh hơn đáng kể. Nhà phát triển không còn phải chờ hàng chục giây cho mỗi thay đổi nhỏ để biên dịch lại, cho phép vòng phản hồi nhạy bén hơn. Thay đổi này hạ thấp rào cản gia nhập cho việc sử dụng Rust trong ML, nơi C++ và Python truyền thống chiếm ưu thế nhờ chu kỳ lặp dễ dàng hơn.

Việc bổ sung hỗ trợ LoRA và QLoRA đáp ứng nhu cầu cấp thiết cho việc triển khai các mô hình ngôn ngữ lớn và các mô hình nền tảng khác trong môi trường hạn chế tài nguyên. Bằng cách cho phép nhà phát triển fine-tune các mô hình hiệu quả mà không cần lưu trữ trạng thái gradient đầy đủ cho tất cả các tham số, Burn 0.22 làm cho việc thích ứng các mô hình lớn trên phần cứng tiêu dùng trở nên khả thi. Quản lý bộ nhớ thích ứng nâng cao hơn nữa khả năng này, đảm bảo VRAM khả dụng được sử dụng hiệu quả, điều cực kỳ quan trọng để chạy các batch size lớn hơn hoặc các mô hình phức tạp hơn trên bộ nhớ GPU hạn chế.

Bạn có thể làm gì

  • Cập nhật các dependency Burn của bạn lên phiên bản 0.22 và loại bỏ các tham số generic backend khỏi các struct mô hình và chữ ký hàm của bạn.
  • Thay thế việc chọn backend tại compile time bằng khởi tạo thiết bị tại runtime sử dụng Device::cuda(), Device::wgpu() hoặc Device::flex().
  • Thử nghiệm với module Lora mới để fine-tune các mô hình hiện có, sử dụng ParamGroup để kiểm soát những lớp nào nhận adapter.
  • Giám sát mức sử dụng bộ nhớ với API thiết bị cập nhật để quan sát cách các pool thích ứng giảm mức tiêu thụ VRAM trong các workload cụ thể của bạn.
  • Nếu bạn sử dụng các kernel tùy chỉnh, refactor chúng để sử dụng macro #[backend_extension] nhằm tích hợp với hệ thống dispatch mới và bật fusion.
  • Khám phá các tùy chọn thực thi từ xa bằng cách thiết lập một server Burn Remote với transport Iroh cho các tác vụ training hoặc inference phân tán.

Công cụ từ cửa hàng Bytechap

$89

DocBento

Hệ thống quản lý tài liệu tự host, có khả năng đọc mọi bản quét và trả lời kèm trích dẫn trang cụ thể.

Demo trực tiếp

Đọc tiếp

Xây dựng với AI

Benchmark của Red Hat cho thấy các bộ phân loại nhỏ có thể sánh ngang LLM lớn trong việc phát hiện tấn công prompt injection

Theo các benchmark mới từ Red Hat, một mô hình chỉ với 200 triệu tham số đã đạt độ chính xác tương đương với một LLM 35 tỷ tham số khi làm nhiệm vụ đánh giá (judge) về prompt injection, đồng thời chạy nhanh hơn đáng kể.

Tất cả bài viết