- Nếu thay mục tiêu tiêu chuẩn của LLM là dự đoán token tiếp theo bằng dự đoán đồng thời nhiều token trong tương lai, có thể cải thiện thêm hiệu năng sinh mã và ngôn ngữ tự nhiên ngay cả với cùng dữ liệu và ngân sách tính toán
- Kiến trúc gồm nhiều head đầu ra đặt trên một thân Transformer dùng chung; khi suy luận mặc định, chỉ dùng head token tiếp theo nên hoạt động giống sinh tự hồi quy hiện có
- Với mô hình mã, mô hình 13B tham số giải được nhiều hơn 12% bài HumanEval và 17% bài MBPP so với mô hình dự đoán token tiếp theo có thể so sánh; lợi ích rõ hơn ở các mô hình lớn
- Các head bổ sung được tận dụng cho self-speculative decoding; mô hình 4-token prediction cho tốc độ suy luận tăng tối đa 3×, còn mô hình 8-byte prediction tăng 6,4×
- Trong các tác vụ tổng hợp, phương pháp này có lợi cho induction heads và suy luận thuật toán, đồng thời có khả năng giảm khác biệt phân phối giữa teacher forcing khi huấn luyện và tự hồi quy khi sinh
Phương pháp dự đoán đa token
- Mô hình hóa ngôn ngữ truyền thống tối thiểu hóa cross-entropy loss của một token tiếp theo tại mỗi vị trí
- Dự đoán đa token mở rộng mục tiêu huấn luyện để dự đoán đồng thời n token tiếp theo tại mỗi vị trí
- Kiến trúc mô hình được chia thành ba phần
- Thân Transformer dùng chung tạo biểu diễn tiềm ẩn của ngữ cảnh đã quan sát
- n head đầu ra độc lập dự đoán song song từng token tương lai
- Ma trận unembedding dùng chung tính xác suất token cuối cùng
- Cách suy luận đơn giản nhất là dự đoán tự hồi quy thông thường, chỉ dùng head dự đoán token tiếp theo; các head còn lại có thể bỏ đi
- Các head đầu ra bổ sung có thể được tận dụng cho self-speculative decoding như blockwise parallel decoding hoặc Medusa-like tree attention
Triển khai hiệu quả về bộ nhớ
- Trong triển khai đơn giản, phải đưa toàn bộ logit và gradient của từng head lên bộ nhớ, khiến mức dùng bộ nhớ GPU tăng lớn
- Ở các LLM hiện nay, kích thước vocabulary V lớn hơn nhiều so với chiều biểu diễn tiềm ẩn d, nên logit vector trở thành nút thắt bộ nhớ GPU
- Triển khai được đề xuất chạy tuần tự forward/backward của từng head đầu ra sau forward pass của thân dùng chung
- Logit và gradient của một head được giải phóng trước khi chuyển sang head tiếp theo
- Ở thân chỉ giữ gradient tích lũy
- Cách này giảm mức dùng bộ nhớ GPU đỉnh từ O(nV + d) xuống O(V + d), đồng thời không làm tăng chi phí runtime
Kết quả thử nghiệm với mô hình mã
- Thử nghiệm trên dữ liệu thực so sánh mô hình dự đoán token tiếp theo và mô hình n-token prediction với cùng số tham số
- Nếu thêm n−1 layer vào các head dự đoán tương lai thì loại bỏ n−1 layer khỏi thân dùng chung
- Huấn luyện từ đầu sáu cỡ mô hình, từ 300M đến 13B, với tối thiểu 91B code tokens
- Trong đánh giá MBPP và HumanEval, mô hình nhỏ có thể kém hơn mô hình chuẩn, nhưng khi quy mô tăng, dự đoán đa token vượt lên
- Mô hình 13B giải được nhiều bài hơn so với mô hình dự đoán token tiếp theo có thể so sánh
- Giải được nhiều hơn 12% bài trên HumanEval
- Giải được nhiều hơn 17% bài trên MBPP
- Trong ablation huấn luyện mô hình 7B với 200B code tokens, so sánh n=1, 2, 4, 6, 8
- n=4 nhất quán tốt nhất ở pass@1, pass@10, pass@100 của HumanEval và MBPP
- Trên APPS/Intro, n=6 dẫn đầu
- Window size tối ưu có thể thay đổi tùy theo phân phối dữ liệu đầu vào
Tốc độ suy luận và mô hình byte-level
- Áp dụng greedy self-speculative decoding cho mô hình 7B 4-token prediction, và đo tốc độ decoding trên các prompt kiểm thử về mã và ngôn ngữ tự nhiên không dùng trong huấn luyện
- Kết quả cho thấy tốc độ tăng 3,0× với mã và 2,7× với văn bản
- Với mã, trong 3 đề xuất, trung bình 2,5 token là token được chấp nhận
- Mô hình 8-byte prediction ghi nhận tốc độ suy luận tăng 6,4×
- Trong thử nghiệm tokenization ở byte-level, huấn luyện byte-level transformer 7B trên 314B bytes, tương đương khoảng 116B tokens
- Mô hình 8-byte prediction giải được nhiều bài hơn so với next-byte prediction
- Giải được nhiều hơn 67% bài ở MBPP pass@1
- Giải được nhiều hơn 20% bài ở HumanEval pass@1
- Multi-byte prediction có thể trở thành một hướng để huấn luyện mô hình byte-level hiệu quả hơn
Nhiều epoch, tinh chỉnh và kết quả ngôn ngữ tự nhiên
- Ngay cả khi huấn luyện nhiều epoch trên cùng dữ liệu, dự đoán đa token vẫn duy trì một phần lợi thế so với dự đoán token tiếp theo
- MBPP pass@1 là +2,4%
- HumanEval pass@100 là +3,2%
- Các chỉ số còn lại tương tự
- Trong tinh chỉnh CodeContests, mô hình 7B được tiền huấn luyện bằng 4-token prediction vượt mô hình chuẩn token tiếp theo trên toàn bộ pass@k
- Trường hợp tinh chỉnh nguyên mô hình 4-token prediction bằng loss n′=4 cũng tốt hơn mô hình chuẩn
- Trường hợp loại bỏ các head bổ sung và tinh chỉnh với next-token target là tốt nhất về tổng thể
- Với ngôn ngữ tự nhiên, huấn luyện mô hình 7B bằng 200B tokens và đánh giá trên 6 benchmark NLP tiêu chuẩn
- Mô hình 2-token prediction tương đương mô hình chuẩn token tiếp theo
- Mô hình 4-token prediction giảm hiệu năng đôi chút
- Có thể cần kích thước mô hình lớn hơn
- Đánh giá sinh ngôn ngữ tự nhiên được thực hiện theo hai nhóm: tóm tắt và bài toán toán học
- Trên 8 benchmark summarization, các mô hình n=2 và n=4 đều cao hơn mô hình chuẩn token tiếp theo theo ROUGE-L F1 ở cả huấn luyện 200B và 500B tokens
- Trong đánh giá GSM8K 8-shot, n=2 vượt mô hình chuẩn ở 200B tokens, nhưng sau 500B tokens thì mẫu hình đảo ngược; n=4 nhìn chung kém hơn
Induction và suy luận thuật toán trong các tác vụ tổng hợp
- Induction là mẫu hình trong đó sau khi “AB” xuất hiện trong câu, nếu “A” xuất hiện lại về sau thì dự đoán tiếp “B”
- Huấn luyện các mô hình 1M~1B nonembedding parameters bằng tập dữ liệu children stories, rồi đo induction capability bằng tập kiểm thử có chèn tên ngẫu nhiên gồm 2 token
- Với các mô hình nhỏ từ 30M trở xuống, 2-token prediction loss cải thiện đáng kể việc hình thành induction capability
- Từ 100M trở lên, lợi thế này biến mất
- Trong tác vụ số học đa thức, huấn luyện và đánh giá các biểu thức trong F7[X]/(X5) gồm unary negation, addition, multiplication, composition
- Dự đoán đa token nâng độ chính xác trên toàn dải độ khó tác vụ, và cũng cải thiện mạnh out-of-domain generalization dù giá trị tuyệt đối còn thấp
- Hiệu quả của việc đổi next-token prediction sang dự đoán đa token lớn hơn việc tăng mô hình từ 30M lên 100M
Vì sao có thể hoạt động
- Dự đoán đa token có thể giảm bất khớp phân phối giữa huấn luyện bằng teacher forcing và autoregressive generation ở thời điểm inference
- Dự đoán token tiếp theo có thể tập trung vào dự đoán phạm vi ngắn và bỏ qua phụ thuộc phạm vi dài
- Dự đoán đa token gán trọng số ngầm lớn hơn cho các token liên quan mạnh đến những token theo sau
- Có thể diễn giải điều này là tăng cường choice point
- Việc sinh văn bản hữu ích được xem là phụ thuộc vào lựa chọn quyết định đúng tại các choice point
- Trong triển khai theo lý thuyết thông tin, 2-token prediction xuất hiện dưới dạng làm tăng tầm quan trọng của hạng mutual information giữa X và Y hơn so với next-token prediction
Hạn chế và chi phí
- Các bài toán còn lại gồm phương pháp tự động chọn n trong dự đoán đa token, tận dụng loss scale và loss balancing, điều chỉnh vocabulary size, và phát triển auxiliary prediction loss hoạt động trong embedding space
- Tổng cộng khoảng 500K GPU hours đã được dùng để huấn luyện toàn bộ mô hình thử nghiệm
- Phần cứng là A100-80GB và H100
- Tổng phát thải ước tính khoảng 50 tCO2eq và được offset 100% bằng sustainability program của Meta
- Mục tiêu là nâng cao compute efficiency và data efficiency của mô hình ngôn ngữ, nhưng cần chú ý đến rebound effects và cân nhắc đồng thời lợi ích xã hội lẫn rủi ro của LLM
1 bình luận
Các ý kiến trên Hacker News
Có quá nhiều thứ đang diễn ra trong lĩnh vực này
Sẽ rất hữu ích nếu có một tài liệu giải thích theo trình tự thời gian, như một chuyến tham quan nhà máy, rằng các thuật ngữ như dữ liệu, tiền huấn luyện, huấn luyện, suy luận, hỗn hợp chuyên gia, RAG xuất hiện ở đâu trong quy trình thực tế
Phần lớn tôi không biết các thuật ngữ nằm ở đâu trong bức tranh tổng thể, và lần đầu thấy tiền huấn luyện, tôi đã tưởng đó là quá trình xử lý dữ liệu trước khi huấn luyện, nhưng thực ra nó lại là một dạng huấn luyện khác
Lĩnh vực này có tỷ lệ tín hiệu trên nhiễu rất thấp, và tài liệu của những đơn vị dẫn đầu ngành như Langchain cũng đã lỗi thời hoặc mâu thuẫn với nhau
Thời bong bóng blockchain cũng tương tự, nên có vẻ đó là đặc trưng của đoàn tàu đang quá nóng
Đặc biệt với RAG, tiến triển gần đây nhanh đến mức có lẽ khó có sách tham khảo nào giữ được tính cập nhật trong một thời gian, nên rất khó biết nên bắt đầu từ đâu
Dù vậy, tài liệu của các công cụ cấp cao như LlamaIndex là điểm khởi đầu khá ổn, vì chúng không hẳn giải thích sâu bản thân khái niệm mà cho thấy nó nằm ở đâu trong bức tranh tổng thể
YouTube thì như mọi khi, đầy một biển những người không chuyên cố câu click theo xu hướng mới nhất, nên tôi không nghĩ đó là điểm khởi đầu tốt
Tất nhiên mọi thứ đều vậy, nhưng thay vì cố vá víu chúng, tốt hơn là giả định rằng trong tương lai gần sẽ có thứ tốt hơn GPT-4 rất nhiều, rồi thiết kế sản phẩm có khác biệt dựa trên tiền đề đó
Với những ai biết speculative decoding thì về cơ bản đây là speculative decoding tự thân
Chuỗi nhãn đã dự đoán vẫn được đưa lại vào mạng theo kiểu tự hồi quy, và chỉ giữ các dự đoán đến điểm khớp
Vì vậy hiệu năng không tệ đi mà chỉ nhanh hơn; ở đây tối đa 3 lần, mức này là bình thường với speculative decoding
Nó cũng có thể tốt hơn nhờ học đa nhiệm. Ý tưởng dự đoán mục tiêu trước nhiều bước bằng loss phụ trợ đã có từ khá lâu, và đây là một công trình tốt
Nếu speculative decoding còn cải thiện cả hiệu năng lập kế hoạch thì nó sẽ dễ được chấp nhận hơn
Speculative decoding không làm giảm hiệu năng mô hình xét về độ chính xác hay chất lượng đầu ra
Về mặt toán học, phân phối đã chỉnh sửa được lấy mẫu giống hệt như khi giải mã tự hồi quy thông thường, và khác biệt nếu có chỉ là do tính ngẫu nhiên đơn thuần
Nếu dùng hiệu năng theo nghĩa tốc độ thì speculative decoding cũng có thể làm chậm, nhưng với hầu hết đầu vào và lựa chọn mô hình nháp phù hợp thì không nên như vậy
Chẳng phải LLM trong dự đoán chuỗi có xét phân phối xác suất của mọi tổ hợp token có thể có đến một độ dài đầu ra nhất định sao? Tôi đã nghĩ là chúng đã làm vậy rồi
Nếu không thì thật ngạc nhiên là chúng vẫn hoạt động tốt như hiện nay
Ví dụ, nếu khả năng và xác suất của chuỗi 2 bit là 00: p=0.36, 01: p=0.04, 10: p=0.30, 11: p=0.30, thì chuỗi 2 bit có khả năng cao nhất là 00
Nhưng nếu chỉ dự đoán token tiếp theo thì 0: p=0.40, 1: p=0.60, nên bit tiếp theo trông như là 1, dẫn đến điểm bắt đầu không tối ưu khi dự đoán bit sau đó
Với chuỗi dài, lỗi sẽ càng rõ khi phân phối xác suất kết hợp càng khó phân rã tốt thành các phân phối biên
Nghĩ thêm thì có vẻ có thể làm một nghiên cứu đơn giản: trong dữ liệu huấn luyện văn bản, sửa hàm loss cross-entropy để chỉ xét token tương lai thứ n, rồi vẽ quan hệ giữa hiệu năng LLM và n
Nếu giả định LLM hiện nay đều là n=1, thì giả thuyết là ta có thể tránh được phần lớn sự bùng nổ tài nguyên cần để dự đoán phân phối xác suất kết hợp từ 1 token tiếp theo đến n token
Vì dự đoán trực tiếp token thứ n ngầm đòi hỏi một mô hình dữ liệu tốt hơn. Ít nhất là với văn bản do con người tạo ra, chứ không nhất thiết đúng với mọi loại dữ liệu
LLM được thiết kế để lấy mẫu văn bản theo phân phối huấn luyện, chứ không phải để cho biết văn bản “có khả năng cao nhất” theo sau là gì, và thực ra chúng ta cũng không muốn điều đó
Như vậy sẽ làm mất sự đa dạng của đầu ra
Trong ví dụ đó, nếu là ứng dụng chat thì việc lấy mẫu 0 trong 40% và 1 trong 60% trường hợp là hợp lý
Với các ứng dụng như hỏi đáp, nơi câu có khả năng cao nhất là quan trọng, beam search sẽ hữu ích như những người khác đã nói
Cũng cần cân nhắc rằng mô hình có thể “nhìn trước” và tính các token tương lai trước, rồi dùng chúng cho dự đoán token hiện tại
Thực tế có các nghiên cứu như [1] xử lý vấn đề này
Cuối cùng, dự đoán từng token một là cách con người nói, nên đó không phải cách tiếp cận sai. Chúng ta thực hiện kiểu “nhìn trước” này trong đầu trước khi nói
[1] https://arxiv.org/abs/2404.00859
Theo tôi nhớ, có những mẫu kỳ lạ trong đầu ra LLM, chẳng hạn “an” thường ít có khả năng hơn “a”, nên số danh từ bắt đầu bằng nguyên âm xuất hiện ít hơn dự kiến
Tức là nếu huấn luyện mô hình ngôn ngữ trên một phân phối nào đó và lấy mẫu với nhiệt độ 1, bạn sẽ nhận được đúng cùng phân phối đó
Nếu lấy mẫu ở nhiệt độ thấp hoặc tham lam thì đương nhiên sẽ ra phân phối khác
Có nhiều chiến lược lấy mẫu tối ưu cục bộ như beam search, và cũng đã có nhiều cách lấy mẫu mang tính toàn cục hơn như speculative decoding
Có đúng là LLM hiện nay bắt đầu lại từ đầu cho mỗi token đầu ra không?
Nếu hỏi “Điều gì làm chuối có màu vàng?” và nó trả lời “Bananas are yellow due to a pigment called bromelain.”, thì khi xuất ra “a”, có vẻ như các khái niệm pigment và bromelain đã được kích hoạt ở một mức nào đó trong mạng nơ-ron
Lúc này nó không thể đổi ý để tiếp tục bằng một câu trả lời kiểu “an optical illusion...”, nên trông như nó đã lên kế hoạch trước rằng sẽ nói về một sắc tố tên là bromelain
Khi LLM xuất ra “a”, liệu công việc nó đã làm có thể được tận dụng cho câu trả lời tiếp theo không? Có thể bảo tồn trạng thái mạng nơ-ron cho câu trả lời tiếp theo không?
“Bananas are yellow due to a” và “Bananas are yellow due to an”
Trường hợp đầu nó có thể trả lời “Bananas are yellow due to a pigment called bromelain.”, còn trường hợp thứ hai có thể trả lời “Bananas are yellow due to an organic compound called bromelain, which is a yellow pigment.”
Dù theo hướng nào, việc GPT chọn “a” hay “an” có thể không ảnh hưởng đến ý nghĩa của phản hồi
Nói cực đoan thì cũng có thể xem LLM đang vận hành bằng một heuristic ngớ ngẩn rằng token tiếp theo sau “due to” có 55% là “a” và 45% là “an”
Thực tế tất nhiên tinh vi hơn, nhưng chỉ heuristic như vậy cũng giải thích được hành vi này
Nếu dữ liệu tiền huấn luyện không đưa vào các sự thật liên quan đến bromelain, LLM thật sự có thể tự động hoàn thành bằng nội dung kiểu “an optical illusion”
Tôi nhớ GPT-3 khá thường mắc lỗi sự thật như vậy, nhưng đã nắm được quy tắc ngữ pháp của “a” và “an”
Như đã nói, tôi không nghĩ các khái niệm nhất thiết phải thật sự được kích hoạt trước, nhưng theo nghĩa ngầm ẩn・nổi lên thì có khả năng xảy ra dạng kích hoạt trước như vậy
Có thể xem KV cache là biểu diễn của văn bản cho đến hiện tại và “suy nghĩ” của mô hình về nó
Vì mô hình ngôn ngữ học toàn bộ chuỗi cho đến cuối, tôi cho rằng khả năng chuyện này xảy ra là lớn
Dự đoán đa token khuyến khích hành vi này một cách rõ ràng, nhưng chỉ trong cửa sổ n token nhỏ đã được định nghĩa
Mặt khác, cũng có nhiều cấu trúc mới như early exit, mixture of depths, SSM nhằm tăng mức độ tận dụng tính toán của mô hình ngôn ngữ transformer
Có lẽ nó có kế hoạch ở mức khái niệm về những gì có thể đến sau “a” hoặc các ứng viên khác, nhưng những dự đoán cấp cao như vậy sẽ được xem xét lại từ đầu khi “a” được sinh ra
Mô hình không chỉ có thể đổi ý sau khi mỗi từ được sinh ra, mà còn buộc phải như vậy
Vì thế kiểu “kế hoạch” này rất mong manh, và giống một rapper freestyle ứng biến hơn là một người suy nghĩ sâu rồi chọn câu trả lời và cách diễn đạt
LLM lõi nhận token và xuất ra một tập token được xếp hạng có thể đến tiếp theo cùng “độ tự tin”
Sau đó thường có một bước lọc và tìm kiếm, đưa các token đã xếp hạng đó trở lại LLM để nhận thêm các token xếp hạng và tạo một cây xác suất ngắn
Ví dụ, nếu đưa lại N token đứng đầu, mỗi token sẽ tạo ra một tập N token đứng đầu mới
Nhìn vào cây đó, hệ thống có thể thực hiện các lọc cơ bản như chọn nhánh có tổng độ tự tin cao nhất, nhánh có ít token lặp lại nhất, nhánh có ít token trùng với token đầu vào nhất; hoặc thường là kết hợp các tiêu chí này và thêm lựa chọn ngẫu nhiên được trọng số theo tổng độ tự tin
Vì vậy, ngay cả khi đưa cùng một đầu vào nhiều lần cho một LLM có trọng số hoàn toàn cố định, đầu ra vẫn có thể khác nhau
Tức là, trả lời câu hỏi cụ thể thì mô hình có thể “đổi ý”. Mỗi token được sinh ra tạo cơ hội để bộ lọc đầu ra xác suất chọn một đường đi mới trong số các đường đầu ra khả dĩ
Có thể là một câu hỏi rất ngây ngô, nhưng nếu giả sử ta có thể tạo một vector mã hóa ý nghĩa của cả câu, thì tại sao không thể huấn luyện LLM dự đoán vector câu đó thay vì một từ?
Huấn luyện autoencoder cho ngôn ngữ thực ra khá dễ, vì lượng thông tin chứa trong văn bản nhỏ hơn so với thị giác/video
Phần khó là khiến mô hình tập trung vào phần ngữ nghĩa khi mọi tín hiệu đều đến từ việc khớp chính xác trong không gian token
Vì vậy mới có ý tưởng kiến trúc dự đoán nhúng chung của Yann LeCun
Ngoài ra, luôn có sự đánh đổi: tác vụ phụ cung cấp nhiều tín hiệu hơn nhưng lại làm lệch trọng tâm
Trong trường hợp của chúng tôi, khi số token dự đoán quá nhiều thì hiệu năng giảm
Vì thế các phương pháp dự đoán tiềm ẩn cần làm rõ điều gì là hữu ích
Vấn đề là sau khi có được vector biểu diễn câu trả lời, bạn cần một mô hình khác kiểu nào đó để chuyển câu trả lời ấy trở lại dạng biểu diễn bằng từ
Nó có thể là một mô hình khuếch tán cho văn bản
Thêm nữa, hàm mà mô hình khuếch tán này phải xấp xỉ không phải là hàm đơn ánh; tốt lắm thì là toàn ánh, còn tệ thì thậm chí có thể không phải là một hàm theo nghĩa toán học
Vì với một embedding, có rất nhiều cách biểu đạt bằng văn bản khả dĩ, và phần lớn trong số đó có thể không hợp lệ về ngữ pháp hoặc ngữ nghĩa
Cuối cùng, embedding là một biểu diễn mất mát của dữ liệu nào đó, nên hàm ngược sẽ làm mất nhiều sắc thái và ngữ cảnh
LLM tránh các vấn đề trên bằng cách dự đoán token tiếp theo, nay là n token tiếp theo, theo cách duy trì tính tự nhất quán với truy vấn và n token trước đó; hàm mà chúng xấp xỉ nhìn chung phải gần với toàn ánh
Hiện tại vì đại khái là xử lý từ, AI chỉ có thể dùng những từ nó biết, nhưng có thể tổng hợp câu mới từ các từ
Nếu AI hoạt động theo đơn vị câu, chẳng phải nó chỉ lặp lại những câu đã thấy sao? Khi đó có thể tổng hợp đoạn văn mới, nhưng có vẻ không tạo được câu mới
Trong tiếng Anh, tôi không chắc câu có phải là một abstraction hữu ích cho AI hay không. Với con người thì cũng chỉ vừa đủ hữu ích
Nhìn vào chat, email, bình luận YouTube bình thường, rất nhiều trường hợp thực ra không phải câu hoặc thậm chí không dùng dấu câu
Tôi không cho rằng câu tương ứng với một thiết bị mang nghĩa
Tùy tác giả, một câu có thể chỉ gồm hai từ, cũng có thể là nửa bài báo tiếng Anh; có thể băng qua sáu ý tưởng hoặc chỉ chứa một ý
Việc câu kết thúc ở đâu nhìn chung phụ thuộc vào phong cách người viết hơn là ý nghĩa
Khi tách câu thành token, mỗi token nhận được một biểu diễn vector
Nếu lên cấp độ câu, từ điển của mọi token sẽ trở nên vô hạn
Có thể thử làm việc đó bằng một mô hình nhanh hơn, nhưng tôi nghĩ chất lượng đầu ra sẽ giảm
Tôi chưa đọc bài báo thật kỹ, nhưng có một nhận xét nhỏ về biên tập
Phụ lục L.2 thì ổn, nhưng lập luận được nén lại ở mục 5.2 khiến tôi thấy hơi lỏng lẻo
Đặc biệt, phần nói “bỏ” H(Y | X) trong H(X) + H(Y) = H(X | Y) + 2I(X ; Y) + H(Y | X) không rõ ràng
Nếu dự đoán token thứ ba Z, chẳng phải H(Y | X) phải nằm trong ngữ cảnh ngầm C, và do đó không thể tùy tiện bỏ đi sao?
Tôi cũng không thấy lập luận này được làm rõ trong phụ lục
Tuy nhiên nó không khiến tôi rối đến mức nghi ngờ ý chính của tuyên bố, mà chủ yếu là vấn đề về cách diễn đạt
Vậy trong mục tiêu 2 token H(X) + H(Y), phần nào là thông tin phụ trợ giúp học, còn phần nào là lãng phí?
H(X | Y) và I(X; Y) hữu ích cho việc sinh token tiếp theo, nhưng H(Y | X) theo định nghĩa là lượng thông tin không liên quan đến token tiếp theo X
Vì vậy có thể nói “dự đoán đa token đánh đổi thông tin hữu ích I(X; Y) của H(Y) lấy phần tính toán lãng phí cho H(Y | X)”
Tuy nhiên cần lưu ý rằng H(Y | X) là entropy token tiếp theo khi dự đoán Y từ tiền tố (C, X)
Nếu cơ chế attention có thể chuyển phần tính toán đã thực hiện để dự đoán Y|X sang bước tiếp theo, thì phần tính toán đó thực ra có thể không phải lãng phí mà là tính toán trước
Tôi từng đọc một bài nói rằng LLM đúng nghĩa chỉ có một cửa sổ 1 chiều nhìn ra thế giới
Mọi thứ chỉ là chuỗi token
Những thứ như dự đoán đa token có thể mở rộng tầm nhìn đó lên khoảng 1,1 chiều
Dù sao thì cũng có lập luận thực tế rằng bằng cách nào đó phải mở rộng cửa sổ ấy lên 2 chiều hoặc hơn
Ví dụ nếu có tài nguyên cỡ FAIR và thật sự muốn huấn luyện một mô hình viết Java tốt, thì huấn luyện nó dự đoán AST thay vì token là hợp lý
Để dự đoán chú thích, tên định danh, v.v. vẫn cần một dạng kết hợp với LLM thông thường, nhưng sẽ không mô hình hóa bản thân chương trình như một luồng token
Thay vào đó có thể cho nó dự đoán những thứ như “thêm khối if”, “thêm khối gọi phương thức có 4 tham số”
Ngoài ra cũng có thể huấn luyện mô hình dành riêng các vị trí nhất định trong cửa sổ ngữ cảnh cho thông tin như các thành viên kiểu của con trỏ hiện tại, rồi tích hợp vòng lặp suy luận với phân tích tĩnh kiểu IDE/LSP
Như vậy mô hình có thể nhìn thấy nhiều thông tin hơn những gì có trong văn bản thực tế
Tôi nghĩ lý do hiện nay chưa thấy nhiều mô hình như vậy là chi phí nghiên cứu kiểu này lớn, và người trong giới AI đều thiên về Python, trong khi Python không hưởng lợi nhiều từ IDE
Trong machine learning, từ head không được dùng nhất quán nên có thể gây nhầm lẫn
Trong bài báo này có cả hai khái niệm multihead attention và multiple output heads
Multihead attention trong kiến trúc transformer là việc tập trung vào các vùng khác nhau của đầu vào; ở đây phép ví von sinh học gần với cái đầu như bộ xử lý trung tâm
Output head chỉ lớp cuối của mạng nơ-ron, và có thể có nhiều head tạo ra các đầu ra khác nhau dựa trên cùng các lớp trước đó
Đây cũng là một phép ví von sinh học lỏng lẻo, nhưng gần với cái đầu ở một đầu của cơ thể hơn là cái đầu như CPU
Cả hai đều không phải là phép ví von với đầu đọc băng dùng để đọc dữ liệu
LLM dường như “suy nghĩ” phần lớn bằng cách đưa lại đầu ra của chính nó làm đầu vào, vì vậy người ta liên tục quan sát thấy rằng việc buộc mô hình nghĩ thành tiếng sẽ nâng cao chất lượng suy luận
Nói cách khác, khác với việc bắt mô hình trả lời câu hỏi ngay lập tức, suy luận theo chuỗi suy nghĩ khiến mô hình diễn đạt lại điều được yêu cầu, trình bày chiến lược cấp cao về những thông tin cần thiết để trả lời, nêu những thông tin nó biết, và giải thích các thông tin đó sẽ ảnh hưởng thế nào đến suy luận ban đầu
Tuy nhiên, tôi lo rằng cách buộc mô hình dự đoán nhiều token tiếp theo ở mỗi thời điểm về bản chất có thể tạo ra hiệu ứng ngược lại
Prompting theo chuỗi suy nghĩ dường như cho thấy mô hình “thông minh” hơn khi có n + m token làm đầu vào so với khi chỉ có n token
Vì vậy, việc lấy 5 token tiếp theo tại n có thể cho kết quả kém hơn so với cách lấy 1 token tiếp theo tại n, rồi lấy 1 token tiếp theo tại n+1, v.v.
Việc phương pháp cụ thể này đòi hỏi nhiều token hơn không quan trọng
Nếu không có mô hình rẻ, ta sẽ luôn bị chi phối bởi thiên hướng LLM trả lời bằng ước đoán thay vì đáp án thực sự
Ngoài ra, hầu hết các chiến lược speculative decoding cho ra đầu ra giống như khi chạy mô hình tuần tự
Nếu dự đoán sai, token đó bị loại bỏ và chỉ mất đi phần tăng tốc
Nếu dự đoán độc lập token/từ +1 và +2, làm sao kết quả vẫn hợp ngữ pháp được? Có vẻ sẽ rất hay bị hỏng?
Trong phần tóm tắt không nói rõ, nhưng chú thích Hình 1 có viết: “Trong lúc suy luận, chỉ dùng head đầu ra cho token tiếp theo. Tùy chọn, ba head còn lại có thể được dùng để giảm thời gian suy luận”
Nếu lấy toàn bộ các dự đoán bậc cao hơn thì cũng có thể dùng cả ba head, nhưng khi đó sẽ không thể dùng các chiến lược sampling phổ biến
Tôi không rõ ngoài benchmark thì có bao nhiêu người thực sự chạy LLM với temperature 0; nếu họ làm điều gì đó tốt hơn việc áp dụng temperature thì lại là chuyện khác