7672

Mô hình ngôn ngữ lớn (LLM)

AI

“Mô hình ngôn ngữ lớn”: tạm dịch từ thuật ngữ tiếng Anh “Large Language Model”, viết tắt là LLM.

Đề dẫn

➤ Quay ngược thời gian, vào những năm 1990, sau khi Yann LeCun phát minh ra Convolutional Neural Network (CNN), rồi ứng dụng mô hình này vào việc đọc chữ số viết tay trên các tấm séc, Machine Learning có thể nói sau đó (giai đoạn những năm 2000) đi vào giai đoạn trầm lắng.

Machine Learning chỉ thực sự “bừng tỉnh” sau sự kiện mô hình AlexNet đoạt giải ImageNet Challenge năm 2012. Sau sự kiện đó, người ta có cảm nhận rằng, à, hóa ra mô hình CNN không chỉ dành riêng để nhận dạng 10 chữ số viết tay mà còn có thể nhận dạng ảnh với độ chính xác xấp xỉ 75%. (Khoảng mấy năm sau, các biến thể CNN được cải tiến đến mức có thể nhận dạng ảnh tốt hơn mắt người.)

Chú ý rằng, mô hình nhận dạng ảnh sử dụng supervised learning, nghĩa là dữ liệu cần phải được dán nhãn (ảnh này được gọi là gì, ảnh kia là gì, ...). Mà đã là dán nhãn thì có nghĩa là chúng ta cần công sức, cần nguồn lực cho việc này. Khi số lượng nhãn ít thì không sao chứ khi số lượng nhãn lên đến hàng triệu, hàng tỷ, hàng chục, hàng trăm tỷ thì câu chuyện không còn đơn thuần là mối lo “tốn nguồn lực” nữa mà nó đã biến thành vấn đề “bất khả thi”.

➤ Vì lý do trên, cộng đồng Machine Learning bắt đầu nghĩ đến phương án thay thế, tìm loại dữ liệu mà khi huấn luyện không cần phải dán nhãn. Nghĩa là dữ liệu bản thân nó đã có nhãn tiềm ẩn, liên quan với nhau theo một cách nào đấy. Vấn đề là phải phát hiện ra mối tương quan giữa các phần tử của dữ liệu. Dữ liệu loại nào?

➤ Vào tháng 1/2013, các tác giả Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean (Google) đăng bài báo với tựa đề “Efficient Estimation of Word Representations in Vector Space”. Đại ý của bài báo là “nhúng” (embed) một tập dữ liệu lớn các “từ” (word) vào một không gian số thực N chiều. Nhóm tác giả sau đó viết phần mềm có tên là word2vec trong ngôn ngữ C++ để huấn luyện mô hình. [Chú ý rằng vào thời điểm đó (năm 2013) các framework như TensorFlow (ra đời vào tháng 11/2015) hay PyTorch (ra đời tháng 9/2016) chưa tồn tại.]

Cái “magic” của word2vec là “tính” được mức độ tương tự về mặt ngữ nghĩa của 2 từ bất kỳ mà không dựa vào bất cứ nhãn nào. Người ta suy ra mối tương quan giữa các từ bằng cách nào vậy? Căn cứ theo câu trích dẫn nổi tiếng của nhà ngôn ngữ học John Rupert Firth: “You shall know a word by the company it keeps” (nhận biết “từ” qua các “từ” đi kèm). Khi huấn luyện với một lượng văn bản đủ lớn, các từ tương tự nhau sẽ đứng gần nhau trong không gian nhúng N chiều.

Tiếp theo sau đó (2014-2017) là trào lưu dịch máy (Machine Translation), đặc biệt là Neural Machine Translation. Giai đoạn này có 2 bài báo rất đáng chú ý.

