Toolformer (VI)

From Systems analysis Wiki
Jump to navigation Jump to search

Toolformer — đây là phương pháp xây dựng mô hình ngôn ngữ lớn (LLM) cho phép chúng tự sử dụng các công cụ bên ngoài thông qua các lệnh gọi API[1]. Phương pháp này được đề xuất vào năm 2023 bởi một nhóm nhà nghiên cứu từ Meta AI Research cùng với Đại học Pompeu Fabra (Tây Ban Nha). Trong công trình «Toolformer: Language Models Can Teach Themselves to Use Tools» (Timo Schick et al., 2023), các tác giả lưu ý một nghịch lý: các LLM hiện đại thể hiện khả năng ấn tượng trong việc giải quyết các bài toán mới phức tạp dựa trên các ví dụ văn bản, nhưng đồng thời thường không thể thực hiện đáng tin cậy các phép toán cơ bản – chẳng hạn như đếm số hoặc tìm kiếm thông tin thực tế[1]. Để vượt qua những hạn chế này, nhóm nghiên cứu đã phát triển mô hình Toolformer, tự học cách lựa chọn và gọi các công cụ bên ngoài (như công cụ tìm kiếm, máy tính hoặc dịch vụ dịch thuật) nhằm nâng cao chất lượng thực hiện các nhiệm vụ đa dạng[1]. Vào tháng 2 năm 2023, mô hình này được công bố dưới dạng preprint trên arXiv, và sau đó được công nhận và chấp nhận tại hội nghị NeurIPS 2023[2].

Ý tưởng cơ bản và khả năng của mô hình

Toolformer là một mô hình ngôn ngữ được fine-tuning, có khả năng quyết định gọi công cụ nào, gọi vào thời điểm nào, truyền tham số gì, và cách tích hợp kết quả nhận được vào văn bản được tạo ra[3]. Quá trình huấn luyện được tổ chức theo chế độ self-supervised — mô hình tự tạo ra và đánh giá các ví dụ sử dụng API, chỉ yêu cầu một tập nhỏ các minh họa (theo nghĩa đen là vài ví dụ) cho mỗi công cụ[3]. Khác với các phương pháp trước đây, không cần các tập dữ liệu được gán nhãn rộng rãi hay các mẫu hướng đến con người để tích hợp công cụ; mô hình tự học khi nào và cách áp dụng API này hay API kia, duy trì các khả năng ngôn ngữ chung và không bị giới hạn bởi các nhiệm vụ được xác định hẹp[1].

Các tác giả đã tích hợp vào Toolformer một loạt công cụ phong phú, có thể truy cập thông qua các lệnh gọi API đơn giản. Trong phiên bản thử nghiệm, các tiện ích sau đây đã được sử dụng[3]:

  • Máy tính – để thực hiện các phép tính số học.
  • Hệ thống hỏi-đáp (Q&A) – để tìm kiếm câu trả lời cho các câu hỏi thực tế từ cơ sở kiến thức.
  • Công cụ tìm kiếm (2 loại khác nhau) – để tìm kiếm thông tin cập nhật trên internet.
  • Hệ thống dịch máy – để dịch văn bản giữa các ngôn ngữ.
  • Lịch – để lấy thông tin về ngày tháng và thời gian.

Mỗi công cụ được biểu diễn dưới dạng một đoạn văn bản (nhãn văn bản đặc biệt), cho phép mô hình nhúng lệnh gọi API trực tiếp vào văn bản mà nó tạo ra[4]. Ví dụ, mô hình có thể chèn cấu trúc dạng `[Calculator(...)]` hoặc `[Search("truy vấn")]` vào ngữ cảnh hiện tại, báo hiệu sự cần thiết phải truy cập bên ngoài. Trong quá trình tạo ra câu trả lời, Toolformer tạo ra một ký hiệu đặc biệt (mũi tên →), theo đó hệ thống tạm dừng quá trình tạo và thực hiện lệnh gọi API tương ứng; kết quả nhận được được chèn vào văn bản, sau đó tiếp tục tạo đoạn tiếp theo[4]. Cơ chế như vậy cho phép mô hình tự động thu hút khả năng của các dịch vụ bên ngoài, đồng thời vẫn là một module ngôn ngữ thống nhất mà không thay đổi kiến trúc.

Huấn luyện mô hình (phương pháp luận)

