Hiện nay ChatGPT đã trở thành một công cụ, công nghệ được ưa chuộng bởi nhiều người. Tuy ngày càng nhiều người sử dụng ChatGPT nhưng không hiểu một số khái niệm và vài điều cốt lõi về công cụ này. Mình quyết định viết sê ri bài viết “AI bình dân” để cung cấp cho mọi người những kiến thức cho việc ứng dụng và sử dụng AI trong thực tiễn.
Do là bài viết chỉ mang tính giải thích khái niệm phục vụ cho việc sử dụng các công cụ AI hiệu quả hơn nên sẽ không bao gồm các điểm quá chi tiết về kĩ thuật, mình chỉ tập trung giải thích một số khái niệm mà mình cho là mọi người chưa hiểu về ChatGPT và Large Language Model nói chung (LLM).
Table of Contents
Prompt là gì?
Đối với large language model, “prompt” đề cập đến văn bản đầu vào được cung cấp cho model để tạo “phần tiếp theo” của văn bản (các mô hình có cơ chế giống ChatGPT). Prompt có thể là một câu hoặc một đoạn văn dài tuỳ thuộc vào tuỳ chỉnh của người tạo ra mô hình hay ứng dụng.
Ví dụ:
Nếu bạn muốn sử dụng một mô hình ngôn ngữ lớn để tạo ra một câu chuyện ngắn, bạn có thể bắt đầu bằng cách cung cấp một “prompt” như “Once upon a time, there was a young girl named Emily.”. Sau đó, mô hình sẽ sử dụng “prompt” này để tạo ra câu tiếp theo của câu chuyện, và tiếp tục cho đến khi nó tạo ra một câu chuyện hoàn chỉnh.
Mình minh hoạ ví dụ trên trong hình dưới đây (phần prompt rút ngắn và cắt bớt phần bắt đầu để vừa khung hình).
Trên đây là mình minh hoạ quá trình sản sinh ra “phần còn lại” hay bạn có thể gọi là “câu trả lời” của các mô hình như ChatGPT.
Có 4 điều cần để ý trong hình trên.
Checkpoint
Checkpoint ở đây các bạn có thể hiểu đơn giản là điểm “save” như khi chơi game mà bạn “save” lại giữa chừng, và khi mở lên nó y hệt như vậy. Checkpoint là trạng thái của model tương ứng dữ liệu cuối cùng mà mô hình được train. Như vậy, prompt của bạn sẽ là “phần tiếp theo” của “câu chuyện” mà Large Language Model được train.
Do vậy bạn có thể hiểu đại khái là (đại khái nhé) prompt của bạn là điểm bắt đầu của mô hình sau khi đã “mơ” về hàng tỉ dòng dữ liệu đầu vào.
Chính vì điều này nên mỗi mô hình khi “mơ” về các bộ dữ liệu khác nhau thì sẽ có kiến thước, cách nói chuyện khác nhau, cho nên việc kiểm soát dữ liệu đầu vào rất quan trọng. ChatGPT được sử dụng rộng rãi vì đây là mô hình “tỉnh táo nhất” sau khi được gọi dậy từ giấc mơ đó cho nên bạn có thể tương tác với ChatGPT tự nhiên, y như người thật.
Prompt
Như trên chính là phần chữ nghĩa mà bạn muốn bỏ vào để cho mô hình tiếp tục hoàn thiện phần còn lại
Step
Bây giờ sẽ đến phần step, step thực ra là quá trình chạy phần kí tự còn lại ngược về mô hình để tạo ra chữ tiếp theo. Như trên ảnh bạn có thể thấy phần ..girl name Emily sẽ được bỏ ngược lại vào model và trả về 1 “xác suất” của chữ sẽ xuất hiện tiếp theo, trong trường hợp này chúng ta có thể thấy xác suất chữ tiếp theo là “who” là cao nhất nên các bước sẽ như sau: ..girl name Emily -> .girl name Emily who -> .girl name Emily who lived
Điều kiện dừng
Nhưng không lẽ …. ChatGPT cứ nói hoài?
Như các bạn có thể thấy, model có thể cứ liên tục được cho thêm nhiều kí tự dài hơn và dài hơn để cứ tiếp tục kể câu chuyện không có điểm dừng. Vậy đâu là điểm dừng?
Khi xây dựng úng dụng liên quan đến AI, các bộ dữ liệu thường có bao gồn 1 “token” đại diện cho điểm dừng. Token ở đây bạn có thể hiểu là 1 chuỗi kí tự ví dụ như là “<END>” chẳng hạn.
Model sẽ còn tạo ra dữ liệu khi mà máy vẫn còn chạy được, như vậy giải pháp để “dừng” đó là chèn 1 token (trong hình minh hoạ là END) đại diện cho điều kiện dừng, sau đó kèm nó vào dữ liệu để train (dạy) model này cho model biết khi nào sử dụng điều kiện dừng. Khi đó chúng ta sẽ viết một ứng dụng mà khi model trả về token mang điều kiện dừng, chúng ta sẽ ngưng không yêu cầu model tiếp tục trả kết quả nữa.
Như trong hình minh hoạ Token được dùng là <END>, như vậy model đã biết phải dừng câu chuyện ở đây.
Lưu ý: Token <END> không phải là dấu chấm mà nó là một chuỗi kĩ tự <END> liền mạch và chỉ khi đạt được điều kiện này thì model mới ngừng sinh ra thêm text.
Tại sao cần biết cái này?
Để hiểu bản chất language model làm được những gì và không có những kì vọng quá xa vời khi sử dụng nó cũng như đưa ra những phương án tạo ra prompt tốt hơn.
Ví dụ trong trường hợp của ChatGPT chẳng hạn, thì bạn có thể biết được ChatGPT chỉ có khả năng tạo ra text, cho nên bạn có thể yêu cầu ChatGPT viết 1 đoạn code cho bạn để làm một việc nào đó chứ không yêu cầu ChatGPT “làm” vì ChatGPT chỉ có thể tạo ra 1 đoạn text “giả bộ” là nó đang làm việc đó.