17 điểm bởi GN⁺ 2024-03-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Mã nguồn mở kết hợp FSDP(Fully Sharded Data Parallel) và QLoRA(Quantization + Low-Rank Adaptation")
  • Có thể tinh chỉnh hiệu quả mô hình ngôn ngữ cỡ 70b chỉ với một máy tính desktop thông thường và hai GPU gaming tiêu chuẩn

Bối cảnh

  • Phần cứng cấp độ trung tâm dữ liệu và GPU gaming gắn trong máy tính desktop không khác biệt quá lớn về hiệu năng, nhưng chênh lệch giá lại rất lớn
  • GPU gaming có ít bộ nhớ nên khó huấn luyện các mô hình ngôn ngữ lớn
  • Answer.AI muốn giải quyết vấn đề này bằng cách tìm ra phương pháp huấn luyện các mô hình mã nguồn mở hàng đầu bằng GPU gaming giá rẻ

QLoRA: huấn luyện mô hình lớn hơn trên một GPU đơn

  • QLoRA là sự kết hợp giữa lượng tử hóa và LoRA, giúp giảm trọng số của mô hình xuống 4-bit để giảm mức sử dụng bộ nhớ GPU.
  • LoRA tránh được ràng buộc bộ nhớ bằng cách không huấn luyện toàn bộ mô hình ngôn ngữ lớn, mà thêm các ma trận adapter nhỏ để huấn luyện.
  • QLoRA cho phép huấn luyện mô hình 65b trên card 48GB, nhưng vẫn chưa đủ để huấn luyện mô hình 70b trên GPU gaming 24GB.

FSDP: mở rộng quy mô huấn luyện với nhiều GPU

  • FSDP(Fully Sharded Data Parallel) phân tán các tham số của mô hình lên nhiều GPU để có thể sử dụng đồng thời.
  • FSDP cho phép áp dụng hiệu năng của DDP(Distributed Data Parallel) cho các mô hình lớn mà một GPU đơn lẻ không thể chứa nổi.
  • Ví dụ, mô hình 70b (70 tỷ tham số) chưa lượng tử hóa sử dụng 140GB RAM (vì mỗi tham số được lưu ở 16-bit, tức 2 byte), nên ngay cả card NVIDIA H100 (chi phí khoảng $40,000 mỗi card!) cũng không đủ. Cần 80GB RAM
    • Nhưng với FSDP, có thể kết hợp 4 GPU H100 để tạo thành tổng cộng 320GB RAM. Và tiết kiệm được $150000

Kết hợp FSDP và QLoRA

  • Answer.AI giảm kích thước mô hình bằng QLoRA, rồi phân tán nó qua nhiều card gaming 24GB bằng FSDP để cho phép huấn luyện hiệu quả.
  • Nhờ đó có thể huấn luyện mô hình 70b bằng hai GPU gaming thông thường.
  • Sau khi thảo luận ý tưởng kết hợp FSDP và QLoRA vào cuối năm 2023, họ đã giải quyết các vấn đề cần thiết.
  • Trong quá trình này, nhiều kỹ thuật và thư viện khác nhau đã được kết hợp để sử dụng
    • Lưu các tham số đã lượng tử hóa bằng cùng kiểu dữ liệu với "Computation Type" của mô hình
    • Gradient checkpointing: thay vì lưu toàn bộ gradient, lưu activation tại nhiều 'checkpoint' trên toàn bộ mô hình, rồi chạy lại bước tính forward khi cần để tính lại gradient
    • CPU offloading: lưu trọng số vào RAM CPU thay vì GPU khi không sử dụng, giúp giảm mạnh lượng bộ nhớ GPU cần thiết
    • Flash Attention 2: tính toán Attention hiệu quả bằng các kernel Cuda tối ưu bộ nhớ
    • Phát hiện HQQ(Half-Quadratic Quantization) và tích hợp với FSDP (nhanh hơn GPTQ 50 lần và chính xác hơn)

Cách sử dụng FSDP/QLoRA

  • Để dùng FSDP cần có từ hai GPU trở lên. (Trên Runpod có thể dùng máy dual 3090 với giá $0.6/giờ)
  • Cài phiên bản mới nhất của Transformers, PEFT, Bitsandbytes (và HQQ nếu dùng), clone kho lưu trữ của Answer.AI, rồi chạy theo README.
  • Để huấn luyện Alpaca trên 2 card 24GB
    python train.py --train_type qlora --dataset alpaca --batch_size 8 --gradient_accumulation_steps 2 --output_dir qlora_output --log_to wandb
  • Hiện vẫn đang ở giai đoạn đầu (alpha/preview)
  • Dự kiến sẽ công bố kết quả benchmark trong vài tuần tới

Ý kiến của GN⁺

  • Bài viết này sẽ rất thú vị với những người làm trong lĩnh vực AI và machine learning. Đặc biệt, nó đáng chú ý vì đưa ra một cách mới để huấn luyện hiệu quả các mô hình ngôn ngữ lớn.
  • Nếu công nghệ này được sử dụng rộng rãi thành công, nó có thể hạ thấp đáng kể rào cản chi phí trong nghiên cứu và phát triển AI. Đây cũng có thể là cơ hội lớn cho các phòng lab nhỏ hoặc các nhà phát triển cá nhân.
  • Tuy nhiên, để cách tiếp cận này thực sự được chấp nhận rộng rãi, tính ổn định và mức độ dễ sử dụng sẽ là các yếu tố quan trọng. Vì hiện vẫn còn ở giai đoạn đầu, hệ thống cần được cải thiện thông qua việc cộng đồng thử nghiệm và phản hồi.
  • Khi áp dụng công nghệ mới, luôn cần cân nhắc khả năng tương thích với hệ thống hiện có, hiệu năng và chi phí. Lợi ích của việc chọn công nghệ này là cải thiện khả năng tiếp cận huấn luyện mô hình lớn, nhưng vì vẫn đang ở giai đoạn đầu nên có thể có nhược điểm về độ ổn định và hỗ trợ.

1 bình luận

 
GN⁺ 2024-03-08
Ý kiến trên Hacker News
  • Bài viết này rất hay, nhưng thật tiếc là đã có nhiều cơ hội dùng từ 'nibble' mà đều bỏ lỡ.

    • Bày tỏ sự tiếc nuối rằng dù bài viết thú vị nhưng lại không tận dụng từ "nibble".
  • Với một hệ thống dùng trọng số 4-bit, tôi nghĩ với tư cách người dùng sẽ rất quan tâm nếu có một bảng cho biết việc fine-tune mô hình 70b sẽ mất bao lâu, chẳng hạn kích thước mô hình, quy mô huấn luyện, chi phí huấn luyện và mức suy giảm chất lượng dự kiến của kỹ thuật này.

    • Thể hiện sự quan tâm đến chi phí cuối cùng của việc fine-tune và yêu cầu thông tin chi tiết gồm kích thước mô hình, chi phí huấn luyện, v.v.
  • Tôi tự hỏi liệu có thể áp dụng mã hóa (-1,0,1) hay không. Khi mô hình đó xuất hiện, tôi muốn biết liệu answer.ai có thể dùng cùng kỹ thuật để fine-tune mô hình lớn chỉ với hai GPU nhỏ không, và cũng muốn xem phân tích chi phí/lợi ích.

    • Đặt câu hỏi về khả năng áp dụng kỹ thuật mã hóa mới và phân tích hiệu quả so với chi phí.
  • Những nghiên cứu như thế này rất hữu ích vì giúp người dùng cá nhân có thể cạnh tranh trong thị trường LLM. Đây là một công trình tuyệt vời, rất phù hợp với tinh thần của cuốn 'Zero to One'.

    • Đánh giá tích cực rằng nghiên cứu này hữu ích cho người dùng cá nhân và góp phần giải quyết một vấn đề cụ thể.
  • Bài viết không nhắc tới việc tất cả các đội xếp hạng cao tại thử thách hiệu quả của NeurIPS đều dùng QLoRA, đây là một ví dụ rất tốt cho thấy tầm quan trọng và tính hữu dụng của QLoRA.

    • Nhấn mạnh tầm quan trọng và tính hữu dụng của QLoRA, đồng thời nhắc rằng kỹ thuật này đã được công nhận trong cuộc thi.
  • Đây là cách tiếp cận thú vị và mang tính xây dựng nhất tôi từng thấy trong các LLM 'mã nguồn mở'. Tôi hy vọng giới học thuật cũng sẽ lấy đây làm tiêu chuẩn.

    • Đánh giá cao cách tiếp cận đối với LLM mã nguồn mở và mong giới học thuật cũng áp dụng nó làm chuẩn.
  • Tôi ước gì khả năng huấn luyện nhanh trên Metal xuất hiện sớm hơn. Ở thời điểm hiện tại, Mac Studio rẻ hơn nhiều và đủ nhanh cho suy luận mô hình lớn, nhưng hầu như không có giải pháp huấn luyện nào.

    • Nêu kỳ vọng về huấn luyện nhanh trên nền tảng Metal và nhận xét về hiệu quả hiện tại của Mac Studio.
  • Chất lượng và độ rõ ràng của phần viết kỹ thuật thật xuất sắc.

    • Khen ngợi chất lượng và sự rõ ràng của tài liệu kỹ thuật.
  • Tôi tự hỏi liệu có thể huấn luyện lại trọng số LLM (70B) bằng dữ liệu riêng của mình hay không.

    • Hỏi về khả năng huấn luyện lại LLM bằng dữ liệu cá nhân.
  • Đây là một bước đột phá lớn cho những ai muốn fine-tune LLM với ngân sách phần cứng hạn chế.

    • Đánh giá rằng kỹ thuật này là một tiến bộ lớn với người dùng có ngân sách phần cứng giới hạn.
  • Tôi muốn biết vì sao lại chọn DeepSpeed thay vì FSDP.

    • Bày tỏ thắc mắc về lý do lựa chọn giữa FSDP và DeepSpeed.
  • Tôi muốn biết khi đã có thể fine-tune mô hình, liệu có công cụ nào được dùng để tinh chỉnh hiệu năng hay không.

    • Hỏi về các công cụ được sử dụng cho việc tinh chỉnh hiệu năng.
  • Tôi tự hỏi liệu các bạn đã thử dùng sparsification chưa; có cảm giác rằng cách đó có thể giúp fine-tune với ít RAM hơn.

    • Đưa ra ý kiến về việc dùng kỹ thuật sparsification và khả năng giảm nhu cầu RAM nhờ đó.