➤ Cơ chế Attention. Vào tháng 9/2014, các tác giả Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio đăng bài báo với tựa đề “Neural Machine Translation by Jointly Learning to Align and Translate”. Bài báo này đưa ra cơ chế “Attention” và cách huấn luyện để thu được trọng số (weight) về mối tương quan (“Attention”) giữa các phần tử đầu ra (y=[y1, y2, …, ym]) với các phần tử đầu vào (x=[x1, x2, …, xn]). Ý tưởng là huấn luyện một mạng đi kèm (mạng Feed-Forward thông thường) để ghi chú mối tương quan giữa một phần tử đầu ra với tất cả các phần tử đầu vào – tức là ma trận các mối tương quan [yi, xj], trong đó i=1→m và j=1→n. Cơ chế “Attention” được hiểu như thế nào? Đối với mỗi phần tử đầu ra yk người ta tìm phần tử đầu vào xm sao cho giá trị tại điểm (yk, xm) là max trên trục yk. Từ đó người ta nói rằng phần tử đầu ra (yk) “chú ý” đến phần tử đầu vào (xm). Xem minh họa dưới đây.


Ma trận tương quan của “L’accord sur l’Espace économique européen a été signé en août 1992” (tiếng Pháp) và bản dịch sang tiếng Anh “The agreement on the European Economic Area was signed in August 1992”. Chú ý đến các ô sáng trắng (có mối tương quan cao) tương ứng với các cặp từ: (L’, The), (accord, agreement), (sur, on), (la, the), (zone, Area), (économique, Economic), (européen, European), (a été, was), (signé, signed), (en, in), (août, August), (1992, 1992)

Trong cơ chế “Attention”, có một loại “Attention” có tên gọi là “Self-Attention”. Nghĩa là trong cùng một chuỗi văn bản, một từ/cụm từ có mối tương quan đến một từ/cụm từ khác. Lấy một ví dụ. “Chị ấy đọc một cuốn tiểu thuyết hấp dẫn”. Sau từ “đọc”, chúng ta chờ đợi “đọc cái gì” trong phần tiếp theo của câu. Trong trường hợp này, loại văn bản được chờ đợi là “tiểu thuyết”. Như vậy, cụm từ “tiểu thuyết” có mối tương quan với (hoặc “chú ý đến”) từ “đọc”. Tương tự như vậy, cụm từ “hấp dẫn” có mối tương quan với “tiểu thuyết”. Khác với dịch máy, người ta thiết lập mối tương quan giữa các từ/cụm từ của cùng một đoạn văn bản. Nghĩa là tất các các từ/cụm từ đều “chú ý” đến các từ/cụm từ khác trong cùng đoạn văn bản, chỉ là mức độ “chú ý” khác nhau mà thôi.

➤ Mô hình Transformer. Vào tháng 6/2017, một nhóm kỹ sư của Google đăng bài báo với tựa đề “Attention Is All You Need” đề xuất một mô hình mới đặt tên là Transformer. Điểm đặc biệt của Transformer là chỉ sử dụng cơ chế “Attention” – cụ thể là “Self-Attention”, không sử dụng mạng CNN hay RNN như các mô hình khác. Đặc biệt hơn, Transformer huấn luyện, phát hiện đồng thời đa cơ chế tương quan của cùng một đoạn văn bản, được gọi là “Multi-Head Self-Attention”. Với kiến trúc này, tham vọng của Transformer là phát hiện đồng thời hầu hết các mối tương quan trong cùng một đoạn văn bản.

Transformer, trong bài báo, được dùng cho dịch máy. Nghĩa là dịch chuỗi [x1, x2, …, xn] trong ngôn ngữ nguồn thành chuỗi [y1, y2, …, ym] trong ngôn ngữ đích. Tuy nhiên, họ có một điểm tiếp cận hơi khác. Mỗi một phần tử đầu ra yj là kết quả suy diễn từ chuỗi [x1, x2, …, xn] và chuỗi [y1, y2, …, yj-1]. Nghĩa là yj được suy ra (một cách xác suất) từ chuỗi nguồn và các phần tử đích trước đó:

yj = Fp ([x1, x2, …, xn], [y1, y2, …, yj-1])

