GGUF thay thế bitsandbytes trong huấn luyện LoRA trên phần cứng cục bộ có VRAM thấp
Các kỹ thuật mới cho phép huấn luyện các mô hình Qwen và DeepSeek khổng lồ với lượng VRAM hạn chế bằng cách sử dụng định dạng cơ sở GGUF, loại bỏ nhu cầu offload sang CPU trên một số phần cứng cụ thể.
Được dịch tự động từ bản gốc tiếng Anh.
Một công thức mã nguồn mở mới minh họa cách thực hiện huấn luyện Low-Rank Adaptation (LoRA) trên các mô hình ngôn ngữ lớn (LLM) với lượng bộ nhớ video ít hơn đáng kể so với những gì từng được coi là khả thi. Bằng cách tận dụng định dạng tệp GGUF thay vì các thư viện lượng tử hóa truyền thống, các nhà phát triển giờ đây có thể tinh chỉnh (fine-tune) các mô hình như Qwen3.6-35B chỉ với 16 GiB VRAM mà không cần dựa vào phương pháp offload chậm chạp sang CPU. Sự chuyển dịch này gợi ý rằng GGUF đang sẵn sàng thay thế bitsandbytes để trở thành định dạng mô hình cơ sở chuẩn mực cho việc huấn luyện hiệu quả trên máy cục bộ.
Điều gì đã xảy ra
Nhà phát triển đứng sau kho lưu trữ woct0rdho/transformers5-qwen3.5-recipe đã công bố một phân tích kỹ thuật chuyên sâu về các phương pháp huấn luyện với VRAM thấp, được thiết kế riêng cho kiến trúc phần cứng Strix Halo. Công trình này thách thức quan niệm phổ biến rằng việc huấn luyện các mô hình lớn đòi hỏi cụm GPU đồ sộ hoặc hoán đổi bộ nhớ quy mô lớn. Thay vào đó, nó cho thấy với sự kết hợp đúng đắn giữa các mô hình cơ sở đã được lượng tử hóa và các kernel được tối ưu hóa, ngay cả phần cứng tiêu dùng hoặc phần cứng tích hợp hiệu năng cao cũng có thể xử lý các tác vụ tinh chỉnh đáng kể.
Thành tựu cốt lõi liên quan đến việc huấn luyện hoàn toàn nhiều mô hình mở trọng số (open-weight) tiên tiến nhất nằm gọn trong giới hạn VRAM vốn trước đây bị coi là không đủ. Ví dụ, mô hình Qwen3.6-35B-A3B đã được huấn luyện chỉ với 16 GiB VRAM. Tác giả lưu ý rằng hiệu suất này ngụ ý rằng các biến thể lớn hơn, chẳng hạn như Qwen3.5-122B-A10B, có thể được huấn luyện trong 64 GiB, và mô hình khổng lồ Qwen3.5-397B-A17B trong 192 GiB. Tương tự, mô hình DeepSeek-V4-Flash chứa 284 tỷ tham số đã được huấn luyện trong 90 GiB VRAM, trong khi mô hình Qwen3.8-Flash-Next yêu cầu 40 GiB.
Sự phát triển này rất quan trọng vì nó đối xử với AI mở trọng số tương tự như phần mềm mã nguồn mở, nơi người dùng không chỉ chạy các trọng số mà còn có thể sửa đổi chúng. Khả năng sửa đổi trọng số cục bộ mà không cần chi phí phần cứng quá cao làm giảm rào cản gia nhập cho việc tùy chỉnh các mô hình nền tảng. Tuy nhiên, triển khai hiện tại được điều chỉnh đặc biệt cho Strix Halo, nghĩa là cần thêm nỗ lực kỹ thuật để chuyển các tối ưu hóa này sang các kiến trúc GPU khác.
Cách hoạt động
Phương pháp này dựa trên việc thay thế thư viện bitsandbytes bằng GGUF làm định dạng mô hình cơ sở để tải các trọng số đã lượng tử hóa. GGUF, ban đầu được phổ biến bởi llama.cpp cho mục đích suy luận (inference), hiện đang được thích ứng cho các quy trình làm việc huấn luyện thông qua một fork tùy chỉnh của thư viện Transformers. Cách tiếp cận này sử dụng một bộ lượng tử hóa GGUF tích hợp trực tiếp vào vòng lặp huấn luyện, cho phép mô hình duy trì trạng thái nén trong quá trình tính toán thay vì giải nén hoàn toàn sang các định dạng độ chính xác cao gây tốn kém bộ nhớ.
Nhiều kernel chuyên biệt và kỹ thuật tối ưu hóa giúp điều này trở nên khả thi. Hệ thống áp dụng các phép nhân ma trận tổng quát (GEMM) được điều chỉnh và Lượng tử hóa Độ chính xác Hỗn hợp (MMQ) tương tự như những gì tìm thấy trong llama.cpp. Đối với các lớp Mixture of Experts (MoE), công thức sử dụng các kernel AITER Triton với cấu hình cụ thể cho các adapter LoRA không lượng tử hóa. Nó cũng triển khai các công thức lan truyền ngược nhanh cho các cập nhật LoRA, tương tự như những gì được sử dụng trong Unsloth, để tăng tốc tính toán gradient cho cả các lớp tuyến tính và MoE.
Việc tiết kiệm bộ nhớ đạt được thêm bằng cách vô hiệu hóa một số tính năng không thực sự cần thiết cho sự ổn định của quá trình huấn luyện, chẳng hạn như cache giải mã tự hồi quy (autoregressive decoding cache) và tổn thất cân bằng tải (load balancing loss). Hệ thống sử dụng checkpointing gradient không tái nhập (non-reentrant) và bộ tối ưu AdamW 8-bit từ bitsandbytes để giảm thiểu dấu chân bộ nhớ. Ngoài ra, torch.compile được áp dụng cho hàm giải nén lượng tử hóa GGUF để giảm mức sử dụng VRAM trong giai đoạn tải, đảm bảo rằng chi phí xử lý các trọng số nén vẫn ở mức quản lý được.
Chi tiết chính
- Qwen3.6-35B-A3B được huấn luyện trong 16 GiB VRAM sử dụng lượng tử hóa APEX-I-Mini, chỉ chiếm 13,3 GiB.
- DeepSeek-V4-Flash (284 tỷ tham số) được huấn luyện trong 90 GiB VRAM sử dụng lượng tử hóa IQ2_XXS.
- Qwen3.8-Flash-Next được huấn luyện trong 40 GiB VRAM cộng với 27 GiB cho engrams, sử dụng lượng tử hóa GSQ-RCO Q2_0.
- Giải pháp sử dụng một fork Transformers tùy chỉnh hỗ trợ GGUF, được theo dõi trong vấn đề #40070 trên Hugging Face.
- Các tối ưu hóa bao gồm GEMM được điều chỉnh, MMQ, kernel AITER Triton và RMSNorm từ Liger Kernel.
- Các kernel và tham số hiện tại được điều chỉnh đặc biệt cho phần cứng Strix Halo, đòi hỏi phải thích ứng cho các GPU khác.
Tại sao điều này quan trọng
Đối với các kỹ sư xây dựng sản phẩm bằng AI, sự chuyển dịch này làm giảm chi phí và độ phức tạp của việc tinh chỉnh các mô hình lớn. Theo truyền thống, việc huấn luyện đòi hỏi các phiên đám mây đắt đỏ với hàng trăm gigabyte VRAM hoặc các thiết lập phức tạp liên quan đến offload CPU, điều làm chậm đáng kể thời gian huấn luyện. Bằng cách giữ toàn bộ quy trình huấn luyện trong VRAM sử dụng lượng tử hóa hiệu quả, các nhà phát triển có thể lặp lại nhanh hơn và thử nghiệm với các mô hình lớn hơn trên phần cứng dễ tiếp cận hơn. Điều này dân chủ hóa quyền truy cập vào việc tùy chỉnh mô hình, cho phép các nhóm nhỏ hơn điều chỉnh các mô hình nền tảng cho lĩnh vực cụ thể của họ mà không cần đầu tư hạ tầng khổng lồ.
Việc chuyển sang GGUF cho huấn luyện cũng báo hiệu sự hội tụ giữa các chuỗi công cụ suy luận và huấn luyện. Trước đây, các nhà phát triển phải duy trì các pipeline riêng biệt để chuyển đổi mô hình cho suy luận (thường sử dụng GGUF hoặc các định dạng tương tự) và cho huấn luyện (sử dụng độ chính xác đầy đủ hoặc bitsandbytes). Việc thống nhất các định dạng này đơn giản hóa quy trình làm việc, giảm rủi ro lỗi trong quá trình chuyển đổi và đảm bảo hành vi của mô hình trong quá trình huấn luyện khớp chặt chẽ với hành vi của nó khi triển khai. Tính nhất quán này là cực kỳ quan trọng để duy trì hiệu suất và độ tin cậy của mô hình trong môi trường sản xuất.
Bạn có thể làm gì
- Thử nghiệm với công thức được cung cấp trên phần cứng Strix Halo để đo điểm chuẩn tốc độ huấn luyện và mức sử dụng bộ nhớ cho các trường hợp sử dụng cụ thể của bạn.
- Theo dõi vấn đề #40070 trên Hugging Face Transformers để cập nhật tiềm năng sáp nhập hỗ trợ lượng tử hóa GGUF vào thư viện chính.
- Đánh giá xem quy trình tinh chỉnh hiện tại của bạn có thể hưởng lợi từ việc chuyển từ bitsandbytes sang lượng tử hóa dựa trên GGUF cho các mô hình cơ sở hay không.
- Nghiên cứu các kernel Triton tùy chỉnh và các triển khai MMQ để hiểu cách chúng có thể được thích ứng cho kiến trúc GPU cụ thể của bạn nếu không sử dụng Strix Halo.
- Cân nhắc việc tiết kiệm bộ nhớ từ việc vô hiệu hóa cache giải mã tự hồi quy và tổn thất cân bằng tải khi thiết kế các vòng lặp huấn luyện cho các mô hình lớn tương tự.
- Khám phá việc sử dụng torch.compile trên các hàm giải nén lượng tử hóa để tối ưu hóa thêm mức sử dụng VRAM trong quá trình tải và huấn luyện mô hình.



