Hiện tượng kỳ lạ xảy ra với LLM và cờ vua
(substack.com/dynomight)- Khi đưa nhiều LLM vào chơi cờ vua trong cùng điều kiện, đa số đều sụp đổ sau khai cuộc, nhưng chỉ gpt-3.5-turbo-instruct cho thấy hiệu năng rất mạnh trước Stockfish ở mức độ khó thấp nhất
- Thí nghiệm diễn ra bằng cách để LLM đi quân trắng đấu với Stockfish ở mức độ khó thấp nhất, rồi đánh giá trạng thái bàn cờ ở mỗi lượt bằng điểm centipawn của engine cờ vua
llama-3.2-3b,llama-3.1-70b,Qwen-2.5-72b,command-r-v01,gemma-2-27b,gpt-3.5-turbo,gpt-4o-mini,gpt-4o,o1-miniđều không thể tiệm cậngpt-3.5-turbo-instruct- Khi so sánh các model cùng họ, có vẻ như instruction/chat tuning làm giảm năng lực chơi cờ, nhưng mức suy giảm khác nhau: có model giảm ít, có model giảm rất nhiều
- Ở các model mở, xuất hiện vấn đề tokenizer khi chỉ một dấu cách ở cuối prompt cũng làm hiệu năng thay đổi lớn, và đầu vào ký hiệu cờ vua phản ứng rất nhạy với biểu diễn nội bộ cùng các ràng buộc sinh của LLM
Thiết lập thí nghiệm và cách đánh giá
- LLM được đưa một prompt yêu cầu chọn nước đi tiếp theo như một đại kiện tướng cờ vua, và đầu vào là một bản ghi ván cờ đã diễn ra một phần
- Ký hiệu dùng ký pháp đại số chuẩn như
e4,Rdf8,R1a3 - Có chỉ thị không ghi số lượt và cũng không giải thích lý do lựa chọn
- Ký hiệu dùng ký pháp đại số chuẩn như
- Trong mọi ván đấu, LLM đi quân trắng, còn đối thủ là Stockfish, AI cờ vua tiêu chuẩn, ở mức độ khó thấp nhất
- Sau mỗi lượt, trạng thái bàn cờ được chấm điểm bằng engine cờ vua để so sánh hiệu năng giữa các model
- Đơn vị là centipawn; một quân tốt được tính là 100 điểm và cũng phản ánh giá trị vị trí
- Nếu ván cờ kết thúc, thắng của LLM được tính +1500, hòa là 0, thua là -1500
Các model suy yếu nhanh chóng sau khai cuộc
llama-3.2-3blà base model 3 tỷ tham số và thua cả 50 ván- Model có thể đi được vài nước khai cuộc tiêu chuẩn nhưng nhanh chóng bắt đầu mất quân
- Dù đối thủ chỉ là Stockfish ở thiết lập thấp nhất, nó vẫn thua toàn bộ
llama-3.1-70bvới 70 tỷ tham số chỉ khá hơn đôi chút và vẫn cho kết quả rất tệllama-3.1-70b-instruct,Qwen-2.5-72b,command-r-v01,gemma-2-27bcũng được thử theo cách tương tự nhưng không cho thấy năng lực cờ vua mạnhllama-3.1-405b, dù chỉ được chơi vài ván và là model lớn hơngpt-3.5-turbo, vẫn cho kết quả kém
gpt-3.5-turbo-instruct mạnh một cách ngoại lệ
gpt-3.5-turbo-instructlà model đóng của OpenAI nên chi tiết cụ thể không rõ, nhưng trong 10 lần thử nó cho thấy hiệu năng rất tốt- Nó mạnh đến mức vẫn thắng mọi ván ngay cả khi tăng độ khó của Stockfish lên vài nấc
gpt-3.5-turbo, có tên gần giống, là model được tinh chỉnh theo hướng hội thoại hơn, và năng lực chơi cờ khác biệt rất lớn so vớigpt-3.5-turbo-instructgpt-4o-mini,gpt-4o,o1-minicũng nằm trong nhóm thử nghiệm, vàgpt-4odù thua chậm hơn đôi chút vẫn thua trong mọi ván- Xu hướng các thí nghiệm cờ vua với LLM trên Internet từng thu hút nhiều chú ý vào khoảng tháng 9~10/2023 khi có vẻ đạt trình độ nghiệp dư cao, nhưng ở các model gần đây lại quay về kiểu sụp đổ sau khai cuộc
instruction/chat tuning và năng lực cờ vua
- Khi so sánh model gần base với model đã được tinh chỉnh thêm trong cùng một họ, instruction tuning bổ sung đều cho kết quả theo hướng làm xấu đi năng lực chơi cờ
- Mức suy giảm không đồng đều
- Có hai trường hợp khác biệt nhỏ
- Có một trường hợp khác biệt rất lớn
- Tên gọi
gpt-3.5-turbo-instructcần được hiểu khác với quy ước đặt tên thông thường- Ở đây nó được xem là model gần với base model hơn
gpt-3.5-turbo - Điều này ngược với cách hiểu thường thấy rằng
instructhayitnghĩa là được tinh chỉnh mạnh hơn cho hội thoại và làm theo chỉ thị
- Ở đây nó được xem là model gần với base model hơn
Các nguyên nhân khả dĩ
-
Base model lớn có thể chơi cờ, nhưng instruction tuning có thể làm hỏng khả năng đó
- Điều này phù hợp với kết quả thí nghiệm, nhưng có phản ví dụ là
llama-3.1-405blớn hơn vẫn cho kết quả tệ
- Điều này phù hợp với kết quả thí nghiệm, nhưng có phản ví dụ là
-
gpt-3.5-turbo-instructcó thể đã được học từ nhiều ván cờ hơn- Khả năng cao mọi model đều đã học từ rất nhiều ván cờ, nhưng khó biết chính xác số lượng
-
Khác biệt trong kiến trúc Transformer có thể đã ảnh hưởng
- Cũng khó loại trừ khả năng các model dòng Llama đặc biệt yếu với cờ vua
-
Có thể đã tồn tại sự cạnh tranh giữa các loại dữ liệu khác nhau
- Một Transformer chỉ được huấn luyện bằng các ván cờ có thể chơi cờ rất giỏi
- Nếu
gpt-3.5-turbo-instructđược huấn luyện trên dữ liệu có tỷ lệ ván cờ cao hơn, phần lớn hơn trong tham số của nó có thể đã được dùng cho cờ vua - Nếu giả thuyết này đúng, thì model đủ lớn vẫn phải có thể chơi cờ tốt ngay cả khi tỷ lệ dữ liệu cờ thấp, miễn là đã học đủ dữ liệu cờ vua
Chi tiết triển khai và các ràng buộc
- Các model mở được chạy trực tiếp, và mọi model không phải của OpenAI được phân loại là model mở
- Việc chạy model mở dùng lượng tử hóa
Q5_K_M - Với model mở, các nước đi hợp lệ hiện tại được tạo trực tiếp và dùng llama.cpp grammars để ràng buộc đầu ra sao cho luôn sinh ra nước đi hợp lệ
- Các model OpenAI không hỗ trợ grammar đầy đủ, nên hệ thống cho sinh tối đa 10 lần; nếu vẫn không có nước đi hợp lệ thì chọn ngẫu nhiên một nước
- Với các chat model như
llama-3.1-70b-instruct,gemma-2-27b-it,gpt-3.5-turbo,gpt-4o-mini,gpt-4o, một system prompt riêng được sử dụng o1-minikhông thể thay đổi system prompt nên được chạy nguyên trạng- Model mở chạy ở temperature 0.7, còn model OpenAI dùng mặc định
Dấu cách trong prompt và hiện tượng lạ của tokenizer
- Ở các model mở, prompt kết thúc bằng dấu cách như
1. e4 e5 2.cho hiệu năng tệ hơn rất nhiều so với prompt kết thúc không có dấu cách như1 e4 e5 2. - Nguyên nhân được cho là liên quan đến tokenizer
- Tokenizer của Llama sinh
enhư một token duy nhất sau1. - Điều này không giống với việc sinh
esau một token dấu cách - Nếu thêm dấu cách ở cuối đầu vào rồi để model sinh token kế tiếp, model sẽ rơi vào tình huống gây nhầm lẫn
- Tokenizer của Llama sinh
- Cách xử lý phù hợp là token healing: xóa token cuối của đầu vào, rồi thực hiện constrained generation trên mọi chuỗi bắt đầu bằng phần chuỗi đã bị xóa
- Trong triển khai, thay vì token healing, dấu cách được bỏ đi và grammar được sửa để có thể sinh hoặc không sinh dấu cách, rồi tạo nước đi hợp lệ hiện tại cùng dấu cách tùy chọn
- Bản cập nhật cho biết nguyên nhân của hiện tượng này thực sự đã được xác định, đồng thời thêm gợi ý rằng chưa ai đoán đúng lời giải thích chính xác
Khả năng có tối ưu hóa từ OpenAI
- Một giả định là OpenAI, sau khi thấy sự quan tâm đến năng lực chơi cờ, có thể đã tối ưu một phần nào đó như dữ liệu huấn luyện, fine-tuning hoặc thuật toán để nâng cao năng lực cờ vua của
gpt-3.5-turbo-instruct - Theo cùng giả định đó, tối ưu hóa này có thể không được duy trì ở các model về sau do trade-off như chi phí hoặc suy giảm ở các năng lực khác
- Tuy nhiên đây không phải kết luận có căn cứ rõ ràng, mà chỉ là suy đoán ở mức “OpenAI có thể đã cố ý làm vậy”, và cũng không chắc thời điểm có thực sự khớp hay không
1 bình luận
Ý kiến trên Hacker News
Bài viết có vẻ đã bỏ lỡ một khả năng hiển nhiên: OpenAI có thể đã xem cờ vua là một benchmark “phải thắng” và xử lý đặc biệt riêng cờ vua trong
gpt-3.5-turbo-instruct, nhưng ở các mô hình sau thì không đưa xử lý đặc biệt đó vào vì nó không còn tạo được sự chú ý liên tục từ truyền thôngCó vài điểm quan trọng trong phần thử nghiệm: với các mô hình OpenAI đóng, nếu không sinh ra nước đi hợp lệ thì cho sinh tối đa 10 lần, vẫn không được thì chọn ngẫu nhiên; các mô hình mở được tự chạy với lượng tử hóa
Q5_K_M; hiệu năng của mô hình mở thay đổi rất lớn chỉ vì có hay không có dấu cách ở cuối prompt; mô hình mở dùng temperature 0.7, còn mô hình OpenAI dùng giá trị mặc địnhHành vi kỳ lạ của tokenizer, temperature, lượng tử hóa, nước đi ngẫu nhiên và prompt cờ vua đều trộn lẫn với nhau, nên tôi không biết nên diễn giải kết quả thế nào. Dù vậy bài viết vẫn thú vị
Có lẽ nếu thật sự muốn một mô hình thông minh, ta phải ngừng token hóa. Ngay từ đầu, chúng ta đã giới hạn những gì mô hình nhìn thấy và cách nó nhận thức thế giới bằng cấu trúc của luồng thông tin đầu vào
Tôi biết xử lý bit hoặc byte thô thì chậm, nhưng việc phản chứng giả thuyết rằng các vấn đề lớn có thể đến từ token hóa có vẻ tương đối rẻ và dễ. Tôi ngạc nhiên là không thấy nhiều nghiên cứu hơn về các cách token hóa khác biệt triệt để
Ví dụ người ta hay nói LLM không đếm được những thứ cơ bản là do token hóa, nhưng cùng LLM đó nếu dùng prompt chuỗi suy nghĩ thì lại đếm tốt. Vậy thì không thể giải thích bằng token hóa được. Vấn đề là con người phải chỉ cho nó rằng nếu giải từng bước thì sẽ ra đáp án chính xác; nếu không có sự trợ giúp đó thì nó dễ chỉ đoán mò
Nếu có thể biến hình ảnh thành token và âm thanh cũng thành token, tôi cứ nghĩ liệu có thể tạo ra một tập token biểu diễn ngữ nghĩa do chính mô hình chọn, rồi giải mã các token đó trở lại thành văn bản hay không. Nhược điểm là quá trình chuyển token đã mã hóa về lại văn bản có tính mất mát, nên sẽ không thể trích dẫn văn bản đã thấy theo kiểu 1:1
Theo hiểu biết của tôi, OpenAI có vẻ đã làm đúng chuyện như vậy với hình ảnh trong báo cáo
gpt-4o. Xem “Explorations of capabilities”: https://openai.com/index/hello-gpt-4o/Karpathy cũng đồng ý với quan điểm này. Đây là video dài 2 giờ, trong đó anh ấy vừa xây lại tokenizer vừa bày tỏ sự ghét tokenizer
Đáng để thử nghiệm bằng cách thay đổi prompt và vị trí bàn cờ theo nhiều cách. Để tham khảo, vị trí bàn cờ được đưa cho mô hình là hình này: https://i.imgur.com/qRxalgH.png
Có thể có hơn một điểm kỳ lạ trong thí nghiệm này. Chẳng hạn, việc đưa chỉ dẫn cho biến thể mô hình chưa được instruction-tune có thể lại phản tác dụng. Quan trọng hơn, khi chỉ đưa PGN bị cắt cụt, tôi tự hỏi liệu ở vị trí này Trắng có trông giống người chơi đẳng cấp đại kiện tướng không. Ngay cả khi mô hình hiểu cờ vua tốt, nó vẫn sẽ cố dự đoán nước đi có vẻ hợp lý nhất ở vị trí hiện tại; nếu nó đánh giá Trắng là người chơi kém, nó có thể dự đoán các nước đi kém là có khả năng cao hơn
Dù vậy, việc đặt Stockfish ở mức thấp nhất nhưng cho nó đấu như “đối thủ rất mạnh” có thể đã khiến mô hình hơi bối rối. Nếu tôi diễn giải biểu đồ đúng, vài nước đầu của mô hình trông ổn, rồi sau đó mới bắt đầu có vấn đề. Rất đáng lặp lại thí nghiệm với hướng dẫn prompt, độ mạnh của Stockfish, vị trí bắt đầu, tên người chơi giả định, v.v. được thay đổi
Nếu chỉ đối đầu với một nước đi đơn lẻ thì “thắng” hay “thua” rốt cuộc có nghĩa là gì?
Đồng ý. Có thể thử vài biến thể prompt: nếu cho phép mô hình có quá trình suy nghĩ thì sao, trong thí nghiệm này điều đó bị cấm một cách rõ ràng. Ngoài ra, nếu mỗi bước đều mô tả vị trí bàn cờ trong prompt, mô hình sẽ không cần tự tính toán hay ước lượng nội bộ
Tôi tò mò liệu mô hình có thử đi nước không hợp lệ không. Tác giả bài gốc không nhắc đến chuyện này, nhưng luật cờ vua khá tùy ý, còn LLM thì nổi tiếng là ở các bài khó, thay vì thừa nhận không có đáp án, chúng lại bịa ra thứ nghe có vẻ hợp lý, nên tôi nghĩ ít nhất một lần chuyện đó gần như chắc chắn sẽ xảy ra
Tôi không hiểu vì sao những người có học lại kỳ vọng LLM có thể chơi cờ vua ở mức tạm ổn
LLM không biết chất lượng dữ liệu của chính nó. Prompt “hãy hành xử như x” không thay thế được suy luận thực sự và tính toán quyết định, vốn rõ ràng là cần thiết trong cờ vua
turbo-instructthực sự chơi tốt sao? Có quá nhiều lập luận đại khái dựa trên trực giác nhân cách hóa vô căn cứ kiểu “suy luận thực sự”. Tôi xem tình huống hiện tại là bằng chứng tốt cho thấy không ai thật sự hiểu chuyện gì đang diễn raNếu một mô hình tinh thần nào đó nói rằng LLM lẽ ra không thể chơi cờ vua, thì nó không giải thích được một LLM chơi cờ mạnh. Ngược lại, mô hình nói rằng chúng lẽ ra phải chơi tốt lại không giải thích được vì sao nhiều mô hình lớn thất bại thảm hại ở cờ vua. Rõ ràng đang có chuyện phức tạp hơn diễn ra
“Mức tạm ổn” là chủ quan, nhưng chừng đó thì phải thắng được người mới chơi. Mức thấp nhất của Stockfish dùng trong bài cũng là trình độ trung cấp hạng thấp. Còn tùy bạn đang nói đến các triển khai công khai hiện nay hay ý tưởng LLM nói chung; nếu muốn kết quả tốt hơn, cũng có thể nạp cho nó nhiều sách cờ và phân tích các ván cũ hơn rất nhiều
GPT-3.5-turbo-instructchơi ở trình độ nghiệp dư cao cấp. Tuy nhiên RLHF và chưng cất trong các mô hình mới có vẻ đã làm hỏng năng lực đógpt-3.5-instructcó thể thắng StockfishViệc chạy mô hình mở với lượng tử hóa
Q5_K_Mchỉ có nghĩa là đã nén mất dữ liệu tất cả tham số. Chắc không quan trọng đâu nhỉ?Tôi nghĩ cách học cờ vua như một chuỗi tạo ra nhiều vấn đề hơn lợi ích. Học 1 nghìn tỷ ván cũng không cứu được: https://en.wikipedia.org/wiki/Shannon_number
Để đầy đủ, xin nói thêm rằng các engine cờ vua hiện đại dùng những mô hình chuyên cho cờ vua chất lượng cao như một phần công cụ, và có thể ít nhất hòa mọi kỳ thủ hiện tại hay trong quá khứ, ở mọi ván. Nếu đối thủ mắc dù chỉ một sai lầm rất nhỏ thì sẽ thua. Tăng mức Stockfish lên tối đa, hoặc ít nhất lên kỳ thủ Elo 1800+, có thể cho ra các ván thành công hơn, nhưng đó chỉ là kết quả của việc nhiễu trong dữ liệu huấn luyện giảm vì kỳ thủ mạnh ít đi các nước rác hơn, chứ không có nghĩa là chơi tốt hơn
Học nước tốt nhất từ hàng tỷ, hàng nghìn tỷ thế cờ rồi đưa nó vào một AI nào đó có thể hiệu quả hơn. Các thế cờ tương tự thường có cùng kiểu nước tốt nhất
Tôi tìm thấy một loạt thí nghiệm liên quan, bao gồm
gpt-3.5-turbo-instruct,gpt-3.5-turbo,gpt-4Kết luận cũng gây ngạc nhiên tương tự: gpt-3.5-turbo-instruct chơi cờ vua tốt hơn hẳn
https://blog.mathieuacher.com/GPTsChessEloRatingLegalMoves/
OpenAI có rất nhiều kinh nghiệm làm AI chơi game. Nếu bạn còn nhớ, trong vài năm đó từng là lĩnh vực trọng tâm của họ. Vì vậy có vẻ họ đã tinh chỉnh một mô hình cho phù hợp với cờ vua, để xem việc học cờ có ảnh hưởng đến trí thông minh tổng quát hay không. Giống như con người học cờ có thể thông minh hơn, và học toán hay lập trình cũng có thể như vậy
LLM không suy luận hay tìm kiếm, mà viết văn bản dựa trên văn bản trước đó. Vì thế trước mắt chúng ta nó có thể trông như đang chơi, nhưng thực chất là một phỏng đoán thông minh dựa trên các ván trước. Giống như Kasparov ghi nước đi mà không thực sự tưởng tượng vị trí các quân cờ. Thí nghiệm thú vị là xem mô hình có chơi được khi chỉ được cung cấp luật không, và có lẽ là không. Hiện tại nó đang phát lại từ trí nhớ, chứ không theo dõi mục tiêu. Vẫn chưa có thứ như attention hướng về phía trước, còn beam search thì đủ đắt đỏ, nên thà fallback sang thuật toán cờ vua cổ điển còn hơn
OpenAI chưa làm gì ngoài các tác tử hội thoại