tác giả:
(1) Mingjie Liu, NVIDIA {Đóng góp bình đẳng};
(2) Teodor-Dumitru Ene, NVIDIA {Đóng góp bình đẳng};
(3) Robert Kirby, NVIDIA {Đóng góp bình đẳng};
(4) Chris Cheng, NVIDIA {Đóng góp bình đẳng};
(5) Nathaniel Pinckney, NVIDIA {Đóng góp bình đẳng};
(6) Rongjian Liang, NVIDIA {Đóng góp bình đẳng};
(7) Jonah Alben, NVIDIA;
(8) Himyanshu Anand, NVIDIA;
(9) Sanmitra Banerjee, NVIDIA;
(10) Ismet Bayraktaroglu, NVIDIA;
(11) Bonita Bhaskaran, NVIDIA;
(12) Bryan Catanzaro, NVIDIA;
(13) Arjun Chaudhuri, NVIDIA;
(14) Sharon Clay, NVIDIA;
(15) Bill Dally, NVIDIA;
(16) Laura Đặng, NVIDIA;
(17) Parikshit Deshpande, NVIDIA;
(18) Siddhanth Dhodhi, NVIDIA;
(19) Sameer Halepete, NVIDIA;
(20) Eric Hill, NVIDIA;
(21) Jiashang Hu, NVIDIA;
(22) Sumit Jain, NVIDIA;
(23) Brucek Khailany, NVIDIA;
(24) George Kokai, NVIDIA;
(25) Kishor Kunal, NVIDIA;
(26) Xiaowei Li, NVIDIA;
(27) Charley Lind, NVIDIA;
(28) Hào Lưu, NVIDIA;
(29) Stuart Oberman, NVIDIA;
(30) Sujeet Omar, NVIDIA;
(31) Sreedhar Pratty, NVIDIA;
(23) Jonathan Raiman, NVIDIA;
(33) Ambar Sarkar, NVIDIA;
(34) Thiệu Giang, NVIDIA;
(35) Hanfei Sun, NVIDIA;
(36) Pratik P Suthar, NVIDIA;
(37) Varun Tej, NVIDIA;
(38) Walker Turner, NVIDIA;
(39) Kaizhe Xu, NVIDIA;
(40) Haoxing Ren, NVIDIA.
ChipNeMo triển khai nhiều kỹ thuật thích ứng miền để điều chỉnh LLM phù hợp với miền thiết kế chip. Các kỹ thuật này bao gồm mã thông báo tùy chỉnh cho dữ liệu thiết kế chip, tiền huấn luyện thích ứng miền với kho dữ liệu miền lớn, tinh chỉnh có giám sát với các tác vụ cụ thể của miền và tạo khả năng truy xuất được tăng cường bằng mô hình truy xuất được tinh chỉnh. Chúng tôi sẽ minh họa chi tiết từng kỹ thuật trong phần này.
A. Công cụ mã thông báo
Khi điều chỉnh trình mã hóa được đào tạo trước, mục tiêu chính là cải thiện hiệu quả mã hóa trên dữ liệu theo miền cụ thể, duy trì hiệu quả và hiệu suất mô hình ngôn ngữ trên các tập dữ liệu chung và giảm thiểu nỗ lực đào tạo lại/tinh chỉnh. Để đạt được điều này, chúng tôi đã phát triển phương pháp tiếp cận gồm bốn bước:
• Bước 1: Đào tạo trình tạo mã thông báo từ đầu bằng cách sử dụng dữ liệu cụ thể của miền.
• Bước 2: Từ vốn từ vựng của tokenizer mới, xác định các token còn thiếu trong tokenizer đa năng và hiếm khi được tìm thấy trong các bộ dữ liệu đa năng.
• Bước 3: Mở rộng trình mã thông báo đa năng với các mã thông báo mới được xác định ở Bước 2.
• Bước 4: Khởi tạo việc nhúng các mã thông báo mới bằng cách sử dụng mã thông báo có mục đích chung.
Cụ thể đối với Bước 4, khi gặp một mã thông báo mới, mã thông báo đó sẽ được mã hóa bằng cách sử dụng mã thông báo có mục đích chung được đào tạo trước. Việc nhúng mã thông báo mới được xác định bằng cách tính trung bình số lần nhúng của mã thông báo được tạo bởi trình mã thông báo có mục đích chung [24] và trọng số của lớp đầu ra được khởi tạo bằng 0.
Bước 2 giúp duy trì hiệu suất của LLM được đào tạo trước trên các tập dữ liệu chung bằng cách giới thiệu có chọn lọc các mã thông báo mới hiếm khi gặp trong các tập dữ liệu có mục đích chung. Và Bước 4 giảm bớt nỗ lực cần thiết cho việc đào tạo lại/tinh chỉnh LLM thông qua việc khởi tạo việc nhúng các mã thông báo mới được hướng dẫn bởi trình mã thông báo có mục đích chung.
B. Đào tạo trước thích ứng miền
Trong nghiên cứu của chúng tôi, chúng tôi áp dụng DAPT trên các mô hình nền móng đã tiền huấn luyện LLaMA2 7B/13B. Mỗi mô hình DAPT được khởi tạo bằng cách sử dụng trọng số của các mô hình cơ sở nền tảng được huấn luyện trước tương ứng. Chúng tôi đặt tên cho các mẫu DAPT của mình là ChipNeMo . Chúng tôi sử dụng tính năng tăng cường mã thông báo như được mô tả trong Phần III-A và khởi tạo trọng số nhúng tương ứng [24]. Chúng tôi tiến hành đào tạo thêm về dữ liệu theo miền cụ thể bằng cách sử dụng mục tiêu mô hình hóa ngôn ngữ tự hồi quy tiêu chuẩn. Tất cả các quy trình đào tạo mô hình đều được thực hiện bằng cách sử dụng khung NVIDIA NeMo [25], kết hợp các kỹ thuật như song song tensor [26] và chú ý flash [27] để nâng cao hiệu quả.
Hình 2 minh họa mức độ mất huấn luyện của ChipNeMo theo các siêu tham số được chỉ định. Chúng tôi quan sát thấy sự gia tăng đột biến về số lần mất huấn luyện. Ngược lại với giả thuyết trong [28], chúng tôi cho rằng trong kịch bản của mình, những mức tăng đột biến này có thể được quy cho “dữ liệu xấu” vì những điểm bất thường này dường như luôn xảy ra trong các bước đào tạo tương tự cho cùng một mô hình, thậm chí trên các kích thước mô hình khác nhau. Chúng tôi đã chọn không giải quyết vấn đề này vì những điểm bất thường này dường như không cản trở đáng kể các bước đào tạo tiếp theo (không có sự suy giảm đáng kể về mất xác thực), có thể do chúng tôi áp dụng tỷ lệ học tập thấp.
C. Tinh chỉnh có giám sát
Sau DAPT, chúng tôi thực hiện căn chỉnh mô hình bằng tinh chỉnh có giám sát (SFT). Chúng tôi áp dụng cấu hình đào tạo siêu tham số giống hệt như DAPT cho tất cả các mô hình, ngoại trừ việc sử dụng kích thước lô toàn cầu giảm xuống còn 128. Tất cả dữ liệu SFT được cấu trúc theo mẫu trò chuyện bên dưới:
<extra_id_0>hệ thống\n{hệ thống}
<extra_id_1>Người dùng\n{user_utterance}
<extra_id_1>Trợ lý\n{chipnemo_response}
…
Chúng tôi sử dụng mục tiêu tối ưu hóa tự hồi quy, thực hiện chiến lược trong đó các tổn thất liên quan đến mã thông báo bắt nguồn từ hệ thống và lời nhắc của người dùng được che giấu [5]. Cách tiếp cận này đảm bảo rằng trong quá trình lan truyền ngược, trọng tâm của chúng tôi chỉ hướng tới việc tối ưu hóa mã thông báo câu trả lời.
Chúng tôi kết hợp tập dữ liệu SFT miền của mình, bao gồm khoảng 1,1 nghìn mẫu, với tập dữ liệu SFT trò chuyện chung rộng hơn gồm 128 nghìn mẫu. Sau đó, chúng tôi tiến hành tinh chỉnh cho một kỷ nguyên sau khi áp dụng tính năng xáo trộn ngẫu nhiên cho dữ liệu. Chúng tôi đã tiến hành các thử nghiệm liên quan đến việc tăng cường bộ dữ liệu SFT theo tên miền cụ thể trong nhiều kỷ nguyên. Tuy nhiên, rõ ràng là mô hình này nhanh chóng có dấu hiệu trang bị quá mức khi đưa ra các câu hỏi trong miền, thường lặp lại các câu trả lời không liên quan từ tập dữ liệu SFT của miền.
Ngoài ra, chúng tôi đã tiến hành một SFT bổ sung chỉ sử dụng tập dữ liệu trò chuyện chung, không bao gồm mọi dữ liệu SFT theo miền cụ thể. Để rõ ràng, chúng tôi chỉ định tất cả các mẫu ChipNeMo của mình như sau:
ChipNeMo-Chat: Các mô hình được tinh chỉnh với cả dữ liệu miền và trò chuyện chung;
ChipNeMo-Chat (noDSFT): Các mô hình được tinh chỉnh riêng với dữ liệu trò chuyện chung.
Chúng tôi cũng đã thử nghiệm DAPT trực tiếp trên mô hình phù hợp với cuộc trò chuyện, chẳng hạn như mô hình LLaMA2-Chat. Chúng tôi nhận thấy rằng DAPT đã làm suy giảm đáng kể tính liên kết của mô hình, khiến mô hình thu được trở nên vô dụng đối với các tác vụ tiếp theo.
D. Thế hệ tăng cường truy xuất
Người ta biết rằng LLM có thể tạo ra văn bản không chính xác, được gọi là ảo giác [29]. Mặc dù hiện tượng này chưa được hiểu hoàn toàn, nhưng chúng ta vẫn phải giảm thiểu ảo giác vì chúng đặc biệt có vấn đề trong bối cảnh chatbot trợ lý kỹ thuật, trong đó độ chính xác là rất quan trọng. Đề xuất của chúng tôi là tận dụng phương pháp tạo tăng cường truy xuất (RAG). RAG cố gắng truy xuất các đoạn có liên quan từ cơ sở dữ liệu để đưa vào lời nhắc cùng với câu hỏi, điều này làm cơ sở cho LLM đưa ra câu trả lời chính xác hơn. Chúng tôi nhận thấy rằng việc sử dụng mô hình ngôn ngữ được điều chỉnh theo miền cho RAG sẽ cải thiện đáng kể chất lượng câu trả lời cho các câu hỏi cụ thể theo miền của chúng tôi. Ngoài ra, chúng tôi nhận thấy rằng việc tinh chỉnh mô hình truy xuất dày đặc được huấn luyện trước không có giám sát có sẵn với lượng dữ liệu huấn luyện theo miền cụ thể khiêm tốn sẽ cải thiện đáng kể độ chính xác của việc truy xuất. Sơ đồ triển khai RAG được điều chỉnh theo miền của chúng tôi được minh họa trên Hình 3.
Chúng tôi đã tạo mô hình truy xuất phù hợp với miền của mình bằng cách tinh chỉnh mô hình e5_small_unsupervised [30] với 3000 mẫu được tạo tự động theo miền cụ thể bằng cách sử dụng khung Tevatron [31]. Quá trình tạo và huấn luyện mẫu được trình bày trong Phụ lục C.
Ngay cả với những lợi ích đáng kể đi kèm với việc tinh chỉnh mô hình truy xuất, thực tế là việc truy xuất vẫn gặp khó khăn với các truy vấn không ánh xạ trực tiếp tới các đoạn văn trong kho tài liệu hoặc yêu cầu nhiều ngữ cảnh hơn không có trong đoạn văn đó. Thật không may, những truy vấn này cũng mang tính đại diện hơn cho những truy vấn sẽ được các kỹ sư hỏi trong các tình huống thực tế. Kết hợp truy xuất với mô hình ngôn ngữ phù hợp với miền là một cách để giải quyết vấn đề này.
Bài viết này có sẵn trên arxiv theo giấy phép CC 4.0.