AI trên máy · đọc 8 phút

Làm sao một mô hình ngôn ngữ vừa với điện thoại

Các ứng dụng AI cục bộ đòi một lượng dung lượng đáng ngạc nhiên, và lý do không phải là phình to vô ích. Hiểu những gigabyte ấy đi đâu cũng giải thích vì sao mô hình nhanh trên điện thoại mới và ì ạch trên máy cũ — và cái tên tệp Q3_K_S thật ra đang nói gì với bạn.

Một mô hình là một đống số khổng lồ

Mô hình ngôn ngữ là một tập tham số đã học — các trọng số. Mỗi trọng số là một con số, và có hàng tỉ con số như vậy. Chữ “2B” trong tên một mô hình nghĩa là khoảng hai tỉ tham số.

Lưu ở độ chính xác đầy đủ, mỗi trọng số chiếm 4 byte. Hai tỉ trọng số, mỗi cái 4 byte, là khoảng 8 GB, và đó là cho một trong những mô hình nhỏ hơn . Vấn đề gói gọn trong một dòng: tệp lớn vì các con số thì nhiều và mỗi con số được lưu một cách chính xác.

Lượng tử hoá: ít bit hơn cho mỗi con số

Lượng tử hoá lưu mỗi trọng số bằng ít bit hơn. Thay vì 32 bit mỗi trọng số, bạn dùng 8, hoặc 4, hoặc 3 — kèm hệ số tỉ lệ cho từng khối trọng số để phép xấp xỉ vẫn bám sát bản gốc.

Mức giảm kích thước gần như tuyến tính:

Đây là nén có mất mát, như ảnh JPEG. Đẩy đủ xa thì bạn thấy các vết nhiễu — ở một mô hình ngôn ngữ, chúng hiện ra thành câu trả lời mơ hồ, lặp lại, hoặc trôi khỏi câu hỏi.

Lượng tử hoá không làm mô hình ngu đi một cách đồng đều. Nó làm mô hình kém chính xác hơn, và sự thiếu chính xác lộ ra trước tiên ở những đầu vào khó nhất.

Đọc tên tệp

Một cái tên như Q4_K_M hay Q3_K_S là một công thức, không phải số phiên bản:

Vậy Q3_K_S là một k-quant 3 bit cỡ nhỏ: nén rất mạnh, được chọn khi việc vừa với thiết bị quan trọng hơn vài phần trăm chất lượng cuối cùng.

GGUF: cái vỏ chứa

GGUF là định dạng tệp chứa các trọng số đã lượng tử hoá cùng phần siêu dữ liệu mà môi trường chạy cần — bộ tách token, kiến trúc, mẫu câu lệnh. Một tệp duy nhất, không kèm cả thư mục cấu hình.

Nó quan trọng với điện thoại vì GGUF được thiết kế để ánh xạ vào bộ nhớ. Thay vì đọc 1,7 GB vào RAM, môi trường chạy ánh xạ tệp vào không gian địa chỉ của nó và hệ điều hành nạp dần những phần thật sự đang dùng. Vì thế một mô hình lớn hơn RAM trống của máy vẫn chạy được, và vì thế câu trả lời đầu tiên sau khi mở ứng dụng chậm hơn những câu sau — các trang vẫn đang được nạp.

Vì sao nó làm nóng máy

Sinh ra một từ — một token — nghĩa là đẩy đầu vào qua hàng tỉ tham số ấy. Rồi lại làm thế cho token kế tiếp. Một câu trả lời trăm từ là một trăm lượt.

Đó là phép tính liên tục trên CPU hay bộ tăng tốc thần kinh, đúng là loại tải mà điện thoại kém nhất về mặt nhiệt. Máy sẽ giảm xung khi nóng, nên một lượt sinh dài không ngắt sẽ chậm dần khi chạy. Ứng dụng cục bộ làm tốt sẽ giãn nhịp công việc — tách các tác vụ ra để con chip nguội bớt — thay vì xếp mọi thứ sát nhau.

Vì sao điện thoại cũ chật vật

Ba ràng buộc, và đều khó:

Đó là lý do các ứng dụng AI cục bộ nêu một thiết bị tối thiểu thay vì cố hỗ trợ mọi thứ. Dưới một ngưỡng nhất định, trải nghiệm không phải là kém đi, mà là không dùng được.

Cuộc đánh đổi bạn đang chấp nhận

Một mô hình lượng tử hoá cỡ điện thoại sẽ không sánh được với mô hình đám mây lớn ở những suy luận khó. Với một tác vụ có giới hạn — từ này nghĩa là gì trong câu này, dịch cụm này — nó hoàn toàn đủ, và nó đi kèm ba tính chất mà mô hình đám mây không thể có: chạy được khi không có kết nối, không tốn gì cho mỗi lần dùng, và văn bản không bao giờ rời khỏi máy.

Đó là toàn bộ cuộc mặc cả của AI trên máy. Bạn từ bỏ mô hình lớn nhất có thể, và bạn nhận lại quyền riêng tư, khả năng ngoại tuyến và không bị tính lượt.

ClickBook làm điều đó thế nào

ClickBook đóng gói một mô hình GGUF đã lượng tử hoá và chạy nó qua llama.cpp ngay trên máy bạn. Trên iOS, mô hình nằm sẵn trong ứng dụng nên không phải tải gì. Đọc thêm về trình đọc sách điện tử có AI cục bộ, hoặc xem ClickBook hoạt động thế nào.