Về mặt kiến trúc, Transformer được xây dựng từ các khối có cùng cấu trúc. Khi cần mở rộng mô hình, nhà thiết kế chỉ việc thay đổi các tham số. Các tham số quyết định đến kích thước của mô hình là số lớp (layer) Nx và kích thước dmodel. Kiến trúc Transformer rất bền vững (robust) với bất cứ kích thước nào.

Một điểm đặc biệt nữa, Transformer cho phép tính toán song song, rất thuận lợi cho việc cài đặt và triển khai mô hình, tận dụng được sức mạnh của GPU.

Large Language Model?

➤ OpenAI. Vào tháng 6/2018, Alec Radford cùng với các cộng sự ở OpenAI đăng bài báo với tựa đề là “Improving Language Understanding by Generative Pre-Training”. Đây là điểm khởi đầu của dòng GPT (Generative Pre-trained Transformer) và có lẽ cũng là điểm khởi đầu của LLM. Dòng GPT có 3 phiên bản chính là GPT-1 (tháng 6/2018), GPT-2 (tháng 2/2019), GPT-3 (tháng 5/2020) và một phiên bản phụ GPT 3.5 (tháng 03/2022).

Có thể diễn đạt một cách cô đọng thuật toán của dòng GPT: đoán từ (word) tiếp theo của đoạn văn bản trước đó gồm n từ. GPT dựa trên nền Transformer cụ thể bộ giải mã của nó (Transformer Decoder).

Ý tưởng chính của GPT là huấn luyện với dữ liệu không dán nhãn trong giai đoạn Pre-training và huấn luyện tinh chỉnh (Fine-tuning) với dữ liệu có dán nhãn.

Bắt đầu từ phiên bản GPT-2, nhóm nghiên cứu thấy xuất hiện một số khả năng mới lạ ngay từ giai đoạn Pre-training như vấn đáp, đọc hiểu, tóm tắt văn bản, dịch máy, đặc biệt là máy có thể hoàn thiện một câu chuyện từ một gợi ý ban đầu (prompt) với lời văn rất hoàn chỉnh, đúng chính tả, đúng ngữ pháp và có bối cảnh phù hợp.

Ngạc nhiên với năng lực của GPT-2, sau khi khảo cứu mối tương quan giữa năng lực của mô hình so với số tham số của nó thì họ phát hiện thấy rằng năng lực của mô hình tỷ lệ (log-linear) theo dung lượng ngữ liệu và số tham số. Nhóm nghiên cứu của OpenAI đã quyết định nâng cấp kích thước mô hình và tăng dung lượng ngữ liệu huấn luyện trong phiên bản tiếp theo là GPT-3.

Sau khi ra đời và qua thử nghiệm, GPT-3 gây chấn động cộng đồng Machine Learning với năng lực kinh ngạc: có thể thực hiện các phép cộng trừ số học 2 chữ số, biết sắp xếp lại các ký tự của một từ đã bị xáo trộn sao cho đúng chính tả, biết viết các bản tin ngang bằng chất lượng của các nhà báo, biết học và sử dụng từ mới, …

Thế còn các Big Tech khác thì sao? Sau tiếng vang của GPT, đặc biệt là sau khi GPT-3 ra đời với nhiều tính năng có phần “magic”, các Big Tech phần lớn đều chạy đua để có LLM của riêng mình. Xin lấy một vài ví dụ.

➤ Google. Vào tháng 10/2018, các kỹ sư của Google đăng bài báo với tựa đề “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”. Cũng giống như GPT, BERT chia mô hình thành 2 giai đoạn là Pre-training và Fine-tuning. BERT cũng dựa trên nền mô hình Transformer, nhưng họ chỉ sử dụng phần mã hóa (Transformer Encoder).

Khác với cách tiếp cận của OpenAI, Google không phát triển theo dòng: BERT không có các phiên bản tiếp theo. Thay vào đó, Google công bố thêm các LLM khác. Tiêu biểu nhất có lẽ là mô hình LaMDA. LLM này có 137 tỷ tham số và được huấn luyện với dung lượng ngữ liệu là khoảng 1.56 nghìn tỷ từ (word).

