Trong bài viết này
Từ được đánh dấu có giải thích. Di chuột hoặc chạm để xem, hay mở từ điển AI.
Một ma trận 4096 × 4096 có hơn 16 triệu phần tử. Nếu phần cập nhật được biểu diễn bằng hai ma trận 4096 × 8 và 8 × 4096, ta chỉ học 65.536 phần tử. LoRA khai thác kiểu phân rã này để giảm số tham số phải tối ưu.
Bạn nên biết nhân ma trận, gradient và fine-tuning. Các kích thước trong bài là ví dụ giả định của một lớp, không phải cấu hình khuyến nghị hay kết quả benchmark.
Thay đổi nằm bên cạnh trọng số gốc
Gọi W0 là trọng số đã huấn luyện, có kích thước d_out × d_in. LoRA giữ W0 cố định và học A kích thước r × d_in cùng B kích thước d_out × r. Với vector đầu vào x, đầu ra có dạng W0x + sBAx; s là hệ số điều chỉnh, thường được cấu hình từ rank và một tham số scale.
Ma trận BA có hạng không vượt r. Ta hạn chế không gian cập nhật của lớp, chứ không nói bản thân W0 có hạng thấp. Đây là khác biệt quan trọng: mô hình nền vẫn giữ khả năng biểu diễn trong trọng số gốc, còn adapter học một thay đổi có cấu trúc.
LoRA: Low-Rank Adaptation of Large Language Models giới thiệu cách đóng băng trọng số nền và học các ma trận phân rã. Bài báo có những phép so sánh trên cấu hình cụ thể; không thể suy ra mọi nhiệm vụ đều đạt chất lượng bằng full fine-tuning.
Đếm đúng phần tiết kiệm
Full fine-tuning của lớp trên cập nhật d_out × d_in tham số. LoRA cập nhật r(d_in + d_out). Với hai chiều đều 4096 và r = 8, số tương ứng là 16.777.216 so với 65.536, nhỏ hơn 256 lần cho phần tham số học của riêng lớp này.
Điều đó không làm toàn bộ bộ nhớ huấn luyện nhỏ hơn 256 lần. W0 vẫn cần được lưu để forward. Activation vẫn cần cho backpropagation qua mạng. Optimizer state và gradient của phần học giảm mạnh, nhưng bộ nhớ tổng còn tùy batch, độ dài chuỗi, kiểu dữ liệu và cách checkpoint activation.
Tăng rank từ 8 lên 16 làm số tham số LoRA của lớp tăng gấp đôi. Nó mở rộng không gian cập nhật, nhưng không đảm bảo điểm đánh giá tăng. Nếu dữ liệu ít hoặc nhiễu, thêm khả năng thích nghi có thể học cả sai lệch.
Chọn vị trí gắn adapter là một giả thuyết
Có thể gắn LoRA vào các phép chiếu attention hoặc các lớp tuyến tính khác. Việc chọn target modules quyết định nơi mạng được phép thay đổi. Gắn vào nhiều lớp tăng tính linh hoạt và chi phí; gắn ít lớp tạo giới hạn cần được kiểm chứng bằng nhiệm vụ.
Một thử nghiệm hợp lý giữ dữ liệu, số bước và bộ kiểm thử ổn định, rồi thay một lựa chọn có ý nghĩa: rank hoặc nhóm lớp đích. Nếu thay cả rank, learning rate và dữ liệu cùng lúc, bạn không biết nguyên nhân của cải thiện.
Đặt một mốc so sánh, kiểm tra hệ thống đầy đủ rồi loại bỏ một thành phần. So sánh trong điều kiện phù hợp giúp hiểu thành phần ấy đóng góp gì.
↔ Vuốt ngang để xem toàn bộ sơ đồ.
01 / Mốc so sánh
Chọn baseline có ý nghĩa và ghi rõ dữ liệu, ngân sách cùng cách đánh giá.
02 / Hệ thống đầy đủ
Chạy cấu hình có đủ các thành phần và lưu lại kết quả theo cùng tiêu chí.
03 / Bỏ một thành phần
Tạo cấu hình chỉ thay đổi thành phần đang xét; giữ các điều kiện còn lại tương đương khi có thể.
04 / So sánh công bằng
Đối chiếu kết quả và sai số trong phạm vi thí nghiệm. Không quy mọi thay đổi cho một thành phần nếu nhiều yếu tố cùng đổi.
Sơ đồ chỉ minh họa cách đặt thí nghiệm ablation, không thể hiện kết quả đo hay khẳng định thành phần nào luôn có ích.
Sơ đồ ablation minh họa việc bỏ một thành phần; ở đây có thể bỏ adapter tại một nhóm lớp. Nó không vẽ phép nhân BA. So sánh hai rank khác nhau là kiểm tra độ nhạy của cấu hình, không đúng nguyên dạng thao tác loại bỏ trên hình.
Khởi tạo cũng cần đọc từ triển khai cụ thể. Một thiết lập phổ biến bắt đầu sao cho phần cập nhật bằng không, giúp đầu ra ban đầu khớp mô hình nền. Không nên tự đổi cả hai ma trận sang giá trị bất kỳ mà không kiểm tra hành vi bước đầu.
Adapter nhỏ vẫn cần quản lý phiên bản
Một tệp adapter phải đi cùng đúng mô hình nền, tokenizer và cấu hình đã dùng. Gắn vào checkpoint khác có cùng kích thước tensor chưa chắc đúng về mặt ngữ nghĩa. Cần lưu định danh nền và bộ thử hồi quy cùng artifact.
Trong một số cấu hình, có thể hợp nhất sBA vào W0 để suy luận bằng một ma trận. Nhưng việc hợp nhất phụ thuộc định dạng và triển khai; làm trên trọng số lượng tử hóa cần xử lý cẩn thận. Hợp nhất cũng khiến việc bật tắt nhiều adapter theo yêu cầu kém trực tiếp hơn.
LoRA không tự ngăn quên nhiệm vụ cũ hoặc rò rỉ dữ liệu huấn luyện. Những hiện tượng đó thuộc hành vi học và sử dụng dữ liệu, nên vẫn cần đánh giá riêng dù số tham số cập nhật ít.
Bài tập tính và chọn một phép so
Cho lớp 2048 × 4096, rank 4. Bạn phải tính được 24.576 tham số LoRA và 8.388.608 tham số đầy đủ. Sau đó tăng rank lên 8, giải thích vì sao số tham số học gấp đôi nhưng trọng số nền không đổi.
Viết một thử nghiệm so rank 4 và 8 trên cùng tập giữ lại, có cả điểm nhiệm vụ và peak memory. Tiêu chí tự kiểm là không chọn rank bằng training loss đơn thuần. Đọc QLoRA và ngân sách bộ nhớ để tách tiếp phần trọng số nền khỏi phần adapter.