Các nhà phát triển mô tả quá trình huấn luyện Toolformer qua nhiều giai đoạn[4], sử dụng kỹ thuật in-context learning để tạo ra dữ liệu tổng hợp[1]:

  1. Tạo ra các ứng viên lệnh gọi API. Đầu tiên, các văn bản được lấy từ một kho ngữ liệu lớn (ví dụ: bài báo hoặc trang web) và các lệnh gọi công cụ được chèn vào một cách nhân tạo, những lệnh có thể giúp tiếp tục hoặc bổ sung văn bản. Các phần chèn này được mô hình tự tạo ra bằng cách sử dụng N-shot prompting, dựa trên một vài mẫu sử dụng API được chỉ định thủ công cho mỗi công cụ[1]. Ví dụ, mô hình có thể nhận được đoạn: «Vào năm 2024, dân số thành phố là [QA("Dân số của thành phố này là bao nhiêu?") → ...] người», trong đó QA( ) là lệnh gọi hệ thống hỏi-đáp cần trả về dữ liệu còn thiếu. Với mỗi công cụ, các ngữ cảnh phù hợp được chọn lọc; ví dụ, đối với máy tính, mô hình chọn các câu chứa nhiều số và các từ như «bằng» hoặc «tổng cộng»[4] — ở những nơi mà kết quả số học thực sự cần thiết.
  2. Thực thi các lệnh gọi API và bổ sung dữ liệu. Tiếp theo, tất cả các lệnh gọi được tạo ra bởi mô hình được thực thi thực sự — ví dụ, các truy vấn được gửi đến công cụ tìm kiếm hoặc các biểu thức được tính trên máy tính. Các câu trả lời nhận được được chèn trở lại vào văn bản, tạo thành các biến thể câu hoàn chỉnh với các phần chèn dạng `{câu trả lời}`[4][4]. Đồng thời, các biến thể «trống» (không có câu trả lời được chèn) cũng được lưu giữ, cũng như các văn bản gốc không có lệnh gọi nào — để so sánh sau này.
  3. Lọc và tự đánh giá độ hữu ích. Ở giai đoạn này, Toolformer tự đánh giá xem các phần chèn API được tạo ra có thực sự hữu ích cho việc dự đoán phần tiếp theo của văn bản hay không[4]. Tiến hành so sánh xác suất của mô hình ngôn ngữ để tiếp tục văn bản trong ba kịch bản: (a) không có lệnh gọi nào, (b) có lệnh gọi công cụ nhưng không có kết quả được chèn, (c) có lệnh gọi và kết quả được chèn[4]. Nếu việc thêm một câu trả lời API cụ thể làm tăng xác suất của mô hình để tiếp tục câu đúng (tức là thực sự giúp mô hình dự đoán các từ tiếp theo), thì ví dụ như vậy được coi là hữu ích. Chỉ các phần chèn mang lại lợi ích về xác suất mới được giữ lại trong tập dữ liệu. Theo cách này, các trường hợp mà lệnh gọi công cụ là dư thừa hoặc không mang lại thông tin mới sẽ bị loại bỏ. Cuối cùng, mô hình được fine-tuning trên tập dữ liệu đã được lọc thu được, chứa các ví dụ văn bản thực tế với các lệnh gọi API được chèn tối ưu[1]. Quá trình huấn luyện được thực hiện theo mục tiêu mô hình hóa ngôn ngữ tiêu chuẩn — dự đoán token tiếp theo trong chuỗi, bao gồm các token biểu thị kết quả của các lệnh gọi công cụ.

Điều quan trọng cần nhấn mạnh là để giới thiệu mỗi công cụ mới, chỉ cần một vài ví dụ thủ công về cách sử dụng của nó — sau đó việc tạo dữ liệu huấn luyện diễn ra tự động[3]. Nhờ đó, phương pháp Toolformer hầu như không phụ thuộc vào sự hiện diện của các kho ngữ liệu được gán nhãn chuyên biệt và giảm thiểu công sức trong việc chú thích dữ liệu. Mô hình tự học định dạng và mức độ phù hợp của các lệnh gọi API, đồng thời duy trì tính linh hoạt của mình: nó chỉ sử dụng công cụ khi thực sự cần thiết để giải quyết nhiệm vụ được giao[1].

Kết quả thực nghiệm