➤ Meta (trước là Facebook). Vào tháng 5/2022, Meta cho công bố mô hình OPT. OPT (viết tắt của Open Pre-trained Transformer) có 175 tỷ tham số. Điểm đặc biệt của OPT là họ mở mã nguồn.

➤ Baidu. Vào tháng 12/2021, Baidu công bố công trình của họ là ERNIE cũng dựa vào kiến trúc của Transformer. ERNIE 3.0 Titan có đến 260 tỷ tham số và được huấn luyện với kho ngữ liệu 4 nghìn tỷ.

Mới đây, vào tháng 12/2022, họ công bố một loạt mô hình: 5 mô hình tổng thể, 1 mô hình để tạo mã lập trình và 5 mô hình chuyên sâu cho các ngành công nghiệp như điện, khí đốt, tài chính, hàng không vũ trụ, phương tiện truyền thông, đô thị, phim ảnh - truyền hình, sản xuất và khoa học xã hội đều dựa trên nền ERNIE.

Thông qua các mô hình trên, một cách cô đọng, chúng ta có thể thấy: LLM là mô hình ngôn ngữ dựa trên kiến trúc Transformer, được huấn luyện với một lượng lớn dữ liệu văn bản nhằm tìm hiểu, phát hiện các khuôn mẫu và mối tương quan giữa các từ và cụm từ. Quá trình huấn luyện cho phép LLM hiểu biết sâu về sắc thái của ngôn ngữ con người, bao gồm cú pháp, ngữ pháp, bối cảnh và thậm chí tham chiếu đến giá trị của các nền văn hóa khác nhau.

Rào cản của LLM

Nếu có thời gian theo dõi thì chúng ta thấy phiên bản đầu tiên của GPT mở nguồn (open source), thậm chí còn cung cấp cho cộng đồng kết quả phần Pre-training để cho những ai quan tâm đỡ phải làm lại bước này. Đến GPT-2, họ cũng mở nguồn nhưng phần Pre-training thì họ chỉ công khai mô hình có kích thước bé nhất. Đến GPT-3 thì nhóm nghiên cứu GPT đóng hẳn nguồn và đóng luôn phần kết quả Pre-training. Lý do là gì?

Khi kích thước LLM đủ lớn (như mô hình GPT-3), người ta chợt nhận ra rằng LLM “mạnh” hơn không đồng nghĩa với “tốt” hơn. Chẳng hạn, LLM có thể phát sinh văn bản không đúng sự thật, có nội dung độc hại, đơn giản là chẳng có lợi ích gì.

Vì sao vậy? Chúng ta chú ý rằng “kiến thức” của LLM nằm ở tập ngữ liệu đã được huấn luyện – chủ yếu trên Internet. Mà Internet là một kho ngữ liệu khổng lồ, tốt có, xấu có, độc hại rất nhiều, thông tin sai lệch, nội dung kích động bạo lực, chia rẽ cộng đồng, gây thù hận, … Đủ cả. Nếu đơn thuần để LLM ở dạng “thô”, không chắt lọc, thì đầu ra phát sinh từ LLM là bất kỳ, mất kiểm soát. Rất nguy hiểm.

Một ví dụ cho việc vội vàng tung ra LLM là trường hợp mô hình Galactica của Meta AI. Vào ngày 15/11/2022, Meta tung mô hình này lên Internet để cho cộng đồng thử nghiệm. Chỉ 3 ngày sau, họ đã phải “đóng” mô hình này vì bị cộng đồng chỉ trích dữ dội do mắc phải nhiều lỗi nghiêm trọng bao gồm cả xu hướng tạo văn bản có nội dung sai lệch và khẳng định những điều sai trái là sự thật.

Cách tiếp cận LLM của OpenAI

(Xin nói trước: phần đàm luận này là theo ý kiến chủ quan của tác giả)

