1 điểm bởi GN⁺ 2024-01-23 | 1 bình luận | Chia sẻ qua WhatsApp

Fine-tuning LLM hiệu quả với kỹ thuật LoRA

  • LoRA (Low-Rank Adaptation) là kỹ thuật giúp fine-tuning LLM (Large Language Models) hiệu quả hơn.
  • Thay vì điều chỉnh toàn bộ tham số của mạng nơ-ron, LoRA chỉ cập nhật một số ít ma trận hạng thấp.

Làm theo ví dụ mã nguồn

  • Toàn bộ mã trong bài viết đều có thể tìm thấy trong Studio đi kèm.
  • Nhấp vào "Run" để có được một bản sao đầy đủ của môi trường mã và sẵn sàng chạy các tệp mã.

Hiểu về LoRA

  • LLM đã được tiền huấn luyện được gọi là mô hình nền tảng vì tính đa dụng của chúng trong nhiều tác vụ khác nhau.
  • Việc điều chỉnh LLM đã tiền huấn luyện cho một bộ dữ liệu hoặc tác vụ cụ thể được thực hiện thông qua fine-tuning.
  • LoRA cung cấp một giải pháp thay thế hiệu quả hơn bằng cách xấp xỉ các thay đổi trọng số của lớp trong quá trình huấn luyện dưới dạng hạng thấp.

Tự code LoRA từ đầu

  • Có thể triển khai lớp LoRA trong PyTorch như sau.
class LoRALayer(torch.nn.Module):
  def __init__(self, in_dim, out_dim, rank, alpha):
    super().__init__()
    self.A = torch.nn.Parameter(...)
    self.B = torch.nn.Parameter(...)
    self.alpha = alpha

  def forward(self, x):
    return self.alpha * (x @ self.A @ self.B)
  • LoRA chủ yếu được áp dụng cho các lớp tuyến tính (feedforward) của mạng nơ-ron.

Fine-tuning với LoRA -- ví dụ thực hành

  • LoRA có thể áp dụng không chỉ cho GPT hay mô hình tạo ảnh mà còn cho nhiều loại mạng nơ-ron khác nhau.
  • Bài viết cung cấp một ví dụ thực hành áp dụng một mô hình BERT nhỏ cho tác vụ phân loại văn bản.

So sánh với fine-tuning truyền thống

  • Với cấu hình LoRA cơ bản, mô hình đạt độ chính xác kiểm thử 89.44%.
  • So với fine-tuning truyền thống, LoRA cho hiệu năng tốt hơn với ít tham số hơn.

Tối ưu cấu hình LoRA

  • Có thể cải thiện hiệu năng bằng cách điều chỉnh các thiết lập siêu tham số của LoRA.
  • Có thể thử nghiệm nhiều tổ hợp siêu tham số khác nhau để tìm ra cấu hình tối ưu.

Kết luận

  • Bài viết đã hướng dẫn code LoRA từ đầu và fine-tuning mô hình DistilBERT cho tác vụ phân loại, qua đó xác nhận rằng LoRA cho hiệu năng tốt hơn so với chỉ fine-tuning lớp cuối của mô hình.

Ý kiến của GN⁺

  • LoRA là một kỹ thuật quan trọng để fine-tuning hiệu quả các mô hình ngôn ngữ lớn, và khi kích thước mô hình tăng lên, nó có tiềm năng giảm chi phí tính toán.
  • Thông qua các ví dụ thực tế, người đọc có thể hiểu cách áp dụng LoRA và phát triển khả năng vận dụng nó vào các bài toán thực tế.
  • Quá trình tối ưu hiệu năng bằng cách điều chỉnh siêu tham số của LoRA cho thấy một cách tiếp cận phổ biến trong việc tinh chỉnh các mô hình máy học.

1 bình luận

 
GN⁺ 2024-01-23
Ý kiến Hacker News
  • Đang theo dõi công nghệ này qua LLMs 101 của Maxime Labonne. Vẫn thấy lạ khi trong lĩnh vực khoa học máy tính người ta vẫn nói kiểu: "không biết chính xác hyperparameter ảnh hưởng đến kết quả như thế nào, nên hãy thử nhiều giá trị khác nhau và tìm ra cái tốt nhất".
  • LoRA và LoRa là hai thứ khác nhau, và có sự khó chịu về việc chúng dùng cùng một chữ viết tắt gây nhầm lẫn.
  • Vẫn chưa rõ khi nào thì nên fine-tuning. Trước đây tôi nghĩ đó là để thay đổi hành vi của mô hình, nhưng gần đây có vẻ một số công ty dùng fine-tuning để bổ sung kiến thức.
  • Có câu hỏi về các trường hợp sử dụng chính của fine-tuning.
  • Đây là một bài viết hay về LoRA. Tôi không phải chuyên gia trong lĩnh vực này, nhưng tôi hiểu rằng trong bài báo gốc, LoRA chỉ được áp dụng cho lớp dense cuối cùng. Cần lưu ý rằng trong QLoRA người ta dùng cách này và dường như có những hiệu ứng thú vị.
  • Tôi vẫn chưa thực sự hiểu vì sao LoRA hoạt động. Việc áp dụng ở lớp cuối cùng thì tôi hiểu, nhưng tôi không hiểu logic của việc lặp lại nó ở mỗi lớp linear. Có ai có thể giải thích trực giác đằng sau điều này không?
  • Mong rằng giao thức LoRa không dây là mã nguồn mở.
  • Tôi đã kỳ vọng đây sẽ là nội dung về giao thức LoRa không dây, nhưng dù vậy vẫn rất thú vị.
  • Đã bổ sung một bài tập tự triển khai forward pass của LoRA từ đầu. Ý tưởng của LoRA rất đẹp và phần triển khai khá đơn giản.
  • Có câu hỏi về thư viện phổ biến nhất cho fine-tuning.
  • Tôi thích cách tiếp cận dựa trên cấu hình của Axolotl hơn là bắt đầu từ đầu. Axolotl hỗ trợ mistral, llama-2 và nhiều kỹ thuật mới nhất.
  • Tập trung vào fine-tuning lấy dữ liệu làm trung tâm, và thay vì học LoRA từ đầu thì tập trung vào việc thu thập và tuyển chọn dữ liệu fine-tuning.