Bạn đã quyết định fine-tune một mô hình 7B trên dữ liệu của riêng mình. Rồi bạn gặp ngã ba đường thực sự đầu tiên: ba tên phương pháp, mỗi phương pháp kèm một câu trả lời khác nhau. Tài liệu của Unsloth nói hãy bắt đầu với QLoRA. Axolotl nói điều đó tùy vào phần cứng của bạn. Một nửa các bài blog bạn đã lướt qua nói "dùng LoRA cho hầu hết trường hợp" rồi chuyển sang chủ đề khác. Trong khi đó bạn đang nhìn vào một GPU duy nhất, không chắc nó có chạy được dù chỉ một trong các phương pháp đó hay không.
Đây là quyết định nằm ở đầu nguồn của mọi thứ khác. Phương pháp bạn chọn quyết định ngân sách VRAM, ngân sách VRAM chọn phần cứng, và phần cứng chọn chi phí của bạn. Chọn sai phương pháp thì bạn sẽ tốn tiền cho bộ nhớ GPU mà mình không cần, hoặc mất cả một cuối tuần để rượt bắt các lỗi crash do hết bộ nhớ trên một card mà từ đầu đã không bao giờ đủ cho công việc đó.
Vậy hãy làm rõ chuyện này. Đây là những gì thực sự khác biệt giữa LoRA, QLoRA và full fine-tuning, mỗi phương pháp tốn bao nhiêu về bộ nhớ và chất lượng, và một quy tắc để xếp trường hợp của bạn vào một trong số đó.
Phiên bản ngắn gọn
- Mặc định là QLoRA. Đối với hầu hết các trường hợp fine-tuning trên một GPU, hãy bắt đầu với QLoRA. Bảng của Axolotl cho thấy một lần chạy QLoRA cho mô hình 7-8B tốn khoảng 10-14 GB VRAM, giả định context ngắn và micro-batch nhỏ. Mức đó phù hợp với nhiều card tiêu dùng hoặc prosumer 12-24 GB, nhưng không phải mọi card có VRAM thấp. Hãy dùng LoRA thông thường khi bạn dư bộ nhớ và muốn các bước nhanh hơn; để dành full fine-tuning cho những trường hợp hiếm cần đến nó.
- Khoảng cách về VRAM là rất lớn. Fine-tuning một mô hình 7B tốn khoảng 60-80 GB cho full fine-tuning, 16-24 GB cho LoRA, và 10-14 GB cho QLoRA, theo số liệu công bố của Axolotl. Khoảng cách đó chính là toàn bộ lý do các phương pháp tiết kiệm tham số này tồn tại.
- Mức độ giảm chất lượng phụ thuộc vào tác vụ, không cố định. Ở hầu hết các tác vụ tuân theo hướng dẫn và đầu ra có cấu trúc, LoRA và QLoRA chỉ chênh vài phần trăm so với fine-tuning đầy đủ. Khoảng cách này rộng hơn ở các tác vụ suy luận phức tạp như toán học. Đó là lúc fine-tuning đầy đủ vẫn đáng với chi phí của nó.
- Fine-tuning đầy đủ là ngoại lệ, không phải mặc định. Bạn chuyển lên phương pháp này khi có sự thay đổi phân phối lớn, thay đổi ở quy mô pre-training, hoặc các tác vụ quan trọng về suy luận mà benchmark cho thấy khoảng cách rõ ràng, không phải như một lựa chọn mặc định an toàn.
Những Gì Hướng Dẫn Này Không Đề Cập
Đây là hướng dẫn lựa chọn phương pháp, không phải hướng dẫn triển khai chi tiết. Một vài nội dung chủ ý không được đề cập ở đây:
- Các biến thể của LoRA (DoRA, VeRA, LoRA+). Ba phương pháp cốt lõi là quyết định quan trọng cần đưa ra trước; các biến thể là những cải tiến bạn dùng đến sau.
- Mã từng bước. Không có lệnh cài đặt hay script huấn luyện ở đây. Đó là một hướng dẫn thực hành riêng, không được đề cập ở đây.
- Huấn luyện đa GPU (FSDP, DeepSpeed ZeRO) và chuẩn bị tập dữ liệu: cả hai đều là những chủ đề lớn riêng biệt.
- RLHF, DPO và tối ưu hóa sở thích. Đây là một lớp mục tiêu khác so với supervised fine-tuning.
- Liệu bạn có nên fine-tune hay không. Nếu bạn không chắc fine-tuning là công cụ đúng so với retrieval, thì so sánh đó xứng đáng có câu trả lời riêng trước khi bạn chọn phương pháp ở đây.
Điều gì thực sự khác biệt giữa LoRA, QLoRA và Full Fine-Tuning?
Full fine-tuning cập nhật mọi tham số trong mô hình. LoRA đóng băng mô hình gốc và thay vào đó huấn luyện các ma trận adapter hạng thấp nhỏ (khoảng 0,1-2% tổng số tham số). QLoRA thêm một bước nữa so với LoRA: nó lượng tử hóa mô hình gốc đã đóng băng xuống độ chính xác 4-bit (dùng một kiểu dữ liệu gọi là NF4, NormalFloat) để mô hình gốc chiếm ít bộ nhớ hơn nhiều trong khi bạn huấn luyện các adapter.
Cách rõ ràng nhất để nhớ cả ba là hình dung như một cái thang, mỗi nấc loại bỏ một chi phí so với nấc bên dưới.
Fine-tuning toàn phần là bậc thấp nhất, và nặng nhất. Mọi trọng số đều có thể huấn luyện, nên optimizer phải theo dõi gradient và trạng thái optimizer cho từng tham số trong mô hình. Đó là nơi bộ nhớ bị tiêu hao, và chúng ta sẽ đến phần toán học ở mục tiếp theo.
LoRA (Low-Rank Adaptation) đóng băng các trọng số gốc và chèn các ma trận nhỏ có thể huấn luyện vào các lớp của mô hình. Chỉ những ma trận đó học; mô hình cơ sở chỉ đi theo. Bài báo LoRA báo cáo rằng điều này giảm số tham số có thể huấn luyện tới 10.000x đối với mô hình 175B và giảm bộ nhớ GPU khoảng 3x ở quy mô đó, đồng thời đạt hiệu suất "tương đương hoặc tốt hơn fine-tuning về chất lượng mô hình" trên các mô hình mà các tác giả đã kiểm tra. Vì có quá ít tham số thay đổi, kết quả huấn luyện được rất nhỏ. blog PEFT đưa ra hai điểm tham chiếu hữu ích: một checkpoint đầy đủ 40 GB cho bigscience/mt0-xxl, và một ví dụ LoRA riêng biệt trong đó adapter đã lưu chỉ nặng 19 MB. Điểm mấu chốt vẫn vậy: checkpoint PEFT thường rất nhỏ so với checkpoint mô hình đầy đủ.
QLoRA lấy LoRA và thu nhỏ phần mà LoRA vẫn giữ nguyên: phần cơ sở bị đóng băng. Lượng tử hóa các trọng số đó thành NF4 4-bit nghĩa là mô hình cơ sở chỉ chiếm một phần nhỏ bộ nhớ so với khi ở 16-bit, trong khi các adapter phía trên vẫn được huấn luyện với độ chính xác đầy đủ. Bài báo QLoRA mô tả NF4 là "tối ưu về mặt lý thuyết thông tin cho các trọng số có phân phối chuẩn," đây là cách nói chính xác rằng biểu diễn 4-bit được chọn để khớp với cách các trọng số mô hình thực sự phân phối, nên bạn mất ít hơn so với việc làm tròn 4-bit một cách ngây thơ.
Đó là toàn bộ ngăn xếp khái niệm: fine-tuning toàn phần huấn luyện mọi thứ, LoRA đóng băng phần cơ sở và huấn luyện các adapter, QLoRA nén phần cơ sở bị đóng băng và huấn luyện các adapter. Mọi thứ khác (VRAM, chất lượng, khi nào nên dùng cái nào) đều xuất phát từ ba lựa chọn đó.
Mỗi phương pháp cần bao nhiêu VRAM?
Đối với mô hình 7B, số liệu ước tính khoảng 60-80 GB cho full fine-tuning, 16-24 GB cho LoRA, và 10-14 GB cho QLoRA, theo bảng dữ liệu do Axolotl công bố. Hệ quả thực tế: QLoRA thường phù hợp với nhiều GPU tiêu dùng hoặc prosumer đơn lẻ 12-24 GB trong các thiết lập ngữ cảnh ngắn, batch nhỏ, trong khi full fine-tuning một mô hình 7B cần bộ nhớ cấp trung tâm dữ liệu hoặc cấu hình nhiều GPU.
Vì sao full fine-tuning lại nặng đến vậy? Một chút toán học. Khi bạn huấn luyện mọi tham số, GPU phải giữ ba thứ cho mỗi tham số: trọng số bản thân, gradient của nó, và trạng thái optimizer (các optimizer kiểu Adam giữ thêm hai giá trị cho mỗi trọng số). Đó là lý do chi phí bộ nhớ thường gấp nhiều lần kích thước của chính mô hình. LoRA đóng băng phần base, nên chỉ phải chịu khoản phí gradient-và-optimizer đó trên các ma trận adapter nhỏ. QLoRA còn lưu phần base đã đóng băng ở dạng 4-bit thay vì 16-bit, cắt giảm chi phí lớn nhất còn lại.
Đây là cách so sánh ba phương pháp theo kích thước mô hình, dựa trên tài liệu của Axolotl và bài báo QLoRA cho các số liệu mô hình lớn:
| Phương pháp | Mô hình 1-3B | Mô hình 7-8B | Mô hình 70B+ |
|---|---|---|---|
| Full fine-tuning (bf16 + AdamW) | 24-32 GB | 60-80 GB | 4-8x 80 GB |
| LoRA (bf16) | 8-12 GB | 16-24 GB | 2x 80 GB |
| QLoRA (4-bit NF4) | 6-8 GB | 10-14 GB | 40-48 GB |
Nguồn: tài liệu Axolotl cho cả ba phương pháp trên các kích thước mô hình khác nhau; bài báo QLoRA độc lập báo cáo việc fine-tune một mô hình 65B trên một GPU 48 GB duy nhất "trong khi vẫn giữ được hiệu suất tác vụ tương đương full 16-bit finetuning," điều này khớp với số liệu QLoRA của mô hình 70B. Blog của Hugging Face về blog về lượng tử hóa 4-bit riêng biệt cho thấy một mô hình 13B được huấn luyện trên một T4 16 GB duy nhất và một mô hình 33B trên GPU 24 GB bằng QLoRA. Đó là những điểm mốc hữu ích nếu mục tiêu của bạn nằm giữa các dòng trong bảng.
Con số duy nhất đáng nhớ: một mô hình 65B trên một card 48 GB. Đó là kết quả nổi bật của QLoRA, và nó định nghĩa lại ý nghĩa của câu "tôi chỉ có một GPU".
Điểm rút ra của phần này: thứ bậc VRAM là full >> LoRA > QLoRA, và khoảng cách từ full sang QLoRA đủ lớn để chuyển một tác vụ từ một rack nhiều GPU sang một card duy nhất.
LoRA hoặc QLoRA có thực sự làm giảm chất lượng không?
Với hầu hết các tác vụ tuân theo hướng dẫn và đầu ra có cấu trúc, LoRA và QLoRA chỉ chênh vài phần trăm so với full fine-tuning. Khoảng cách này rộng ra ở các bài toán suy luận phức tạp (đặc biệt là toán học), nơi full fine-tuning vẫn rõ ràng vượt trội. Vậy câu trả lời không phải là "gần tương đương" hay "kém hơn". Nó phụ thuộc vào từng tác vụ, và loại tác vụ sẽ cho bạn biết bạn đang ở phía nào của ranh giới đó.
Bằng chứng rõ ràng nhất theo từng loại nhiệm vụ đến từ một nghiên cứu của Anyscale vào tháng 9 năm 2023 trên nghiên cứu của Anyscale trên Llama 2. Trên ViGGO, một nhiệm vụ biểu diễn hàm có cấu trúc, LoRA đạt khoảng 95% độ chính xác của fine-tuning đầy đủ trên các mô hình 7B và 13B: một khoảng cách 2% mà các tác giả coi là sự đánh đổi có thể chấp nhận được. Trên tạo SQL, LoRA gần như khớp với fine-tuning đầy đủ, và mô hình LoRA 13B thực sự đánh bại mô hình 7B được fine-tune đầy đủ. Trên GSM8k, một benchmark suy luận toán học, LoRA liên tục có hiệu suất kém hơn fine-tuning đầy đủ trên 7B và 13B, với khoảng cách chỉ hẹp lại ở mức 70B. Cách hiểu của nhóm Anyscale là phép xấp xỉ hạng thấp của LoRA có thể không nắm bắt được một kỹ năng phức tạp như toán học nhiều bước.
Một lưu ý về những con số này: nghiên cứu đó được thực hiện trên Llama 2 vào tháng 9 năm 2023. Mô hình theo loại nhiệm vụ (đầu ra có cấu trúc gần, suy luận phức tạp xa hơn) là kết luận bền vững và về bản chất vẫn đúng từ đó đến nay. Nhưng tỷ lệ phần trăm chính xác có thể khác trên một mô hình cơ sở mới hơn như Llama 3 hoặc Mistral, vì vậy hãy coi các số liệu này là hình dạng của sự đánh đổi, không phải là bảo đảm cho mô hình của bạn.
Câu chuyện chất lượng của QLoRA là riêng của nó. Bài báo QLoRA cho biết Guanaco, mô hình 65B của nó được huấn luyện bằng QLoRA, đạt 99,3% hiệu suất của ChatGPT trên benchmark Vicuna. Mạnh mẽ, nhưng gắn với benchmark cụ thể đó và so sánh năm 2023 đó, không phải là tuyên bố chung rằng "QLoRA bằng ChatGPT". So với LoRA thông thường, Axolotl mô tả QLoRA có "sự suy giảm nhẹ do nhiễu lượng tử hóa": cơ sở 4-bit đưa vào các lỗi nhỏ mà cơ sở độ chính xác đầy đủ của LoRA không có. Với hầu hết công việc, điều này không đáng kể; đối với một nhiệm vụ nhạy cảm với những thay đổi nhỏ về độ chính xác, đây là điều nên kiểm tra hơn là giả định.
Mẹo hay: Bất ngờ về chất lượng phổ biến nhất không phải là QLoRA so với LoRA. Đó là một mô hình được fine-tune cho ra kết quả kém hơn mô hình cơ sở mà bạn bắt đầu. Điều này thường có nghĩa là quá trình huấn luyện đã làm điều gì đó bạn không định làm: quá mạnh tay trên một tập dữ liệu hẹp, hoặc chỉ được đánh giá trên nhiệm vụ mới trong khi năng lực tổng quát âm thầm suy giảm. Luôn kiểm tra mô hình đã fine-tune trên vài prompt bên ngoài phân phối huấn luyện của bạn trước khi tin tưởng nó. Sự suy giảm ở đó là tín hiệu để rút lại, không phải để triển khai.
Điểm rút ra của phần này: sự tương đương chất lượng phụ thuộc vào nhiệm vụ. Đầu ra có cấu trúc và làm theo hướng dẫn an toàn với LoRA/QLoRA; suy luận phức tạp là nơi fine-tuning đầy đủ vẫn xứng đáng với chi phí của nó.
Khi Nào Bạn Nên Chọn Mỗi Phương Pháp?
Bắt đầu với QLoRA cho hầu hết các trường hợp fine-tuning một GPU. Chuyển lên LoRA thông thường khi bạn có dư VRAM và muốn các bước nhanh hơn hoặc trần chất lượng cao hơn một chút. Dành fine-tuning đầy đủ cho những trường hợp thực sự cần nó: các thay đổi phân phối lớn, thay đổi quy mô tiền huấn luyện, hoặc các nhiệm vụ quan trọng về suy luận nơi khoảng cách benchmark là thực. Định hướng theo ba yếu tố đầu vào, theo thứ tự: VRAM khả dụng, loại nhiệm vụ và yêu cầu chất lượng, sau đó là tốc độ.
Đây là cách định hướng theo kiểu "làm điều này, không phải điều đó":
1. Kiểm tra VRAM trước tiên. Nếu bạn dùng một card duy nhất với 24 GB hoặc ít hơn (hầu hết GPU dành cho người dùng phổ thông và prosumer), QLoRA là phương pháp mặc định của bạn, vì đây là phương pháp duy nhất trong ba phương pháp có thể chứa một mô hình 7B một cách đáng tin cậy trong giới hạn đó. Đừng chọn full fine-tuning trên một card phổ thông duy nhất; bảng trên đã cho bạn thấy một tác vụ 7B sẽ không vừa, và bạn sẽ mất cả cuối tuần để học điều đó theo cách khó khăn.
2. Sau đó xem xét nhiệm vụ của bạn và tiêu chuẩn chất lượng. Nếu nhiệm vụ của bạn là làm theo hướng dẫn, tạo đầu ra có cấu trúc, SQL, hoặc thích ứng miền tổng quát, các bằng chứng từ Anyscale cho thấy LoRA và QLoRA mang lại chất lượng gần như đầy đủ. Hãy giữ lựa chọn mặc định. Nếu nhiệm vụ của bạn nặng về lý luận (toán nhiều bước, chuỗi logic phức tạp) và chất lượng là điều không thể thỏa hiệp, đó là lý do thực sự đầu tiên để bạn xem xét chuyển sang full fine-tuning, vì đây là loại nhiệm vụ duy nhất mà các benchmark cho thấy khoảng cách nhất quán.
3. Sau đó, cân nhắc tốc độ. QLoRA đánh đổi một phần tốc độ mỗi bước để tiết kiệm bộ nhớ: phần nền 4-bit phải được giải lượng tử hóa (dequantize) ngay khi chạy. Nếu bạn có đủ VRAM để chạy LoRA thông thường (16-24 GB cho mô hình 7B), bạn sẽ có các bước nhanh hơn và tránh được nhiễu từ lượng tử hóa, điều này khiến LoRA là lựa chọn tốt hơn khi bộ nhớ không phải là ràng buộc chính và bạn lặp lại thử nghiệm nhiều.
Khi nào is full fine-tuning là câu trả lời đúng? Hướng dẫn của Axolotl rất rõ ràng: nó là bắt buộc cho pre-training, và là lựa chọn "khi bạn có nhiều bộ nhớ GPU hoặc thiết lập nhiều GPU, và cần hiệu suất tối đa." Ngoài những điều kiện đó (và với đại đa số việc fine-tuning trong thực tế, tức là điều chỉnh một mô hình có sẵn để phù hợp với một hành vi hoặc miền cụ thể), các phương pháp hiệu quả về tham số mang lại phần lớn chất lượng chỉ với một phần nhỏ phần cứng.
Unsloth nêu rõ lựa chọn mặc định:
"Chúng tôi khuyên bạn nên bắt đầu với QLoRA, vì đây là một trong những phương pháp dễ tiếp cận và hiệu quả nhất để huấn luyện mô hình."
Đó là quy tắc. Mặc định dùng QLoRA, nâng lên LoRA để tăng tốc khi bạn có đủ bộ nhớ, và chỉ chuyển sang full fine-tuning khi tác vụ hoặc quy mô buộc bạn phải làm vậy.
Điểm rút ra của phần này: QLoRA là lựa chọn mặc định; LoRA là bản nâng cấp về tốc độ và dư địa; full fine-tuning là trường hợp ngoại lệ mà bạn phải lý giải bằng sự dịch chuyển phân phối, tiền huấn luyện, hoặc một bài kiểm tra khả năng suy luận.
Mọi người thường hiểu sai điều gì về các phương pháp fine-tuning?
Hai quan niệm sai lầm gây ra hầu hết những kỳ nghỉ cuối tuần bị lãng phí. Thứ nhất là coi fine-tuning như một cách để dạy cho mô hình những sự thật mới, trong khi tác dụng chính của nó là định hình hành vi. Thứ hai là cho rằng bạn có thể mua chất lượng chỉ bằng cách xoay một nút vặn: rằng LoRA rank cao hơn, hoặc full fine-tuning thay vì QLoRA, tự động mang lại một mô hình tốt hơn. Cả hai đều đúng một nửa, và chính vì vậy mà chúng gây hiểu lầm.
Fine-Tuning Có Dạy Cho Mô Hình Những Sự Thật Mới Không?
Đây là điểm có sự chia rẽ thực sự giữa các chuyên gia, vì vậy nên hiểu đúng sắc thái hơn là chọn theo một phía. Nhiều hướng dẫn thực hành gọi "fine-tuning dạy sự thật mới" là quan niệm sai lầm số một: quan điểm của họ là fine-tuning giỏi hơn nhiều trong việc định hình cách mô hình phản hồi so với việc đưa vào một cách đáng tin cậy những sự thật cụ thể mà nó chưa từng thấy trong quá trình pre-training. Tài liệu của Unsloth phản bác trực tiếp điều này, gọi tuyên bố rằng fine-tuning không thể dạy kiến thức mới là "sai", và mô tả fine-tuning là một cách để "đưa vào và học thông tin mới đặc thù theo lĩnh vực".
Cả hai đều đúng một phần, và cách hiểu dung hòa là: fine-tuning đáng tin cậy trong việc định hình hành vi và củng cố kiến thức đã tồn tại ngầm trong mô hình cơ sở, và nó có thể mã hóa các mẫu hình đặc thù theo lĩnh vực. Điều nó không đáng tin cậy là cấy vào những sự thật riêng lẻ hoàn toàn không có trong quá trình pre-training. Mục tiêu của bạn càng giống "ghi nhớ tài liệu cụ thể này", bạn càng có khả năng đang dùng sai công cụ, và retrieval có thể phù hợp hơn. Vậy nên lời khuyên thực tế vẫn đứng vững qua cuộc tranh luận này: dựa vào fine-tuning cho hành vi và phong cách, hãy hoài nghi khi dùng nó như một cơ chế cấy sự thật.
LoRA Rank Cao Hơn Có Luôn Cải Thiện Chất Lượng Không?
Không, và đây là nút vặn dễ bị xoay quá tay nhất. Trực giác cho rằng rank cao hơn cho adapter nhiều dung lượng hơn, vì vậy nhiều hơn chắc phải tốt hơn. Databricks đã kiểm chứng điều này bằng thực nghiệm và phát hiện ra rằng việc tăng gấp đôi rank "có vẻ như không dẫn đến bất kỳ sự gia tăng đáng nhận thấy nào về chất lượng đầu ra". Điều thực sự tạo ra khác biệt trong các thí nghiệm của họ là những lớp nào họ nhắm tới (điều chỉnh tất cả các lớp tuyến tính thay vì chỉ các khối attention), không phải việc tăng số rank. Bài học đáng rút ra: hãy dồn công sức điều chỉnh vào các module mục tiêu và chất lượng dữ liệu trước khi dồn vào việc thổi phồng rank.
Chất lượng của LoRA có luôn tương đương với Full Fine-Tuning không?
Không phải luôn đúng, và một bài báo nghiên cứu gần đây đã chỉ ra một kiểu lỗi cụ thể. "LoRA vs Full Fine-tuning: An Illusion of Equivalence" của Shuttleworth et al. phát hiện rằng việc huấn luyện LoRA có thể tạo ra "chiều xâm nhập" (các vector đơn nhất có hạng cao không xuất hiện trong các mô hình được full fine-tuning) và liên kết chúng với hiện tượng lãng quên trong các tình huống học liên tục, nơi cùng một mô hình được fine-tuning nhiều lần liên tiếp. Đây là một lưu ý cụ thể, không phải một sự phản bác toàn diện: nếu bạn chỉ thực hiện một vòng fine-tuning cho một tác vụ, các bằng chứng rộng về sự tương đương chất lượng vẫn đúng. Nếu bạn nối chuỗi các lần fine-tuning và quan tâm đến việc giữ nguyên khả năng tổng quát của mô hình gốc, đây chính là kiểu lỗi cần theo dõi.
Câu hỏi thường gặp
Sự khác biệt giữa LoRA, QLoRA và Full Fine-Tuning là gì?
Full fine-tuning cập nhật mọi tham số trong mô hình. LoRA đóng băng mô hình gốc và thay vào đó huấn luyện các ma trận adapter hạng thấp (low-rank) nhỏ, chiếm khoảng 0,1-2% tổng số tham số. QLoRA làm những gì LoRA làm và còn lượng tử hóa mô hình gốc đã đóng băng xuống độ chính xác 4-bit NF4, nhờ đó mô hình gốc chiếm bộ nhớ ít hơn nhiều trong khi các adapter được huấn luyện. Kết quả là một thang bộ nhớ rõ ràng: full fine-tuning nặng nhất, LoRA nhẹ hơn, QLoRA nhẹ nhất.
Cần bao nhiêu VRAM để Fine-Tune một mô hình 7B?
Đối với một mô hình 7B, số liệu của Axolotl cho thấy full fine-tuning cần khoảng 60-80 GB, LoRA cần 16-24 GB, và QLoRA cần 10-14 GB. QLoRA là phương pháp duy nhất trong ba phương pháp thường vừa với một GPU tiêu dùng hoặc prosumer đơn lẻ có 12-24 GB; full fine-tuning một mô hình 7B cần bộ nhớ cấp trung tâm dữ liệu hoặc nhiều GPU.
Chất lượng của QLoRA có kém hơn LoRA hay Full Fine-Tuning không?
Điều đó tùy thuộc vào nhiệm vụ. Đối với hầu hết công việc làm theo hướng dẫn và đầu ra có cấu trúc, QLoRA nằm trong khoảng vài phần trăm so với fine-tuning đầy đủ, và Axolotl chỉ mô tả "sự suy giảm nhẹ do nhiễu lượng tử hóa" so với LoRA thông thường. Khoảng cách rộng hơn ở các nhiệm vụ suy luận phức tạp như toán học, nơi fine-tuning đầy đủ cho thấy lợi thế nhất quán trong một nghiên cứu của Anyscale năm 2023 trên Llama 2.
Khi Nào Fine-Tuning Đầy Đủ Thực Sự Đáng Giá?
Fine-tuning đầy đủ đáng với chi phí của nó cho tiền huấn luyện, các thay đổi phân phối lớn, và các nhiệm vụ quan trọng về suy luận nơi benchmark cho thấy khoảng cách chất lượng thực sự. Đây cũng là con đường khi bạn có nhiều bộ nhớ GPU hoặc cấu hình nhiều GPU và cần chất lượng tối đa. Đối với trường hợp thông thường (điều chỉnh một mô hình hiện có cho một hành vi hoặc lĩnh vực cụ thể), LoRA hoặc QLoRA mang lại cho bạn hầu hết chất lượng với một phần nhỏ phần cứng.
Fine-Tuning Có Dạy Cho Mô Hình Những Sự Thật Mới Không?
Một phần. Fine-tuning đáng tin cậy trong việc định hình hành vi và củng cố kiến thức đã tồn tại ngầm trong mô hình cơ sở, và nó có thể mã hóa các mẫu hình đặc thù theo lĩnh vực. Nó không đáng tin cậy trong việc cài đặt các sự kiện rời rạc hoàn toàn không có trong tiền huấn luyện. Có một sự bất đồng thực sự giữa các chuyên gia ở đây. Tài liệu của Unsloth cho rằng fine-tuning có thể dạy kiến thức mới, trong khi các hướng dẫn khác gọi đây là quan niệm sai lầm hàng đầu, và quan điểm dung hòa là sử dụng fine-tuning cho hành vi và phong cách, và tìm đến retrieval khi mục tiêu là ghi nhớ các sự kiện cụ thể.
Điều Này Đưa Bạn Đến Đâu
Việc chọn phương pháp quy về một mặc định và hai lối thoát: bắt đầu với QLoRA, chuyển lên LoRA khi bộ nhớ không phải là hạn chế và bạn muốn các bước nhanh hơn, chuyển lên fine-tuning đầy đủ chỉ khi một sự thay đổi phân phối, tiền huấn luyện, hoặc một benchmark suy luận buộc phải làm vậy.
Khi phương pháp đã được xác định, quyết định tiếp theo là phần cứng mà nó ngụ ý. Việc chọn phương pháp của bạn vừa cho bạn biết liệu bạn đang tìm một card tiêu dùng đơn lẻ hay bộ nhớ trung tâm dữ liệu. Nếu bạn muốn so sánh các card cụ thể cho tải công việc AI, H100 so với RTX 4090 benchmark đề cập đến vấn đề đó. Xác định kích thước GPU cho phương pháp bạn đã chọn, và hướng dẫn từng bước để chạy công việc huấn luyện thực tế, là các hướng dẫn riêng biệt của chính chúng.