Để kiểm tra thực nghiệm phương pháp, các nhà nghiên cứu đã lấy mô hình ngôn ngữ hiện có GPT-J (6,7 tỷ tham số) — một LLM mã nguồn mở được huấn luyện trên kho ngữ liệu The Pile[4]. Mô hình này được fine-tuning theo quy trình đã mô tả, thu được Toolformer dựa trên GPT-J. Hiệu suất của phương pháp mới được đánh giá trong chế độ zero-shot (không có ví dụ) trên một số nhiệm vụ tiêu chuẩn, bao gồm giải toán văn bản, tìm kiếm thông tin thực tế và trả lời câu hỏi kiến thức (QA), cũng như dịch thuật và điền vào chỗ trống trong văn bản. Là dữ liệu kiểm tra, ví dụ, đã sử dụng các tập câu hỏi mở Natural Questions, TriviaQA (để đánh giá kiến thức thực tế) và các tập bài toán ASDiv, MAWPS, SVAMP (bài toán văn bản toán học về số học), cũng như các benchmark QA đa ngôn ngữ MLQA, LAMA[5].

Kết quả cho thấy Toolformer vượt trội đáng kể so với mô hình gốc cùng kích thước trên nhiều nhiệm vụ[1]. Hơn nữa, nhờ kết nối các công cụ, mô hình tương đối nhỏ (6,7 tỷ tham số) đã có thể theo một số chỉ tiêu vượt qua mô hình GPT-3 lớn hơn nhiều (175 tỷ tham số)[1][6]. Ví dụ, trong các bài toán văn bản toán học đòi hỏi tính toán chính xác, Toolformer đã thể hiện tiến bộ đặc biệt đáng chú ý so với các LLM thông thường, giải quyết các bài toán đó chính xác nhờ máy tính, trong khi ngay cả GPT-3 cũng mắc lỗi[1]. Trong các bài kiểm tra câu hỏi thực tế (QA), Toolformer dựa trên GPT-J cũng cho thấy chất lượng câu trả lời tương đương hoặc tốt hơn GPT-3, vì có thể thực hiện tìm kiếm internet để lấy thông tin cập nhật[1]. Điều quan trọng là phương pháp mới không làm suy giảm các khả năng ngôn ngữ chung của mô hình, chẳng hạn như tiếp tục văn bản liên kết trên dữ liệu thông thường: Toolformer duy trì mức độ tạo ngôn ngữ tự nhiên không có công cụ ở mức của GPT-J gốc[3]. Nói cách khác, việc thêm chức năng gọi API không «lấy đi» các kỹ năng cơ bản của mô hình, mà mở rộng chúng với các khả năng bổ sung.

Ý nghĩa của công trình và các nghiên cứu tiếp theo

Việc phát triển Toolformer đã chứng minh khả năng về mặt nguyên tắc để huấn luyện mô hình sử dụng các công cụ bên ngoài hầu như không cần gán nhãn thủ công, thông qua việc tạo dữ liệu tổng hợp và tự đánh giá độ hữu ích. Thành tựu này mở ra con đường đến các mô hình ngôn ngữ lớn hiệu quả và đáng tin cậy hơn: thay vì tăng hàng tỷ tham số để ghi nhớ thông tin thực tế hay các quy tắc toán học, một mô hình tương đối nhỏ gọn có thể động thu hút các nguồn tài nguyên bên ngoài (cơ sở dữ liệu kiến thức, máy tính, dịch vụ) để bù đắp những thiếu sót của chính nó[1]. Cách tiếp cận như vậy cho phép giảm số lượng «ảo giác» (khi mô hình bịa đặt thông tin không tồn tại), tăng độ chính xác của câu trả lời và tính cập nhật của kiến thức mà không cần phải làm lại toàn bộ mô hình. Về bản chất, Toolformer đạt được «điều tốt nhất của cả hai thế giới» — kết hợp các kỹ năng ngôn ngữ của mô hình lớn với độ chính xác của các công cụ chuyên biệt[3].