Khi theo dõi quá trình phát triển của LLM, có thể dễ dàng nhận thấy OpenAI là công ty đi tiên phong. Một trong những vấn đề họ phải giải quyết là làm thế nào để vượt qua rào cản mà LLM đã dựng lên như đã được đề cập ở trên. Bằng cách nào đó, phải đảm bảo đầu ra của LLM được xã hội chấp nhận và hữu ích cho cộng đồng. Vậy phương án tiếp cận của họ là gì?

➤ Hạn chế truy cập vào LLM. Sau khi phát triển GPT-2, đặc biệt là GPT-3, ngạc nhiên với năng lực tiềm tàng của LLM, nhóm nghiên cứu GPT đã lập tức hạn chế truy cập người dùng. Cách tiếp cận của họ là chỉ cho các nhà nghiên cứu (researcher) truy cập LLM thông qua API.

➤ Âm thầm phát triển các mô hình phụ (series GPT 3.5). Theo công bố công khai của OpenAI, sau GPT-3, họ phát triển hàng loạt mô hình, họ gọi các mô hình này là series GPT-3.5 với các tên mã là code-davinci-002, text-davinci-002, text-davinci-003.

Khi phát triển mô hình, họ cũng công khai bằng một bài báo đi kèm. Nhưng cũng chính OpenAI thừa nhận, mô hình trong thực tế của họ không hẳn giống hoàn toàn như các bài báo đã đăng. Nghĩa là vẫn có thứ “ẩn” phía đằng sau, không phải cái gì cũng mở.

➤ Điều chỉnh hành vi của LLM phù hợp với chủ đích của người dùng. Khi đề cập đến hành vi, bắt buộc người ta phải định nghĩa hành vi chuẩn mực. Như thế nào là hành vi chuẩn mực? Đối với cộng đồng rộng lớn toàn cầu thì câu chuyện “chuẩn mực” có rất nhiều tranh cãi và gần như chắc chắn là sẽ không có hồi kết. Sau khi cân nhắc các phương án, OpenAI đã chọn một giải pháp an toàn. Họ dựa vào một đề xuất, đề xuất này cho rằng hành vi chuẩn mực cần có 3 tiêu chí: hữu ích (helpful), trung thực (honest) và vô hại (harmless).

Đưa ra các tiêu chí về hành vi chuẩn của LLM rất quan trọng. Thiếu các tiêu chí này, người ta chưa thể cho đại chúng tiếp cận được. Chú ý rằng đề xuất trên xuất phát từ một bài báo đăng vào tháng 12/2021. Nghĩa là rất mới.

➤ Huấn luyện LLM làm theo chỉ dẫn. Chúng ta biết rằng LLM có khả năng tạo ra một chuỗi văn bản từ một chuỗi văn bản đầu vào. Nghĩa là:

[prompt] → [LLM] → [response]

Nhưng nếu LLM không hiểu đầu vào (prompt) thì nó tạo đầu ra (response) một cách bất kỳ. Không có gì đảm bảo là đầu ra (response) “khớp” với đầu vào (prompt). Để thực hiện việc khớp đầu vào (từ người dùng) với đầu ra (do LLM tạo), OpenAI huấn luyện LLM có sự can thiệp của con người (bài báo đăng vào tháng 9/2021 và một bài khác đăng vào tháng 3/2022).

Chú ý rằng việc “khớp” (alignment) đầu ra (response) với đầu vào (prompt) có ý nghĩa đặc biệt: tạo cho người dùng cảm giác máy hiểu người.

➤ Hoàn thiện dần hệ thống từ phản hồi của người dùng và API. Có thể thấy OpenAI rất thận trọng với việc công bố các phiên bản. GPT-3 được công bố vào tháng 5/2020 nhưng mãi đến cuối tháng 11/2022 (hơn 2 năm rưỡi) mới công bố phiên bản tiếp theo là ChatGPT. Chú ý rằng ChatGPT rất giống với InstrucGPT mà InstructGPT được công bố thông qua một bài nghiên cứu vào tháng 3/2022. Tôi đoán mò rằng họ có nhiều vòng thử nghiệm rồi bình duyệt (review) trong suốt quãng thời gian từ tháng 3 đến tháng 11/2022 (10 tháng). Mời độc giả tham khảo thêm phần “tự bạch” của OpenAI đăng vào ngày 16/02/2023.

