Mô hình và nền tảng AI

LoRA, QLoRA và QA-LoRA: Tính linh hoạt hiệu quả trong Mô hình Ngôn ngữ Lớn thông qua Phân tích Ma trận hạng thấp

mm
Thêm Unite.AI vào các nguồn ưu tiên của bạn trên Google

Mô hình Ngôn ngữ Lớn (LLM) đã tạo ra một chỗ đứng riêng biệt, cung cấp khả năng hiểu và tạo văn bản giống con người. Sức mạnh của LLM có thể được truy nguyên từ kích thước khổng lồ của chúng, thường có hàng tỷ tham số. Mặc dù quy mô này thúc đẩy hiệu suất của chúng, nhưng nó cũng tạo ra thách thức, đặc biệt là khi nói đến việc điều chỉnh mô hình cho các nhiệm vụ hoặc lĩnh vực cụ thể. Các phương pháp truyền thống để quản lý LLM, chẳng hạn như tinh chỉnh tất cả các tham số, đòi hỏi một lượng tính toán và tài chính lớn, do đó tạo ra một rào cản đáng kể đối với việc áp dụng rộng rãi trong các ứng dụng thực tế.

Trong một bài viết trước, chúng tôi đã tìm hiểu về việc tinh chỉnh Mô hình Ngôn ngữ Lớn (LLM) để phù hợp với các yêu cầu cụ thể. Chúng tôi đã khám phá các phương pháp tinh chỉnh khác nhau như Tinh chỉnh dựa trên Hướng dẫn, Tinh chỉnh cho Nhiệm vụ Đơn, và Tinh chỉnh Hiệu quả về Tham số (PEFT), mỗi phương pháp có cách tiếp cận riêng để tối ưu hóa LLM cho các nhiệm vụ khác nhau. Trung tâm của cuộc thảo luận là kiến trúc transformer, nền tảng của LLM, và những thách thức do nhu cầu tính toán và bộ nhớ của việc xử lý một số lượng lớn tham số trong quá trình tinh chỉnh.

Tham số trong LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

Hình ảnh trên thể hiện quy mô của các mô hình ngôn ngữ lớn khác nhau, được sắp xếp theo số lượng tham số. Đáng chú ý: PaLM, BLOOM, v.v.

Đến năm nay, đã có những tiến bộ dẫn đến các mô hình thậm chí còn lớn hơn. Tuy nhiên, việc tinh chỉnh các mô hình mã nguồn mở khổng lồ này trên các hệ thống tiêu chuẩn là không khả thi nếu không có các kỹ thuật tối ưu hóa chuyên dụng.

Đó là nơi Low-Rank Adaptation (LoRA) được giới thiệu bởi Microsoft (MSFT ) trong bài viết này, nhằm giảm thiểu những thách thức này và làm cho LLM trở nên dễ tiếp cận và linh hoạt hơn.

Sự tiến hóa của các Chiến lược Tinh chỉnh LLM

Khi nhìn lại hành trình của việc tinh chỉnh LLM, có thể xác định được một số chiến lược mà các nhà thực hành đã sử dụng trong những năm qua. Ban đầu, trọng tâm là tinh chỉnh các mô hình đã được đào tạo trước, một chiến lược đòi hỏi phải thay đổi toàn diện các tham số của mô hình để phù hợp với nhiệm vụ cụ thể. Tuy nhiên, khi các mô hình tăng về kích thước và độ phức tạp, nhu cầu tính toán của phương pháp này cũng tăng theo.

Chiến lược tiếp theo đã thu hút sự chú ý là tinh chỉnh một phần, một phiên bản hạn chế hơn của tiền nhiệm. Ở đây, chỉ một phần của các tham số của mô hình được tinh chỉnh, giảm bớt gánh nặng tính toán đến một mức độ nào đó. Mặc dù nó có những ưu điểm, nhưng tinh chỉnh một phần vẫn không thể theo kịp tốc độ tăng trưởng về kích thước của LLM.

Khi các nhà thực hành tìm cách khám phá các phương pháp hiệu quả hơn, tinh chỉnh toàn diện đã xuất hiện như một phương pháp nghiêm ngặt nhưng có phần thưởng.

Giới thiệu về LoRA

Hạng của một ma trận cho chúng ta cái nhìn về các chiều được tạo bởi các cột của nó, được xác định bởi số lượng hàng hoặc cột duy nhất mà nó có.

  • Ma trận hạng đầy đủ: Hạng của nó khớp với số nhỏ hơn giữa số hàng và số cột.
  • Ma trận hạng thấp: Với hạng đáng chú ý nhỏ hơn cả số hàng và số cột, nó nắm bắt ít tính năng hơn.

Bây giờ, các mô hình lớn nắm bắt một sự hiểu biết rộng về lĩnh vực của chúng, như ngôn ngữ trong các mô hình ngôn ngữ. Nhưng, việc tinh chỉnh chúng cho các nhiệm vụ cụ thể thường chỉ cần nhấn mạnh một phần nhỏ của những hiểu biết này. Đây là nơi LoRA tỏa sáng. Nó đề xuất rằng ma trận thể hiện những điều chỉnh trọng lượng có thể là một ma trận hạng thấp, do đó nắm bắt ít tính năng hơn.

LoRA thông minh hạn chế hạng của ma trận cập nhật này bằng cách chia nó thành hai ma trận hạng thấp hơn. Vì vậy, thay vì thay đổi toàn bộ ma trận trọng lượng, nó chỉ thay đổi một phần của nó, làm cho quá trình tinh chỉnh trở nên hiệu quả hơn.

Áp dụng LoRA vào Transformer

LoRA giúp giảm tải trọng huấn luyện trong mạng nơ-ron bằng cách tập trung vào các ma trận trọng lượng cụ thể. Dưới kiến trúc Transformer, một số ma trận trọng lượng được liên kết với cơ chế tự chú ý, cụ thể là Wq, Wk, Wv và Wo, ngoài hai ma trận khác trong mô-đun MLP.

Kiến trúc Transformer

Kiến trúc Transformer

 

Đầu chú ý Transformer

Đầu chú ý Transformer

Giải thích Toán học về LoRA

Hãy phân tích toán học đằng sau LoRA:

  1. Ma trận Trọng số đã được Đào tạo :
    • Nó bắt đầu với một ma trận trọng số đã được đào tạo trước có kích thước . Điều này có nghĩa là ma trận có hàng và cột.
  2. Phân tích Hạng thấp:
    • Thay vì cập nhật trực tiếp toàn bộ ma trận , phương pháp này đề xuất một cách tiếp cận phân tích hạng thấp.
    • Cập nhật đến có thể được biểu diễn như một sản phẩm của hai ma trận: .
      • có kích thước
      • có kích thước
    • Điểm chính ở đây là hạng nhỏ hơn nhiều so với cả , cho phép một biểu diễn tính toán hiệu quả hơn.
  3. Đào tạo:
    • Trong quá trình đào tạo, vẫn không thay đổi. Điều này được gọi là “đông cứng” trọng số.
    • Mặt khác, là các tham số có thể đào tạo. Điều này có nghĩa là, trong quá trình đào tạo, các điều chỉnh được thực hiện đối với các ma trận để cải thiện hiệu suất của mô hình.
  4. Sản phẩm và Cộng:
    • Cả và cập nhật (đây là sản phẩm của ) được nhân với cùng một đầu vào (được biểu thị bằng ).
    • Kết quả của những phép nhân này sau đó được cộng lại.
    • Quá trình này được tóm tắt trong phương trình: Ở đây, đại diện cho đầu ra cuối cùng sau khi áp dụng các cập nhật vào đầu vào .

Tóm lại, phương pháp này cho phép cập nhật một ma trận trọng lượng lớn một cách hiệu quả hơn bằng cách biểu diễn các cập nhật bằng cách phân tích hạng thấp, điều này có lợi trong việc giảm thiểu tính toán và sử dụng bộ nhớ.

LoRA

LoRA

Kích hoạt và Tỷ lệ:

Khi đào tạo mô hình, cách chúng ta khởi tạo các tham số có thể ảnh hưởng đáng kể đến hiệu quả và hiệu suất của quá trình học. Trong bối cảnh cập nhật ma trận trọng lượng bằng :

  1. Khởi tạo Ma trận :
    • Ma trận : Ma trận này được khởi tạo với các giá trị Gaussian ngẫu nhiên, cũng được gọi là phân phối chuẩn. Lý do đằng sau việc sử dụng khởi tạo Gaussian là để phá vỡ tính đối xứng: các nơ-ron khác nhau trong cùng một lớp sẽ học các tính năng khác nhau khi chúng có trọng số ban đầu khác nhau.
    • Ma trận : Ma trận này được khởi tạo với các giá trị bằng không. Bằng cách làm như vậy, cập nhật bắt đầu bằng không ở đầu quá trình đào tạo. Nó đảm bảo rằng không có sự thay đổi đột ngột trong hành vi của mô hình ở đầu, cho phép mô hình thích nghi dần dần khi học các giá trị phù hợp trong quá trình đào tạo.
  2. Tỷ lệ Đầu ra từ :
    • Sau khi tính toán cập nhật , đầu ra của nó được tỷ lệ hóa bởi một hệ số
    • Tỷ lệ hóa đặc biệt quan trọng khi hạng thay đổi. Ví dụ, nếu bạn quyết định tăng hạng cho độ chính xác cao hơn (với chi phí tính toán), tỷ lệ hóa đảm bảo rằng bạn không cần điều chỉnh nhiều siêu tham số khác trong quá trình. Nó cung cấp một mức độ ổn định cho mô hình.

Tác động Thực tế của LoRA

LoRA đã chứng minh tiềm năng của nó trong việc tinh chỉnh LLM cho các phong cách nghệ thuật cụ thể một cách hiệu quả bởi cộng đồng AI. Điều này đã được thể hiện rõ ràng trong việc thích nghi một mô hình để bắt chước phong cách nghệ thuật của Greg Rutkowski.

Như đã nhấn mạnh trong bài viết với GPT-3 175B làm ví dụ. Việc có các phiên bản tinh chỉnh riêng cho mỗi mô hình 175B tham số là khá tốn kém. Nhưng với LoRA, số lượng tham số có thể đào tạo giảm 10.000 lần, và sử dụng bộ nhớ GPU được giảm xuống một phần ba.

Tác động của LoRA đối với việc tinh chỉnh GPT-3

Tác động của LoRA đối với việc tinh chỉnh GPT-3

Phương pháp LoRA không chỉ đại diện cho một bước tiến quan trọng trong việc làm cho LLM trở nên dễ tiếp cận hơn mà còn nhấn mạnh tiềm năng để bắc cầu giữa những tiến bộ lý thuyết và ứng dụng thực tế trong lĩnh vực AI. Bằng cách giảm thiểu các rào cản tính toán và tạo điều kiện cho một quá trình thích nghi mô hình hiệu quả hơn, LoRA có khả năng đóng vai trò quan trọng trong việc áp dụng và triển khai LLM trong các kịch bản thực tế.

QLoRA (Quantized)

Mặc dù LoRA là một bước tiến quan trọng trong việc giảm nhu cầu lưu trữ, nó vẫn đòi hỏi một GPU mạnh để tải mô hình cho đào tạo. Đây là nơi QLoRA, hoặc Quantized LoRA, bước vào, kết hợp LoRA với Quantization để có một cách tiếp cận thông minh hơn.

Quantization

Quantization

Thông thường, các tham số trọng số được lưu trữ trong định dạng 32-bit (FP32), có nghĩa là mỗi phần tử trong ma trận chiếm 32 bit không gian. Hãy tưởng tượng nếu chúng ta có thể nén cùng thông tin vào chỉ 8 hoặc thậm chí 4 bit. Đó là ý tưởng cốt lõi đằng sau QLoRA. Quantization đề cập đến quá trình ánh xạ các giá trị liên tục vô hạn đến một tập hợp các giá trị hữu hạn rời rạc. Trong bối cảnh LLM, nó đề cập đến quá trình chuyển đổi trọng số của mô hình từ các loại dữ liệu có độ chính xác cao hơn sang các loại có độ chính xác thấp hơn.

Quantization trong LLM

Quantization trong LLM