Công trình của Schick và các đồng nghiệp là một trong những công trình đầu tiên chứng minh việc LLM tự làm chủ các API bên ngoài, và đã tạo ra sự quan tâm lớn trong cộng đồng. Các nghiên cứu tiếp theo phát triển ý tưởng này đã xuất hiện. Ví dụ, vào năm 2023, mô hình Graph-ToolFormer được đề xuất, thích ứng các nguyên tắc của Toolformer để làm việc với dữ liệu đồ thị. Dựa vào các gợi ý được tạo ra bởi ChatGPT, Graph-ToolFormer dạy mô hình ngôn ngữ gọi các công cụ bên ngoài để giải quyết các bài toán phân tích đồ thị (ví dụ, lấy các thuộc tính của đồ thị, làm việc với mạng tri thức, v.v.)[7]. Một phát triển đáng chú ý khác là mô hình Gorilla (Đại học California, Berkeley, 2023), tập trung vào việc sử dụng chính xác nhiều API phần mềm của bên thứ ba[8]. Gorilla là một mô hình LLaMA được fine-tuning trên một tập hợp lớn các hàm được tài liệu hóa; nó có thể tạo ra các lệnh gọi API chính xác theo mô tả nhiệm vụ, và thành công đến mức trong các thí nghiệm đã vượt qua cả GPT-4 về độ chính xác trong việc tạo lệnh gọi các thư viện và dịch vụ[8]. Gorilla tích hợp cơ chế tìm kiếm trong tài liệu, cho phép cập nhật thông tin về các thay đổi API và giảm đáng kể lỗi và ảo giác khi sử dụng công cụ[8]. Các công trình này xác nhận tầm quan trọng của hướng được Toolformer mở ra: việc kết hợp LLM với các công cụ bên ngoài được coi là con đường triển vọng để tạo ra các hệ thống AI mạnh mẽ và đáng tin cậy hơn.

Đáng chú ý là ý tưởng tích hợp công cụ vào các mô hình ngôn ngữ đang phát triển không chỉ trong nghiên cứu mà còn trong ngành công nghiệp. Vào tháng 3 năm 2023, công ty OpenAI đã giới thiệu hệ thống plugin cho ChatGPT — một giao diện đặc biệt cho phép kết nối mô hình với các dịch vụ bên ngoài (trình duyệt web, cơ sở kiến thức, công cụ tính toán, v.v.) để lấy thông tin cập nhật và thực hiện các phép tính[9]. Người dùng đã từ lâu yêu cầu chức năng như vậy, và sự xuất hiện của các plugin trên thực tế hiện thực hóa khái niệm tương tự như Toolformer: mô hình được bổ sung các «công cụ» để mở rộng khả năng của nó khi giải quyết các yêu cầu đa dạng của người dùng[9]. Như vậy, Toolformer phù hợp với xu hướng chung của sự phát triển AI, nơi các mô hình ngôn ngữ lớn trở thành nền tảng, có thể theo yêu cầu sử dụng kiến thức và tính toán bên ngoài. Nghiên cứu được thực hiện bởi nhóm Meta AI và UPF đã đặt nền tảng quan trọng cho hướng này, cho thấy cách LLM có thể học cách làm việc với các công cụ hầu như không cần hướng dẫn thủ công, và qua đó tiến gần hơn đến một trợ lý thông minh toàn diện và an toàn hơn[1][3].

Liên kết

  • Bài báo gốc «Toolformer: Language Models Can Teach Themselves to Use Tools» trên arXiv
  • Đánh giá Toolformer trên Synced Review
  • Trang Toolformer trên OpenReview
  • Đánh giá Toolformer trên Medium
  • Bài báo về mô hình Gorilla trên arXiv
  • Trang plugin ChatGPT trên trang web OpenAI

Tài liệu tham khảo

  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023. OpenReview.
  • Li, M. et al. (2023). API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244.
  • Zhang, T. et al. (2023). Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT. arXiv:2304.11116.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Qin, Y. et al. (2023). ToolLLM: Facilitating Large Language Models to Master 16 000+ Real-World APIs. arXiv:2307.16789.
  • Li, Y. et al. (2024). Tool Learning with Large Language Models: A Survey. arXiv:2405.17935.
  • OpenAI (2023). ChatGPT Plugins. OpenAI Blog.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Schick, T. et al. (2023). Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools. Synced Review.

Chú thích

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 Schick, T. et al. «Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools». Synced. [1]
  2. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 OXEN AI. «Arxiv Dives Toolformer: Language models can teach themselves to use tools». Medium. [4]
  5. «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
  6. Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
  7. Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
  8. 8.0 8.1 8.2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
  9. 9.0 9.1 «ChatGPT plugins». OpenAI. [9]