Inference là giai đoạn chạy một mô hình AI đã huấn luyện xong để nó cho ra kết quả với dữ liệu mới, ví dụ trả lời câu hỏi bạn vừa gõ. Đối lập với nó là huấn luyện (training), giai đoạn tạo ra mô hình bằng cách cho nó học từ dữ liệu. Huấn luyện làm một lần, rất lớn và rất tốn; inference diễn ra mỗi lần có người dùng, từng lượt thì nhỏ nhưng cộng lại khổng lồ.
Tiếng Việt hay dịch inference là "suy luận", dễ lẫn với khả năng lập luận (reasoning) của mô hình; bài này giữ chữ inference hoặc nói "chạy mô hình" cho rõ. Hiểu hai giai đoạn này giúp bạn đọc đúng nhiều tin về chi phí AI, hiểu vì sao chatbot có lúc chậm, vì sao gói miễn phí có giới hạn lượt, và gỡ một hiểu lầm rất phổ biến: chatbot học từ từng câu bạn hỏi.
Hai giai đoạn trong đời một mô hình
Hãy nghĩ tới việc đào tạo một bác sĩ. Sáu năm đại học, thêm nhiều năm nội trú, hàng nghìn ca bệnh, tốn rất nhiều công sức và tiền bạc. Đó là giai đoạn huấn luyện. Sau đó, mỗi buổi khám bệnh là một lần người bác sĩ dùng những gì đã học để xử lý một ca mới. Đó là inference. Một buổi khám rẻ hơn rất nhiều so với sáu năm học, nhưng một bác sĩ khám hàng chục nghìn ca trong đời.
Với mô hình AI, giai đoạn huấn luyện là lúc các tham số được điều chỉnh liên tục. Mô hình đọc dữ liệu, đoán, so với đáp án, rồi các tham số được nhích dần cho đúng hơn. Việc này có thể kéo dài nhiều tuần, chạy trên hàng nghìn chip cùng lúc. Khi huấn luyện xong, bộ tham số được cố định lại, đóng gói và đưa vào phục vụ.
Từ đó trở đi là inference. Mỗi khi bạn gửi một câu hỏi, máy chủ nạp câu hỏi đó vào mô hình, chạy các phép tính qua bộ tham số đã cố định và cho ra câu trả lời. Không có tham số nào bị thay đổi trong quá trình này. Mô hình phục vụ bạn bằng đúng những gì nó đã học tới mốc kết thúc huấn luyện.
Trên thực tế, ranh giới không hoàn toàn đơn giản: một mô hình có thể được huấn luyện thêm nhiều đợt sau khi ra mắt, mỗi đợt tạo ra một phiên bản mới. Nhưng với mỗi phiên bản, hai giai đoạn vẫn tách bạch: học xong rồi mới phục vụ.
So sánh huấn luyện và inference
Bảng sau tóm tắt khác biệt giữa hai giai đoạn ở mức nguyên lý:
| Tiêu chí | Huấn luyện | Inference |
|---|---|---|
| Mục đích | tạo ra mô hình biết làm việc | dùng mô hình để làm việc |
| Tham số | thay đổi liên tục | cố định, chỉ được đọc |
| Diễn ra khi nào | trước khi phát hành, theo từng đợt | mỗi lần có người dùng gửi yêu cầu |
| Quy mô một lần | rất lớn, có thể nhiều tuần trên cả cụm máy | nhỏ, từ phần giây tới vài phút |
| Chi phí tăng theo | kích thước mô hình và lượng dữ liệu | số người dùng, độ dài câu hỏi và câu trả lời |
| Ai chịu chi phí | hãng phát triển mô hình | hãng vận hành dịch vụ, hoặc bạn nếu chạy trên máy riêng |
| Cần dữ liệu gì | kho dữ liệu huấn luyện | chỉ cần yêu cầu của người dùng |
Một điểm đáng chú ý ở dòng chi phí: chi phí huấn luyện là khoản lớn trả một lần cho mỗi phiên bản, còn chi phí inference là dòng chi liên tục, tăng theo mức độ phổ biến của sản phẩm. Một mô hình càng được nhiều người dùng, tổng chi phí chạy càng lớn.
Một lượt inference của chatbot diễn ra thế nào
Khi bạn bấm gửi câu hỏi, ở mức nguyên lý, phía máy chủ làm những việc sau:
- Nhận và tách chữ. Câu hỏi, cùng với các câu trước trong cuộc trò chuyện và chỉ dẫn hệ thống của sản phẩm, được tách thành các mẩu nhỏ gọi là token.
- Đọc toàn bộ đầu vào. Mô hình xử lý hết phần đầu vào trong một lượt. Đầu vào càng dài, như khi bạn dán cả một tài liệu, bước này càng lâu; đây là lý do có những lúc phải chờ một chút trước khi chữ đầu tiên hiện ra.
- Sinh chữ đầu tiên. Từ kết quả tính, mô hình chọn token tiếp theo.
- Lặp lại từng chữ. Token vừa sinh được nối vào cuối, rồi mô hình tính tiếp để chọn token sau. Mỗi token mới đều cần một lượt tính qua toàn bộ mô hình.
- Gửi dần về máy bạn. Để bạn không phải chờ cả câu, nhiều sản phẩm gửi từng phần ngay khi có, nên chữ hiện ra dần dần trên màn hình.
- Dừng. Mô hình dừng khi sinh ra tín hiệu kết thúc hoặc chạm giới hạn độ dài.
Vì câu trả lời được sinh từng chữ một, câu trả lời dài tốn nhiều lượt tính hơn câu trả lời ngắn. Với mô hình suy luận, phần nháp bạn không nhìn thấy cũng được sinh theo đúng cách này, nên một câu trả lời ngắn vẫn có thể tốn nhiều sức tính.
Vì sao inference trở thành khoản chi lớn của ngành AI
Trong những năm đầu, các bản tin về AI thường xoay quanh chi phí huấn luyện: mô hình này tốn bao nhiêu tháng, bao nhiêu chip để dạy. Khi chatbot có hàng trăm triệu người dùng, câu chuyện dần đổi hướng. Mỗi lượt trả lời chỉ tốn một chút, nhưng nhân với số lượt khổng lồ mỗi ngày, tổng chi phí vận hành trở thành một khoản rất lớn, và nhiều nhà phân tích cho rằng theo thời gian nó có thể vượt chi phí huấn luyện của chính mô hình đó.
Vài xu hướng gần đây còn làm khoản này nặng thêm. Mô hình suy luận sinh ra chuỗi nháp dài trước khi trả lời. Người dùng dán tài liệu, ảnh, video ngày càng dài vào cuộc trò chuyện. Tác tử AI tự gọi mô hình nhiều lần liên tiếp để hoàn thành một việc. Mỗi xu hướng đều nhân số lượt tính lên.
Đây là lý do bạn thấy những thứ quen thuộc trong sản phẩm AI: gói miễn phí có giới hạn số lượt hay giới hạn mô hình mạnh; có lựa chọn mô hình nhanh và mô hình mạnh; dịch vụ cho lập trình viên tính phí theo lượng token vào và ra; giờ cao điểm có lúc chậm hoặc báo quá tải. Tất cả đều là cách cân đối chi phí inference với số người dùng.
Inference cũng là phần lớn câu chuyện điện năng của AI khi nói về sử dụng hằng ngày. Con số cụ thể cho mỗi câu hỏi được nhiều bên ước tính rất khác nhau, phụ thuộc mô hình, phần cứng và cách đo, nên nên đọc các con số đó với sự dè dặt và xem ai đo, đo thế nào.
Các cách làm inference nhanh và rẻ hơn
Vì inference tốn kém, các hãng và cộng đồng nghiên cứu đã phát triển nhiều kỹ thuật để giảm chi phí mỗi lượt. Hiểu tên các kỹ thuật này giúp bạn đọc tin công nghệ dễ hơn:
- Lượng tử hoá. Lưu tham số bằng ít bit hơn để mô hình nhẹ và đọc nhanh hơn.
- Chưng cất. Dùng mô hình nhỏ học theo mô hình lớn để phục vụ những việc không cần mô hình lớn.
- Gom yêu cầu. Máy chủ xử lý nhiều yêu cầu của nhiều người dùng cùng lúc trong một lượt tính, tận dụng phần cứng tốt hơn.
- Lưu đệm phần đầu chung. Nếu nhiều yêu cầu có chung một đoạn mở đầu dài, như cùng một chỉ dẫn hệ thống hay cùng một tài liệu, kết quả tính của đoạn đó được giữ lại dùng chung thay vì tính lại.
- Đoán trước bằng mô hình nhỏ. Một mô hình nhỏ đoán nhanh vài chữ tiếp theo, mô hình lớn chỉ việc kiểm tra và giữ lại những chữ đúng. Nhờ vậy câu trả lời ra nhanh hơn mà vẫn đúng như mô hình lớn tự làm.
- Chip chuyên cho inference. Một số loại chip được thiết kế riêng để chạy mô hình đã huấn luyện, ưu tiên tốc độ và tiết kiệm điện hơn là khả năng huấn luyện.
Những kỹ thuật này phần lớn diễn ra phía máy chủ, người dùng không nhìn thấy. Bạn chỉ cảm nhận gián tiếp qua tốc độ trả lời và qua việc dịch vụ có thể phục vụ nhiều người hơn với cùng chi phí.
Những hiểu lầm hay gặp quanh inference
"Chatbot học thêm từ mỗi câu mình hỏi." Trong lúc inference, tham số của mô hình không thay đổi. Chatbot nhớ được câu trước trong cùng cuộc trò chuyện vì cả đoạn hội thoại được gửi lại làm đầu vào, hoặc nhờ tính năng bộ nhớ lưu ghi chú riêng. Việc hãng có dùng cuộc trò chuyện để huấn luyện phiên bản sau hay không là chuyện chính sách dữ liệu, cần xem cài đặt hiện hành.
"Mỗi lần hỏi là AI lên mạng tra." Bản thân mô hình chỉ dùng những gì đã học. Chỉ khi sản phẩm có bật công cụ tìm kiếm web, mô hình mới gọi công cụ đó để lấy thông tin mới rồi đọc kết quả.
"Trả lời chậm nghĩa là AI đang suy nghĩ kỹ." Có thể là mô hình suy luận đang sinh chuỗi nháp, nhưng cũng có thể chỉ là máy chủ đang đông người dùng, đường truyền chậm hoặc đầu vào quá dài. Độ chậm không phải thước đo chất lượng.
"Đang chạy hằng ngày thì mô hình biết chuyện hôm nay." Mô hình được phục vụ mỗi ngày nhưng kiến thức của nó dừng ở mốc kết thúc huấn luyện, có khi cách đó nhiều tháng. Việc inference diễn ra hôm nay không làm mô hình biết thêm sự kiện của hôm nay. Muốn có thông tin mới, sản phẩm phải dùng công cụ tìm kiếm hoặc bạn tự đưa tài liệu vào cuộc trò chuyện.
"Cùng một mô hình thì ở đâu chạy cũng trả lời giống nhau." Cùng tên mô hình nhưng mỗi nơi có thể chạy bản nén khác nhau, cài đặt độ ngẫu nhiên khác nhau và chỉ dẫn hệ thống khác nhau, nên câu trả lời có thể chênh nhau đáng kể.
"Huấn luyện xong là hết tốn tiền." Ngược lại, với sản phẩm phổ biến, phần chi lớn và kéo dài lại nằm ở việc chạy mô hình mỗi ngày cho người dùng.
Câu hỏi thường gặp
Inference và suy luận có phải là một không?
Trong tài liệu tiếng Việt, inference thường được dịch là suy luận, nhưng chữ suy luận cũng được dùng cho reasoning, tức khả năng lập luận nhiều bước. Đây là hai khái niệm khác nhau. Mọi mô hình đều có inference; chỉ một số mô hình được huấn luyện riêng cho reasoning.
Chạy mô hình trên máy tính cá nhân có phải là inference không?
Đúng. Khi bạn tải một mô hình về và cho nó trả lời câu hỏi trên máy mình, máy bạn đang làm inference. Lúc đó bạn là người trả chi phí phần cứng và tiền điện, thay cho hãng vận hành dịch vụ.
Vì sao câu hỏi dài hay tài liệu đính kèm làm chatbot trả lời chậm hơn?
Mô hình phải xử lý toàn bộ đầu vào trước khi sinh chữ đầu tiên, và trong lúc sinh mỗi chữ, nó còn phải liên hệ với toàn bộ phần đã có. Đầu vào dài thì cả hai việc đều nặng hơn, nên chờ lâu hơn và tốn nhiều sức tính hơn.
Huấn luyện một mô hình mất bao lâu?
Tuỳ kích thước mô hình, lượng dữ liệu và số chip dùng. Mô hình nhỏ có thể huấn luyện trong vài giờ hay vài ngày; mô hình ngôn ngữ lớn hàng đầu thường cần nhiều tuần trên cụm máy rất lớn. Các hãng ít khi công bố con số chính xác.
Vì sao gói miễn phí của chatbot thường bị giới hạn lượt?
Vì mỗi lượt trả lời đều tốn chi phí inference thật cho hãng: tiền phần cứng, điện, vận hành. Giới hạn lượt và giới hạn mô hình mạnh là cách hãng cân đối chi phí với số người dùng miễn phí. Mức giới hạn cụ thể thay đổi theo thời gian và theo sản phẩm.