Mặc dù "L" trong các Mô hình ngôn ngữ lớn (LLM) cho thấy quy mô lớn, nhưng thực tế còn phức tạp hơn. Một số LLM chứa hàng nghìn tỷ tham số và những LLM khác hoạt động hiệu quả với số lượng tham số ít hơn rất nhiều.
Hãy xem một vài ví dụ thực tế và ý nghĩa thực tế của các kích thước mô hình khác nhau.
Quy mô LLM và lớp kích thước
Là nhà phát triển web, chúng ta có xu hướng coi kích thước của tài nguyên là kích thước tải xuống. Thay vào đó, kích thước được ghi nhận của mô hình đề cập đến số lượng tham số của mô hình đó. Ví dụ: Gemma 2B biểu thị Gemma với 2 tỷ tham số.
Các LLM có thể có hàng trăm nghìn, hàng triệu, hàng tỷ hoặc thậm chí hàng nghìn tỷ tham số.
Các LLM lớn hơn có nhiều tham số hơn các LLM nhỏ hơn, cho phép các LLM nắm bắt các mối quan hệ ngôn ngữ phức tạp hơn và xử lý các câu lệnh chi tiết. Họ cũng thường được huấn luyện trên các tập dữ liệu lớn hơn.
Bạn có thể đã nhận thấy rằng một số kích thước mô hình nhất định, chẳng hạn như 2 tỷ hoặc 7 tỷ, là phổ biến. Ví dụ: Gemma 2B, Gemma 7B hoặc Mistral 7B. Các lớp kích thước mô hình là nhóm ước chừng. Ví dụ: Gemma 2B có khoảng 2 tỷ tham số, nhưng không chính xác.
Các lớp kích thước mô hình là một phương pháp thiết thực để đo lường hiệu suất của mô hình ngôn ngữ lớn (LLM). Hãy xem chúng giống như các lớp cân nặng trong môn quyền anh: các mô hình trong cùng một lớp kích thước sẽ tương tự nhau hơn. Hai mô hình 2B có hiệu suất tương đương nhau.
Tuy nhiên, mô hình nhỏ hơn có thể có cùng hiệu suất như mô hình lớn hơn cho các tác vụ cụ thể.
Mặc dù kích thước mô hình của các LLM tiên tiến nhất mới nhất, chẳng hạn như GPT-4 và Gemini Pro hoặc Ultra, không phải lúc nào cũng được tiết lộ, nhưng các mô hình này được tin là nằm trong hàng trăm tỷ hoặc hàng nghìn tỷ thông số.
Không phải tất cả mô hình đều cho biết số lượng thông số trong tên. Một số kiểu máy đã bị lỗi với số phiên bản. Ví dụ: Gemini 1.5 Pro đề cập đến phiên bản 1.5 của mô hình (sau phiên bản 1).
LLM hay không?
Khi nào một mô hình quá nhỏ để trở thành một mô hình ngôn ngữ lớn? Định nghĩa về LLM có thể thay đổi đôi chút trong cộng đồng trí tuệ nhân tạo và học máy.
Một số mô hình chỉ xem các mô hình lớn nhất có hàng tỷ tham số là LLM thực, trong khi các mô hình nhỏ hơn, chẳng hạn như DistilBERT, được coi là các mô hình NLP đơn giản. Một số mô hình khác bao gồm các mô hình nhỏ hơn nhưng vẫn mạnh mẽ theo định nghĩa về LLL, chẳng hạn như DistilBERT.
Các LLM nhỏ hơn cho các trường hợp sử dụng trên thiết bị
Các LLM lớn hơn cần nhiều không gian lưu trữ và công suất tính toán để dự đoán. Các trình xử lý này cần chạy trên các máy chủ mạnh mẽ chuyên dụng có phần cứng cụ thể (chẳng hạn như TPU).
Với tư cách là nhà phát triển web, chúng tôi quan tâm đến liệu một mô hình có đủ nhỏ để tải xuống và chạy trên thiết bị của người dùng hay không.
Tuy nhiên, đó là một câu hỏi khó trả lời! Hiện nay, bạn không thể dễ dàng biết được "mẫu này có thể chạy trên hầu hết các thiết bị tầm trung" vì một số lý do:
- Khả năng của thiết bị có sự khác biệt lớn về bộ nhớ, thông số GPU/CPU, v.v. Một chiếc điện thoại Android cấp thấp và máy tính xách tay NVIDIA® RTX có sự khác biệt hoàn toàn. Có thể bạn có một số điểm dữ liệu về những thiết bị mà người dùng của bạn sở hữu. Chúng tôi chưa có định nghĩa cho thiết bị cơ sở dùng để truy cập vào web.
- Một mô hình hoặc khung mà mô hình đó chạy có thể được tối ưu hoá để chạy trên một số phần cứng nhất định.
- Không có phương pháp lập trình nào để xác định xem một LLM cụ thể có thể được tải xuống và chạy trên một thiết bị cụ thể hay không. Khả năng tải xuống của thiết bị phụ thuộc vào lượng VRAM trên GPU, ngoài các yếu tố khác.
Tuy nhiên, chúng tôi có một số kiến thức thực nghiệm: hiện nay, một số mô hình có từ vài triệu đến vài tỷ tham số có thể chạy trong trình duyệt, trên các thiết bị cấp người tiêu dùng.
Ví dụ:
- Gemma 2B với API suy luận LLM MediaPipe (ngay cả khi phù hợp với các thiết bị chỉ dùng CPU). Thử nào.
- DistilBERT với Transformers.js.
Đây là trường mới. Bối cảnh có thể sẽ phát triển:
- Với những điểm cải tiến trên WebAssembly và WebGPU, WebGPU hỗ trợ truy cập vào nhiều thư viện, thư viện mới và tính năng tối ưu hoá hơn, với kỳ vọng thiết bị của người dùng sẽ ngày càng có thể chạy hiệu quả các mô hình ngôn ngữ lớn (LLM) ở nhiều kích thước.
- Dự kiến các LLM nhỏ hơn, có hiệu suất cao sẽ ngày càng trở nên phổ biến, thông qua các kỹ thuật rút gọn mới xuất hiện.
Những điểm cần lưu ý đối với các mô hình ngôn ngữ lớn (LLM) nhỏ
Khi làm việc với các LLM nhỏ hơn, bạn phải luôn cân nhắc hiệu suất và kích thước tải xuống.
Hiệu suất
Khả năng của mọi mô hình phụ thuộc rất nhiều vào trường hợp sử dụng của bạn! Một LLM nhỏ hơn được tinh chỉnh cho phù hợp với trường hợp sử dụng của bạn có thể hoạt động tốt hơn một LLM chung lớn hơn.
Tuy nhiên, trong cùng một bộ mô hình, các LLM nhỏ hơn có khả năng kém hơn các LLM lớn hơn. Đối với cùng một trường hợp sử dụng, thông thường, bạn cần thực hiện nhiều công việc kỹ thuật nhắc hơn khi sử dụng một LLM nhỏ hơn.
Kích thước tải xuống
Càng có nhiều tham số thì kích thước tải xuống càng lớn. Điều này cũng ảnh hưởng đến việc một mô hình (ngay cả khi được coi là nhỏ) có thể được tải xuống một cách hợp lý cho các trường hợp sử dụng trên thiết bị hay không.
Mặc dù có kỹ thuật để tính toán kích thước tải xuống của mô hình dựa trên số lượng tham số, nhưng việc này có thể phức tạp.
Kể từ đầu năm 2024, hiếm khi kích thước tải xuống của mô hình được ghi nhận. Vì vậy, đối với các trường hợp sử dụng trên thiết bị và trong trình duyệt, bạn nên xem xét kích thước tải xuống theo thực nghiệm, trong bảng điều khiển Mạng của Công cụ của Chrome cho nhà phát triển hoặc với các công cụ khác dành cho nhà phát triển trên trình duyệt.
Gemma được dùng với API Suy luận LLM MediaPipe. DistilBERT được dùng với Transformers.js.
Kỹ thuật rút gọn mô hình
Có nhiều kỹ thuật giúp giảm đáng kể yêu cầu về bộ nhớ của một mô hình:
- LoRA (Điều chỉnh theo thứ hạng thấp): Kỹ thuật tinh chỉnh trong đó các trọng số được huấn luyện trước bị đóng băng. Đọc thêm về LoRA.
- Cắt bỏ: Xoá trọng số ít quan trọng hơn khỏi mô hình để giảm kích thước của mô hình.
- Quant hoá: Giảm độ chính xác của trọng số từ số dấu phẩy động (chẳng hạn như 32 bit) xuống biểu diễn bit thấp hơn (chẳng hạn như 8 bit).
- Tinh lọc kiến thức: Huấn luyện một mô hình nhỏ hơn để bắt chước hành vi của một mô hình lớn hơn và được huấn luyện trước.
- Chia sẻ tham số: Sử dụng cùng một trọng số cho nhiều phần của mô hình, giảm tổng số tham số riêng biệt.