18 điểm bởi GN⁺ 2023-08-16 | 3 bình luận | Chia sẻ qua WhatsApp
  • Nhờ LLaMA.cpp, phiên bản viết lại mã suy luận LLaMA bằng C++ thuần, có thể chạy trên nhiều phần cứng khác nhau như Pixel 5, MacBook Pro M2, Raspberry Pi, v.v.
  • Các mô hình lớn thường cần GPU đắt tiền, vậy điều này có thể xảy ra như thế nào?
  • GPU có lợi thế cho học sâu nhờ băng thông bộ nhớ lớn và năng lực tính toán mạnh, nhưng băng thông bộ nhớ thường lại là nút thắt cổ chai của suy luận
    • Vì để tính toán thực tế, dữ liệu phải được chuyển từ bộ nhớ HBM (RAM) sang bộ nhớ trên chip
  • Quantization (lượng tử hóa) rất quan trọng đối với mức sử dụng RAM cho trọng số LLaMA
    • Giảm độ chính xác có thể làm giảm mạnh lượng bộ nhớ cần thiết để lưu mô hình
    • Thông qua lượng tử hóa, có thể giảm lượng bộ nhớ cần để lưu mô hình, giúp nó vừa với bộ nhớ của GPU trung tâm dữ liệu tiêu chuẩn và GPU tiêu dùng cao cấp
  • Băng thông bộ nhớ là yếu tố giới hạn trong gần như mọi tác vụ liên quan đến sampling của transformer
  • Khi giảm yêu cầu bộ nhớ bằng các phương pháp như lượng tử hóa, việc phục vụ mô hình sẽ trở nên dễ dàng hơn nhiều
  • Đây cũng là một lý do khác cho distillation hoặc việc "huấn luyện các mô hình nhỏ hơn trong thời gian dài hơn"

3 bình luận

 
breezymind 2023-08-17

Tôi đã thử kiểm tra embedding bằng cách tải llama2 bằng LlamaCpp trên máy cục bộ.

https://breezymind.com/llamacpp-embedding

 
xguru 2023-08-17

Bình luận đầu tiên trên HN khá hữu ích

"Xin nói với những ai đang thắc mắc rằng, khi lượng tử hóa mô hình thì sẽ có cái giá phải trả.
https://oobabooga.github.io/blog/posts/perplexities/

Về cơ bản, độ chính xác sẽ giảm đi một chút và có thể xuất hiện các câu trả lời kỳ lạ; mô hình cũng dễ trả lời lệch kỳ vọng hoặc bị ảo giác hơn. Tuy nhiên, số lượng tham số càng lớn thì mức suy giảm chất lượng càng ít. Vì vậy, nếu kích thước mô hình rất lớn thì khác biệt đó gần như có thể bỏ qua. Ngoài ra, đây chỉ là chi phí cho suy luận. Huấn luyện là một vấn đề hoàn toàn khác và đòi hỏi sức mạnh tính toán lớn hơn rất nhiều.

Dù vậy, chúng ta đang thấy hiệu năng ở mức GPT-3 trên một rack máy chủ duy nhất. Đây là một thành tựu đáng kinh ngạc nếu nghĩ rằng chỉ cách đây 1 năm, kiểu AI này đúng là giống như phép màu và chỉ có thể chạy trong các trung tâm dữ liệu quy mô lớn. Theo suy nghĩ khá ngây ngô của tôi, băng thông và dung lượng bộ nhớ có lẽ dễ mở rộng hơn năng lực tính toán thô, nên biết đâu chẳng bao lâu nữa chúng ta sẽ thực sự có những thiết bị "thông minh"."

 
GN⁺ 2023-08-16
Ý kiến trên Hacker News
  • Bài viết nói về chi phí của việc lượng tử hóa mô hình, mức suy giảm độ chính xác và khả năng xuất hiện phản hồi bất thường do đó gây ra. Tuy nhiên, mô hình càng có nhiều tham số thì tổn thất này càng ít quan trọng.
  • Một bài viết nhấn mạnh hiệu năng vượt trội của GPT3, hiện đã có thể chạy trên một rack máy chủ đơn lẻ, đây là cải tiến lớn so với AI từng cần đến trung tâm dữ liệu quy mô lớn vào năm ngoái.
  • Có ý kiến chỉ ra rằng việc sinh token là tuần tự và bị giới hạn bởi băng thông, nhưng chèn prompt thì không như vậy và có thể chạy với batch từ 512+.
  • Llama.cpp hiện có lượng tử hóa khoảng ~4 bit mà không ảnh hưởng nhiều đến độ phức tạp. Q6_K có độ phức tạp gần như tương đương FP16 nhưng nhỏ hơn rất nhiều.
  • Phép màu thực sự của Llama.cpp là chia tách mô hình, cho phép GPU rời cỡ nhỏ offload hoàn toàn việc chèn prompt và một phần suy luận mô hình. Điều này là độc đáo trong lĩnh vực AI tạo sinh.
  • Các backend GPU (OpenCL, Metal, CUDA, sắp tới là ROCm và Vulkan) là cách được ưu tiên để chạy Llama.cpp. Nếu không có chúng, việc chạy 70B trên desktop hoặc 33B trên laptop có 16GB RAM là bất khả thi.
  • Dự án được khen ngợi nhờ khả năng dễ dàng mở rộng với Go, Python và các runtime khác. Người ta đã dùng nó để kéo về và chạy nhiều mô hình bằng Go, đồng thời tạo ra các công cụ phục vụ qua REST API.
  • Chạy suy luận trên CPU hiện đại có AVX2 thì chậm hơn GPU, nhưng có lợi thế là có thể dùng một vùng RAM liên tục dài duy nhất. Tuy nhiên, việc lượng tử hóa xuống 4 bit mà lại không có tùy chọn chạy suy luận với định dạng khác ngoài fp32 trên CPU x86_64 là một nhược điểm lớn.
  • Bài viết nhắc đến việc tái tạo thành công bộ dữ liệu 13B trên một chiếc Pi4 8GB duy nhất và bộ dữ liệu 65B trên ba node pi4, cho thấy tính dễ tiếp cận của kỹ thuật này.
  • Bài viết bị phê bình vì dùng đơn vị khá cẩu thả khi bàn về các con số độ trễ.
  • Bài viết đặt câu hỏi vì sao các nhà sản xuất chip lại tích hợp nhiều đơn vị chức năng vào chip đến vậy khi phần lớn workload lại bị giới hạn bởi bộ nhớ.
  • Bài viết được khen vì có nội dung độc đáo mà thường khó tìm thấy bên ngoài Hacker News.
  • Văn bản bàn về giới hạn của việc sinh token bị ràng buộc bởi bộ nhớ trong transformer decoder, đồng thời kỳ vọng vào các mô hình thân thiện hơn với phần cứng trong tương lai.
  • Bài viết đặt câu hỏi vì sao phần cứng chuyên dụng lại được thiết kế theo cách đó khi xét đến nút thắt băng thông bộ nhớ rất quan trọng, và liệu sự thay đổi trong mô hình phần mềm có thể làm thay đổi sự cân bằng này hay không.