LLM dùng vào việc gì?

Vào thời điểm bài post này, trong cơn sốt của ChatGPT, nếu độc giả tra trên mạng sẽ có cảm giác rằng hình như LLM làm gì cũng được 😊. Một vài ví dụ:

  • Doanh nghiệp bán lẻ / cung cấp dịch vụ có thể sử dụng LLM để cung cấp trải nghiệm khách hàng thông qua chatbot động, trợ lý AI, v.v. (Cái này chúng ta đã thấy nhiều.)
  • Công cụ tìm kiếm có thể sử dụng LLM để cung cấp các câu trả lời trực tiếp, cô đọng hơn. Ví dụ: Microsoft đang tích hợp chatGPT vào công cụ tìm kiếm Bing.com của họ.
  • Các nhà nghiên cứu khoa học sự sống (life sciences) có thể huấn luyện LLM để hiểu protein, phân tử, DNA và RNA.
  • Người lập trình có thể viết phần mềm dựa vào LLM.
  • Người làm tiếp thị có thể huấn luyện LLM để thu thập phản hồi và phân chia yêu cầu của khách hàng thành các cụm hoặc phân chia sản phẩm thành các danh mục dựa trên mô tả sản phẩm.
  • Cố vấn tài chính có thể tóm tắt (summarize) báo cáo doanh thu, lời lãi một cách cô đọng, dễ hiểu bằng cách sử dụng LLM.
  • Công ty thẻ tín dụng có thể sử dụng LLM để phát hiện bất thường và phân tích gian lận nhằm bảo vệ quyền lợi người tiêu dùng.
  • Luật sư có thể sử dụng LLM để giúp diễn giải và tóm tắt văn bản pháp lý.

Suy ngẫm chậm

➤ Chúng ta biết rằng bản chất của LLM là suy diễn kết quả đầu ra theo xác suất. Vì vậy, không có gì đảm bảo đầu ra đúng 100% cả. Có một số loại đầu ra không cần chính xác 100% – ví dụ như làm một bài thơ hay viết một bài báo khoa học viễn tưởng. Nhưng có loại đầu ra cần chính xác – ví dụ như LLM có thể lập trình một hàm (function) trong nháy mắt. Trong trường hợp này, chúng ta cần có đủ hiểu biết để “giám định” xem hàm vừa được tạo ra có đúng về mặt cú pháp và logic hay không.

➤ Câu hỏi tiếp theo: với nguồn lực hạn chế, liệu có tạo ra được một LLM? Theo ý kiến của tôi, đầu tiên, nên tìm giải pháp nguồn mở và kết quả giai đoạn Pre-training cũng phải mở (vì nguồn lực huấn luyện giai đoạn này rất lớn). Nên chăng: mô hình BLOOM. Mô hình BLOOM đã được huấn luyện cho tập ngữ liệu gồm 46 ngôn ngữ tự nhiên (trong đó có tiếng Việt) và 13 ngôn ngữ lập trình (Java, PHP, C++, Python, JavaScript, C#, Ruby, Lua, TypeScript, GO, C, Scala, Rust).

Thế còn giai đoạn Fine-tuning? Có lẽ cách tiếp cận của Baidu là phương pháp rất nên được tham khảo. Họ không tham tạo ra một LLM “toàn bích” mà họ chia nhỏ LLM theo lĩnh vực đặc thù. Đối với các LLM theo lĩnh vực đặc thù thì chúng ta không quá lo lắng đến hành vi của LLM.

➤ Đọc thêm: ChatGPT Is a Blurry JPEG of the Web đăng trên tờ “The New Yorker” của nhà văn khoa học viễn tưởng Ted Chiang.

7672 LVL 20/02/2023