0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

[Hướng dẫn LLM 101] Thảo luận về cách Finetune mô hình LLM với phương pháp LoRA (Low-Rank Adaptation)

Đăng vào 3 tuần trước

• 4 phút đọc

Chủ đề:

LLM

Giới thiệu về LoRA

Trong thời đại mà các mô hình ngôn ngữ lớn (LLM) phát triển mạnh mẽ, kích thước của chúng là một thách thức lớn cho công tác huấn luyện. Việc cập nhật tất cả các tham số của mô hình trong quá trình training yêu cầu nhiều tài nguyên bộ nhớ GPU, dẫn đến chi phí cao.

Giả sử chúng ta có một mô hình LLM với 7 tỷ tham số được biểu diễn trong một ma trận trọng số W. Trong quá trình back propagation, ta cần học một ma trận cập nhật trọng số ΔW, reflex cách mà các trọng số cần được điều chỉnh để tối ưu hóa hàm mất mát. Kích thước của ΔW cũng lớn như W, do đó việc tính toán matris này gây tốn kém về mặt thời gian và bộ nhớ.

Phương pháp LoRA được phát triển nhằm giải quyết bài toán này bằng cách phân rã (decompose) ΔW thành hai ma trận nhỏ hơn A và B có rank thấp hơn. Cụ thể, chúng ta có thể biểu diễn ΔW như sau: ΔW = A * B. Phương pháp này giúp giảm thiểu đáng kể tài nguyên tính toán. Kết quả là, trong trường hợp với ΔW kích thước 200 triệu tham số, nếu rank r được chọn là 8, chúng ta chỉ cần 240,000 tham số cho A và B, tiết kiệm khoảng 830 lần so với việc lưu trữ toàn bộ ΔW.

Mặc dù A và B không thể tổng hợp toàn bộ thông tin của ΔW, nhưng khi finetune một LLM, chúng ta chỉ cần cập nhật một phần trọng số cơ bản, giúp duy trì hiệu suất của mô hình mà không cần yêu cầu bộ nhớ lớn.

Đặc điểm nổi bật của LoRA

Tính nhất quán

Khi thử nghiệm với LoRA, các kết quả benchmark duy trì sự nhất quán cao giữa các lần chạy khác nhau, bất chấp sự ngẫu nhiên trong quá trình training. Điều này cho thấy rằng LoRA có thể duy trì hiệu suất ổn định và giảm thiểu tác động của yếu tố ngẫu nhiên, tạo điều kiện thuận lợi cho so sánh giữa các phương pháp khác nhau.

Thời gian training và bộ nhớ sử dụng

QLoRA (quantized LoRA) là một kỹ thuật giảm thiểu bộ nhớ trong quá trình finetuning bằng cách lượng tử hóa các trọng số đã được pretrained xuống độ chính xác 4-bit và sử dụng các paged optimizers. Việc sử dụng QLoRA có thể giúp tiết kiệm đến 33% bộ nhớ GPU, nhưng thời gian training cũng tăng lên 39% do các bước lượng tử hóa bổ sung.

So sánh giữa LoRA và QLoRA:

  • LoRA với 16-bit floating point: Thời gian huấn luyện 1.85 giờ và 21.33 GB bộ nhớ sử dụng.
  • QLoRA với 4-bit Normal Floats: Thời gian huấn luyện 2.79 giờ và 14.18 GB bộ nhớ.

Mặc dù thời gian huấn luyện của QLoRA cao hơn, nhưng hiệu suất mô hình không bị ảnh hưởng đáng kể, khiến QLoRA trở thành sự lựa chọn khả thi cho các hệ thống có giới hạn về tài nguyên GPU.

Learning Rate Schedulers

Learning Rate Schedulers được áp dụng để dần giảm giá trị learning rate trong suốt quá trình huấn luyện nhằm đạt hiệu quả tối ưu. Trong số đó, phương pháp cosine annealing, với curve tán xạ cosine, có thể cải thiện hiệu suất của SGD, dù tác động ít hơn đối với các optimizer như Adam.

Số lượng epoch nên finetune bao nhiêu?

Trong quá trình instruction finetuning, việc tăng số lượng epoch không phải lúc nào cũng mang lại lợi ích; ngược lại, sử dụng quá nhiều epoch có thể dẫn đến overfitting. Thí nghiệm cho thấy rằng hiệu suất của mô hình giảm sút khi ép tối đa số lần chạy.

Chọn optimizer giữa Adam và SGD

Dù Adam và AdamW phổ biến trong deep learning nhưng chúng yêu cầu khá nhiều bộ nhớ so với SGD. Đối với mô hình Llama 2 với 7 tỷ tham số, sự khác biệt về bộ nhớ giữa AdamW và SGD là rất nhỏ. Tuy nhiên, nếu tăng giá trị của r sẽ tiết kiệm nhiều VRAM hơn.

Áp dụng LoRA cho nhiều layer

Việc kích hoạt LoRA cho tất cả các layer trong mô hình có thể tạo ra một sự cải thiện đáng kể về hiệu suất. Khi thử nghiệm thêm tham số cho nhiều layer, hiệu quả huấn luyện có thể được tối ưu hóa hơn nữa.

Chọn hyperparameter cho LoRA

Việc lựa chọn hyperparameter như R và α là quan trọng để tối ưu hóa mô hình. Mặc dù quy tắc chọn α = 2 × r thường mang lại kết quả tốt, cần thử nghiệm với các giá trị khác nhau để đạt hiệu suất tốt nhất.

Kết luận

Việc sử dụng LoRA trong quá trình finetune LLM không chỉ giúp tiết kiệm tài nguyên mà còn mang lại hiệu quả cao, thời gian huấn luyện ngắn và khả năng tiếp cận mạnh mẽ đối với các mô hình lớn. Bằng cách điều chỉnh các tham số vào đúng thời điểm, chúng ta có thể tạo ra mô hình mạnh mẽ và tiết kiệm hơn nhiều.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào