Chuyển đến nội dung chính

Cách chạy Alpaca-LoRA trên thiết bị của bạn

Tìm hiểu cách chạy Alpaca-LoRA trên thiết bị của bạn với hướng dẫn toàn diện này. Khám phá cách mô hình nguồn mở này tận dụng công nghệ LoRA để mang đến giải pháp chatbot AI mạnh mẽ nhưng hiệu quả.
· 7 phút đọc

Khám phá cùng AI

Khi AI tạo sinh ngày càng phổ biến, các nhà phát triển trên toàn thế giới đang nắm bắt cơ hội để xây dựng những ứng dụng thú vị dùng ngôn ngữ tự nhiên. Một công cụ đặc biệt thu hút rất nhiều sự chú ý gần đây: ChatGPT.

ChatGPT là một mô hình ngôn ngữ do OpenAI phát triển. Mục tiêu của nó là đóng vai trò như một chatbot được hỗ trợ bởi AI có thể tương tác đối thoại giống con người. Mặc dù rất hữu ích, nó vẫn có những vấn đề riêng. ChatGPT không phải là mã nguồn mở, nghĩa là mã nguồn không thể truy cập và không thể sửa đổi. Nó cũng tiêu tốn rất nhiều tài nguyên, khiến việc tự xây dựng phiên bản của bạn trở thành một lựa chọn tệ.

Những vấn đề như vậy đã tạo ra một loạt giải pháp thay thế ChatGPT, như Alpaca-LoRA, có khả năng hoạt động tương tự ChatGPT nhưng với giấy phép nguồn mở và yêu cầu tài nguyên ít hơn.

Trong hướng dẫn này, chúng ta sẽ tập trung cụ thể vào Alpaca-LoRA. Chúng ta sẽ tìm hiểu nó là gì, các điều kiện tiên quyết để chạy trên thiết bị của bạn và các bước để thực thi.

Alpaca LoRA là gì?

Đầu tháng 3 năm 2023, Eric J. Wang phát hành dự án Alpaca-LoRA. Đây là dự án chứa mã để tái tạo kết quả của Stanford Alpaca bằng Parameter-Efficient Fine-Tuning (PEFT); đây là một thư viện cho phép các nhà phát triển tinh chỉnh các mô hình dựa trên transformer bằng LoRA.

Tìm hiểu về LoRA

Low-Rank Adaptation cho các Mô hình Ngôn ngữ Lớn (LoRA) là một phương pháp dùng để tăng tốc quá trình huấn luyện các mô hình lớn trong khi tiêu tốn ít bộ nhớ hơn.

Cách hoạt động như sau:

  • Đóng băng trọng số hiện có. Hãy hình dung mô hình như một mạng lưới phức tạp các nút liên kết (đó là các "trọng số"). Thông thường, bạn sẽ điều chỉnh tất cả các nút này trong quá trình huấn luyện để cải thiện mô hình. LoRA nói: "Đừng đụng vào chúng; hãy giữ nguyên như vậy."
  • Thêm trọng số mới. LoRA sau đó thêm một vài kết nối mới, đơn giản hơn (trọng số mới) vào mạng lưới này.
  • Chỉ huấn luyện các trọng số mới. Thay vì điều chỉnh toàn bộ mạng lưới phức tạp, bạn chỉ tập trung cải thiện những kết nối mới, đơn giản này.

Bằng cách này, bạn tiết kiệm thời gian và bộ nhớ máy tính mà vẫn giúp mô hình thực hiện nhiệm vụ tốt hơn.

Ưu điểm của LoRA

Các ưu điểm của LoRA bao gồm:

  • Tính di động - Ma trận trọng số phân rã hạng có số lượng tham số cần huấn luyện ít hơn nhiều so với mô hình gốc; vì vậy, trọng số LoRA đã huấn luyện rất dễ mang theo và có thể chạy trên Raspberry Pi.
  • Tính tiếp cận – So với tinh chỉnh thông thường, LoRA đã được chứng minh là giảm đáng kể mức sử dụng bộ nhớ GPU; điều này giúp có thể thực hiện tinh chỉnh trên các GPU phổ thông như Tesla T4, RTX 3080, hoặc thậm chí RTX 2080 Ti.

Alpaca: Mô hình nguồn mở

Alpaca, ở chiều ngược lại, là một mô hình ngôn ngữ AI nguồn mở được tinh chỉnh theo chỉ dẫn, dựa trên Large Language Model Meta AI (LLaMA). Nó được phát triển bởi một nhóm nghiên cứu tại Đại học Stanford với mục tiêu giúp các mô hình ngôn ngữ lớn (LLM) trở nên dễ tiếp cận hơn.

Và điều này đưa chúng ta đến với Alpaca-LoRA.

Mô hình Alpaca-LoRA là phiên bản tiêu tốn ít tài nguyên hơn của mô hình Stanford Alpaca, tận dụng LoRA để tăng tốc quá trình huấn luyện trong khi dùng ít bộ nhớ hơn.

Điều kiện tiên quyết để chạy Alpaca-LoRA

Để chạy mô hình Alpaca-LoRA cục bộ, bạn phải có GPU. Có thể là GPU cấu hình thấp như NVIDIA T4 hoặc GPU phổ thông như 4090. Theo Eric J. Wang, người tạo ra dự án, mô hình này “chạy trong vòng vài giờ trên một chiếc RTX 4090.”

Lưu ý: các hướng dẫn trong bài viết này tuân theo những gì được cung cấp trong kho lưu trữ Alpaca-LoRA của Eric J. Wang.

Cách chạy Alpaca-LoRA trong 4 bước

Bước 1: Tạo môi trường ảo (Tùy chọn)

Môi trường ảo là các vùng chứa tách biệt dùng để lưu trữ các phụ thuộc liên quan đến Python cần thiết cho một dự án cụ thể. Điều này giúp giữ các phụ thuộc của những dự án khác nhau tách biệt, từ đó dễ dàng chia sẻ dự án và giảm xung đột phụ thuộc.

Không bắt buộc phải dùng môi trường ảo để chạy mô hình Alpaca-LoRA, nhưng được khuyến nghị.

Để tạo môi trường ảo bằng Command Prompt trên hệ điều hành Windows, chạy lệnh sau:

py -m venv venv

Lệnh này sẽ tạo một môi trường ảo tên là venv trong thư mục làm việc hiện tại của bạn.

Lưu ý: bạn có thể dùng bất kỳ tên nào cho môi trường ảo bằng cách thay thế venv thứ hai bằng tên bạn muốn.

Trước khi cài đặt bất kỳ phụ thuộc nào, bạn phải kích hoạt môi trường ảo. Chạy lệnh sau để kích hoạt môi trường ảo của bạn:

venv\Scripts\activate.bat

Khi không còn sử dụng môi trường ảo, chạy lệnh sau để hủy kích hoạt:

deactivate

Giờ thì bạn đã sẵn sàng bắt tay vào chạy Alpaca-LoRA.

Bước 2: Thiết lập

Bước đầu tiên để chạy mô hình Alpaca-LoRA là nhân bản kho lưu trữ từ GitHub và cài đặt các phụ thuộc cần thiết để thực thi.

Dùng lệnh sau để tải kho GitHub:

git clone https://github.com/tloen/alpaca-lora.git

Sau đó điều hướng đến kho alpaca-lora bạn vừa tải bằng:

cd alpaca-lora

Và chạy lệnh sau để cài đặt các phụ thuộc:

pip install -r requirements.txt

Bước 3: Tinh chỉnh mô hình (Tùy chọn)

Kho alpaca-lora chứa một tệp tên finetune.py. finetune.py bao gồm một ứng dụng đơn giản của Parameter-Efficient Fine-Tuning (PEFT) áp dụng cho mô hình LLaMA, cùng các nội dung khác.

Đây là tệp bạn cần thực thi nếu muốn tinh chỉnh siêu tham số của mô hình, nhưng không bắt buộc. Theo tác giả của kho, “Không cần tinh chỉnh siêu tham số, mô hình LoRA đã cho ra kết quả tương đương mô hình Stanford Alpaca. Tinh chỉnh thêm có thể đạt hiệu năng tốt hơn [...].”

Dưới đây là ví dụ về cách dùng tệp finetune.py:

python -m finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca' \
    --batch_size 128 \
    --micro_batch_size 4 \
    --num_epochs 3 \
    --learning_rate 1e-4 \
    --cutoff_len 512 \
    --val_set_size 2000 \
    --lora_r 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --lora_target_modules '[q_proj,v_proj]' \
    --train_on_inputs \
    --group_by_length

Bước 4: Chạy mô hình / Suy luận

Cũng trong kho alpaca-lora có một tệp tên generate.py. Thực thi generate.py sẽ thực hiện các việc sau:

  • Đọc mô hình nền tảng từ kho mô hình của Hugging Face
  • Đọc trọng số mô hình từ tloen/alpaca-lora-7b
  • Khởi động giao diện Gradio nơi việc suy luận được thực hiện trên đầu vào chỉ định.

Tại thời điểm viết bài, bộ chuyển thích nghi Alpaca-LoRA mới nhất dùng để huấn luyện mô hình là alpaca-lora-7b. Việc này được thực hiện vào ngày 26 tháng 3 năm 2023 với lệnh sau:

python finetune.py \
    --base_model='decapoda-research/llama-7b-hf' \
    --num_epochs=10 \
    --cutoff_len=512 \
    --group_by_length \
    --output_dir='./lora-alpaca' \
    --lora_target_modules='[q_proj,k_proj,v_proj,o_proj]' \
    --lora_r=16 \
    --micro_batch_size=8

Nếu bạn muốn dùng một bộ chuyển thích nghi khác, bạn có thể làm vậy bằng cách chạy tệp generate.py với liên kết đến vị trí của bộ chuyển bạn chọn.

python generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

Tổng kết

Alpaca-LoRA là phiên bản tiêu tốn ít tài nguyên hơn của mô hình Stanford Alpaca. Nó đạt được mục tiêu này bằng cách tận dụng phương pháp thích nghi hạng thấp cho các mô hình ngôn ngữ lớn (LoRA), giúp tăng tốc quá trình huấn luyện trong khi dùng ít bộ nhớ hơn đáng kể so với mô hình Alpaca gốc.

Tìm hiểu thêm về các mô hình ngôn ngữ lớn (LLM) và AI tạo sinh qua các hướng dẫn sau:

Kurtis Pykes

Tác giả

Kurtis Pykes

Chủ đề

Liên quan