Dưới đây là một bản tóm tắt đơn giản về QLoRA:

  1. Quantization Ban đầu: Đầu tiên, Mô hình Ngôn ngữ Lớn (LLM) được quantized xuống 4 bit, giảm đáng kể dấu chân bộ nhớ.
  2. Đào tạo LoRA: Sau đó, đào tạo LoRA được thực hiện, nhưng trong độ chính xác tiêu chuẩn 32-bit (FP32).

Bây giờ, bạn có thể tự hỏi, tại sao lại quay lại 32 bit cho đào tạo sau khi giảm xuống 4 bit? Để đào tạo các bộ điều chỉnh LoRA hiệu quả trong FP32, trọng số mô hình cần quay trở lại FP32 quá.

LoRA tìm thấy ứng dụng thực tế trong thư viện Tinh chỉnh Hiệu quả về Tham số (PEFT) của Hugging Face, đơn giản hóa việc sử dụng nó. Đối với những người muốn sử dụng QLoRA, nó có sẵn thông qua sự kết hợp của các thư viện bitsandbytes và PEFT. Ngoài ra, thư viện Học tăng cường Transformer (TRL) của HuggingFace hỗ trợ tinh chỉnh giám sát với sự hỗ trợ tích hợp cho LoRA. Cùng nhau, ba thư viện này cung cấp công cụ thiết yếu để tinh chỉnh một mô hình đã được đào tạo trước, cho phép tạo ra các mô tả sản phẩm thuyết phục và nhất quán khi được yêu cầu với các hướng dẫn thuộc tính cụ thể.

Sau khi tinh chỉnh từ QLoRA, trọng số cần phải quay trở lại định dạng độ chính xác cao, điều này có thể dẫn đến mất độ chính xác và thiếu tối ưu hóa để tăng tốc quá trình.

Một giải pháp được đề xuất là nhóm ma trận trọng lượng thành các đoạn nhỏ hơn và áp dụng quantization và thích nghi hạng thấp cho từng nhóm riêng biệt. Một phương pháp mới, được gọi là QA-LoRA, cố gắng kết hợp lợi ích của quantization và thích nghi hạng thấp trong khi vẫn giữ quá trình hiệu quả và mô hình hiệu quả cho các nhiệm vụ mong muốn.

Kết luận

Trong bài viết này, chúng ta đã đề cập đến những thách thức do kích thước tham số khổng lồ của chúng. Chúng ta đã tìm hiểu về các phương pháp tinh chỉnh truyền thống và nhu cầu tính toán và tài chính liên quan. Cốt lõi của LoRA nằm ở khả năng của nó trong việc sửa đổi các mô hình đã được đào tạo trước mà không cần đào tạo lại toàn bộ, do đó giảm số lượng tham số có thể đào tạo và làm cho quá trình thích nghi trở nên tiết kiệm chi phí hơn.

Chúng ta cũng đã tìm hiểu về Quantized LoRA (QLoRA), một sự kết hợp giữa LoRA và Quantization, giúp giảm dấu chân bộ nhớ của mô hình trong khi vẫn giữ độ chính xác cần thiết cho đào tạo. Với những kỹ thuật tiên tiến này, các nhà thực hành hiện đã được trang bị một bộ công cụ mạnh mẽ, giúp việc áp dụng và triển khai LLM trong nhiều kịch bản thực tế trở nên dễ dàng hơn.

Matrix

Matrix

Các chiến lược này được thiết kế để cân bằng giữa việc làm cho LLM trở nên linh hoạt cho các nhiệm vụ cụ thể và đảm bảo rằng quá trình tinh chỉnh và triển khai không quá đòi hỏi về tính toán và tài nguyên lưu trữ.

Tôi đã dành 5 năm qua để đắm mình trong thế giới hấp dẫn của Máy học và Học sâu. Đam mê và chuyên môn của tôi đã dẫn tôi đến việc đóng góp vào hơn 50 dự án kỹ thuật phần mềm đa dạng, với sự tập trung đặc biệt vào AI/ML. Sự tò mò liên tục của tôi cũng đã thu hút tôi đến với Xử lý Ngôn ngữ Tự nhiên, một lĩnh vực tôi渴望 khám phá thêm.