Cờ vua đẳng cấp đại kiện tướng không cần tìm kiếm
(github.com/google-deepmind)searchless_chesscủa Google DeepMind là hiện thực của bài báo NeurIPS 2024 Amortized Planning with Large-Scale Transformers, dùng cờ vua để đánh giá các Transformer quy mô lớn có thể giải quyết bài toán lập kế hoạch đến đâu mà không cần tìm kiếm tường minh- Bộ dữ liệu cốt lõi ChessBench gồm 10 triệu ván cờ, tổng cộng 15 tỷ điểm dữ liệu, kèm các nước đi hợp lệ và chú thích giá trị do Stockfish 16 cung cấp
- Transformer có quy mô tối đa 270 triệu tham số được huấn luyện bằng học có giám sát, đồng thời thay đổi quy mô dữ liệu, quy mô mô hình, loại kiến trúc và mục tiêu dự đoán để so sánh tác động
- Mô hình lớn nhất dự đoán action-value khá chính xác trên các bàn cờ mới, giải được những bài toán cờ khó mà không cần tìm kiếm tường minh, và đạt Elo blitz Lichess 2895 trước đối thủ là con người
- Thuật toán dựa trên tìm kiếm của Stockfish có thể được chưng cất khá tốt vào Transformer quy mô lớn, nhưng vẫn chưa đạt tới mức chưng cất hoàn toàn, nên ChessBench tiếp tục là một benchmark cho các nghiên cứu tiếp theo
Mục tiêu dự án và bối cảnh bài báo
searchless_chesslà hiện thực của Amortized Planning with Large-Scale Transformers: A Case Study on Chess- Cờ vua được dùng như một bài toán lập kế hoạch tiêu biểu của AI, và dự án này đánh giá hiệu năng của Transformer trên những tác vụ mà việc ghi nhớ trở nên vô nghĩa ngay cả ở quy mô lớn
- Nghiên cứu kiểm chứng trên cờ vua liệu có thể chưng cất hành vi của engine cờ vua dựa trên tìm kiếm vào Transformer bằng học có giám sát hay không
Bộ dữ liệu ChessBench
- ChessBench bao gồm các nước đi hợp lệ và chú thích giá trị do Stockfish 16 cung cấp
- Số ván cờ: 10 triệu
- Tổng số điểm dữ liệu: 15 tỷ
- Stockfish 16 được dùng như một engine cờ vua ở mức tiên tiến hàng đầu
- Bộ dữ liệu được chia theo mục tiêu dự đoán
-
Action-Value
-
Behavioral Cloning
-
State-Value
puzzles.csvđể đánh giá puzzle- Ví dụ về kích thước tải xuống như sau
- Train Action-Value: shard đầu tiên 1.2GB, toàn bộ 1.1TB, tổng 2148 shard
- Train Behavioral Cloning: 34GB
- Train State-Value: 36GB
- Test Action-Value: 141MB
- Test Behavioral Cloning: 4.1MB
- Test State-Value: 4.4MB
- Puzzles: 4.5MB
-
Mô hình và thiết lập thí nghiệm
- Transformer được huấn luyện với quy mô tối đa 270M tham số
- Việc huấn luyện được thực hiện bằng học có giám sát dựa trên ChessBench
- Thí nghiệm so sánh tác động của các yếu tố sau
- Quy mô bộ dữ liệu
- Quy mô mô hình
- Loại kiến trúc
- Mục tiêu dự đoán: state-values, action-values, behavioral cloning
- Mô hình lớn nhất dự đoán action-values khá chính xác trên các bàn cờ mới, cho thấy khả năng khái quát hóa vượt ra ngoài việc chỉ ghi nhớ đơn thuần
Hiệu năng không cần tìm kiếm và các đối tượng so sánh
- Chính sách cờ vua cuối cùng giải được những puzzle cờ khó mà không cần tìm kiếm tường minh
- Mô hình đạt Elo 2895 trong Lichess blitz trước đối thủ là con người, thể hiện hiệu năng ở cấp độ đại kiện tướng
- Các đối tượng so sánh bao gồm Leela Chess Zero và AlphaZero
- Cả hai hệ thống đều được so sánh dưới dạng mô hình huấn luyện bằng self-play
- So sánh cả trường hợp có dùng tìm kiếm và không dùng tìm kiếm
- Thuật toán dựa trên tìm kiếm của Stockfish có thể được chưng cất để xấp xỉ rất tốt trong Transformer quy mô lớn, nhưng chưng cất hoàn toàn vẫn chưa khả thi
Cấu trúc kho mã và luồng thực thi
- Các thư mục và tệp chính đảm nhiệm những vai trò sau
src/engines: Stockfish, Leela Chess Zero, giao diện cho các engine mạng nơ-ronsrc/transformer.py: Transformer decoder-onlysrc/train.py: script huấn luyện và đánh giá mẫusrc/puzzles.py: script đánh giá puzzlesrc/tournament.py: script giải đấu Elosrc/searchless_chess.ipynb: notebook phân tích hành vi mô hìnhsrc/tokenizer.py: token hóa bàn cờ
- Checkpoint huấn luyện sẵn được cung cấp cho các mô hình
9M,136M,270M - Trong notebook phân tích hành vi mô hình, có thể thực hiện các phân tích như tính tỷ lệ thắng của mọi nước đi hợp lệ
Cài đặt và phụ thuộc
- Môi trường chạy yêu cầu Python 3.10
- Cài các phụ thuộc cần thiết bằng
pip install -r requirements.txt - Nếu có GPU, nên cài JAX có hỗ trợ CUDA để huấn luyện nhanh hơn
- Ví dụ dùng lệnh cài
jax[cuda12_pip]cho CUDA 12 - Phiên bản JAX phải khớp với bản cài CUDA đang dùng
- Ví dụ dùng lệnh cài
- Cần cài thêm các engine và công cụ bên ngoài
Đánh giá và cách dùng
- Huấn luyện cục bộ được chạy trong
srcbằngpython train.py- Checkpoint được lưu vào
/checkpoints/local
- Checkpoint được lưu vào
- Đánh giá puzzle được chạy theo dạng
python puzzles.py --num_puzzles 10 --agent=local - Các agent mà
puzzles.pyhỗ trợ gồm- Mô hình huấn luyện cục bộ:
local - Mô hình huấn luyện sẵn:
9M,136M,270M - Stockfish:
stockfish,stockfish_all_moves - Lc0:
leela_chess_zero_depth_1,leela_chess_zero_policy_net,leela_chess_zero_400_sims
- Mô hình huấn luyện cục bộ:
- Tính Elo bằng cách tạo ván với
python tournament.py --num_games=200, sau đó dùng BayesElo đọcdata/tournament.pgnđể tính toán
Giấy phép và giới hạn
- Phần mềm được phát hành theo Apache License 2.0
- Trọng số mô hình tuân theo giấy phép Creative Commons Attribution 4.0
- Một phần bộ dữ liệu tuân theo giấy phép public domain Creative Commons CC0 của lichess.org, phần còn lại tuân theo giấy phép CC-BY
- Bản phát hành được cung cấp theo nguyên tắc
"AS IS", không có bảo đảm rõ ràng hoặc ngụ ý - Dự án này không phải là sản phẩm chính thức của Google
1 bình luận
Các ý kiến trên Hacker News
Hơi lạc đề, nhưng tôi tò mò cờ vua máy tính ở mức không phải GM hiện đã tiến đến đâu
Có lúc tôi muốn chơi với đối thủ ngang trình mình, hoặc đối thủ có Elo cao hơn tôi khoảng 100 điểm để luyện tập
Phần lớn engine có thể được làm yếu đi bằng cách giảm độ sâu tìm kiếm, nhưng thường cách này không hoạt động tốt. Nếu giảm đủ nhiều thì rốt cuộc tôi cũng thắng được khoảng một nửa số ván, nhưng hầu hết ván đấu vẫn có cảm giác là tôi liên tục bị ép, rồi engine mắc một hai sai lầm lớn nên tôi thắng
Thứ tôi muốn là một đối thủ máy tính chơi ở mức tôi chọn, nhưng có cảm giác như một kỳ thủ người điển hình ở dải Elo đó. Tôi tự hỏi liệu có engine nào như vậy không
Đã có vài khoảnh khắc thực sự thấy “giống người”, chẳng hạn rơi vào những cái bẫy mà thuật toán tìm kiếm truyền thống sẽ dễ dàng tránh, nhưng con người thì có thể mắc phải
Không điều chỉnh được, nhưng có vài phiên bản với Elo khác nhau. Tuy vậy phạm vi không rộng lắm
https://www.maiachess.com/
https://lichess.org/@/maia1
Khi Elo của người chơi tăng lên, việc dự đoán nước đi tiếp theo trở nên khó hơn vì không chỉ phải chọn nước đi theo trực giác, mà còn phải mô hình hóa chính quá trình tìm kiếm
Cũng có thể huấn luyện chỉ bằng biên bản ván đấu của một người chơi cụ thể để cá nhân hóa hơn
Cách tiếp cận tương tự Maia nhưng dùng mạng nơ-ron khác, nên hiệu năng khớp nước đi tốt hơn một chút; tôi còn chồng thêm một thuật toán tối đa hóa kỳ vọng để bot khai thác sai lầm của tôi
Nếu không chơi đủ ổn định thì bạn chỉ thua thôi
Theo tôi thấy thì tính năng này có vẻ đã biến mất. Nó cho cảm giác mắc sai lầm rất giống con người khi chịu áp lực; khác với việc chơi như máy rồi ngẫu nhiên đi một nước ngớ ngẩn, đó là máy tính duy nhất khiến tôi cảm thấy như đang gặp một đối thủ thật
Cảm giác rằng đối thủ cũng chơi tốt nhưng nhìn chung tôi chơi nhỉnh hơn một chút nên thắng một cách xứng đáng là rất hiếm
Gần như lúc nào cũng trông như đối thủ thua hơn là tôi thắng. Đây không chỉ là vấn đề của AI
Nếu có thể tạo ra một AI trong trò chơi đối xứng biết thua theo cách khiến người thắng hài lòng, và cũng khiến việc thua trở thành một trải nghiệm học hỏi thỏa mãn, đó sẽ là một doanh nghiệp trị giá 1 tỷ đô la. Tôi nghĩ khó làm được nếu không có nghiên cứu tâm lý học nghiêm túc
Tôi đã có một bài trình bày về chủ đề này, và cũng viết lại nội dung bài nói thành bài viết[1]. Bài báo này là một ví dụ hay về chưng cất tri thức
Nó không hẳn là một bài báo về cờ vua, mà giống một bài báo cho thấy rằng với đầu vào được chuẩn hóa như cờ vua, một hàm tìm kiếm phi tuyến phức tạp do các chuyên gia tinh chỉnh có thể được chưng cất thành một mô hình Transformer gần như tuyến tính
[1]: https://hlfshell.ai/posts/deepmind-grandmaster-chess-without...
Vì vậy rất có thể thời gian là một yếu tố. Con người dễ bị rụng cờ do thiếu thời gian, hoặc mắc sai lầm khi còn ít thời gian
Việc nó học được một hàm đánh giá rất tốt dù không tìm kiếm vẫn rất ấn tượng. Nhưng tôi muốn họ loại các ván mà cơ chế dự phòng Stockfish đã kích hoạt ra khỏi phân tích. Với con người, chiếu hết sau 2 nước và chiếu hết sau 10 nước là khác biệt giữa thắng và hòa/thua xét theo khía cạnh thua vì hết giờ
Tôi cũng muốn thấy một cuộc đối đầu trực tiếp với Stockfish bị giới hạn độ sâu tìm kiếm. Khi đó có lẽ có thể ước lượng đại khái hàm đánh giá này đã chưng cất được bao nhiêu phần của cây tìm kiếm
Với ai muốn nhập môn mạng nơ-ron cho cờ vua, tôi rất khuyến nghị kho này: https://github.com/sgrvinod/chess-transformers
Mã PyTorch dễ đọc, theo cách triển khai điển hình, và kiến trúc cũng tương tự các mạng nơ-ron cờ vua đang có hiệu năng tốt hiện nay
https://lczero.org/blog/2024/02/how-well-do-lc0-networks-com...
Đây là bài viết của các tác giả engine cờ vua mạng nơ-ron hàng đầu về bài báo DeepMind này
Bộ dữ liệu tổng hợp khổng lồ dùng để huấn luyện rốt cuộc được tạo ra bằng rất nhiều tìm kiếm truyền thống. Vì vậy có chút buồn cười, nhưng dù sao vẫn rất hay
Tôi nhớ GM kiêm tác giả cờ vua Matthew Sadler đã cấu hình Leela Zero cho các ván luyện tập gần như chỉ chơi bằng trực giác, với rất ít hoặc hoàn toàn không có tìm kiếm
Thường thì ông ấy thắng, nhưng không phải lúc nào cũng vậy. Có lẽ chuyện này nằm trong The Silicon Road to Chess Improvement
Nếu chạy Stockfish trên mọi vị trí bàn cờ của mọi ván đấu để tạo dữ liệu huấn luyện, chẳng phải cuối cùng là đang mã hóa cây tìm kiếm vào mô hình Transformer sao?
Khi đó, càng tăng số lượng tham số của mô hình thì càng chứa được nhiều cây tìm kiếm hơn và hiệu năng sẽ tốt hơn, nhưng điều đó trông không mấy thú vị
Kho lưu trữ này cung cấp phần triển khai cho bài báo của chúng tôi Grandmaster-Level Chess Without Search: https://arxiv.org/abs/2402.04494
Những đột phá gần đây trong học máy chủ yếu đến từ quy mô, tức các kiến trúc dựa trên attention cỡ lớn và các bộ dữ liệu ở quy mô chưa từng có. Bài báo này khảo sát tác động của huấn luyện quy mô lớn trong cờ vua
Khác với các engine cờ vua truyền thống dựa vào heuristic phức tạp, tìm kiếm tường minh, hoặc kết hợp cả hai, chúng tôi huấn luyện có giám sát mô hình Transformer 270 triệu tham số trên bộ dữ liệu 10 triệu ván cờ vua
Mỗi bàn cờ trong bộ dữ liệu được gán nhãn giá trị hành động do engine Stockfish 16 mạnh mẽ cung cấp, tạo thành khoảng 15 tỷ điểm dữ liệu
Mô hình lớn nhất đạt Lichess blitz Elo 2895 khi đấu với người, và giải được các câu đố cờ vua khó mà không cần tinh chỉnh chuyên biệt theo miền hay thuật toán tìm kiếm tường minh
Ngoài ra, nó vượt qua mạng chính sách và giá trị của AlphaZero không dùng MCTS cũng như GPT-3.5-turbo-instruct. Kết quả khảo sát có hệ thống về kích thước mô hình và bộ dữ liệu cho thấy năng lực cờ vua mạnh chỉ xuất hiện khi đạt đủ quy mô. Chúng tôi cũng thực hiện nhiều thí nghiệm ablation trên các lựa chọn thiết kế và siêu tham số
Sẽ thật tốt nếu có một engine suy nghĩ giống con người hơn. Cách này dùng biên bản ván cờ có chú thích của Stockfish, nên về cơ bản có lẽ nó sẽ suy nghĩ giống máy tính
Nếu nó suy nghĩ như con người, trong phần review ván đấu, nó sẽ rất hữu ích khi chỉ ra ở từng vị trí cần nhìn vào điều gì, phù hợp với Elo của tôi
Magnus Carlsen phi thường vì, so với máy tính, anh ấy đã đạt tới trình độ cờ vua hiện tại dưới những ràng buộc khổng lồ về thời gian và tính toán. Hiệu quả học tập của anh ấy là phi thường so với bất kỳ engine cờ vua nào
Cảm giác giống một chương trình demoscene. Thực tế cũng tồn tại chương trình cờ vua 1KB hoạt động được
Nếu giải hoàn toàn cờ vua thì sẽ tạo ra một cây hiện quá lớn để tính toán. Tôi nhớ đại khái là khoảng 10^80, nhưng có thể sai
Nếu gán nhãn thắng/thua/hòa cho cây đó, ta có thể có một người chơi tối ưu mà không cần tìm kiếm
Hai cách tiếp cận hiển nhiên để nén và tối ưu hóa là xấp xỉ cây, hoặc xấp xỉ các nhãn. Hai cách này hoạt động tốt đến đâu phụ thuộc rất nhiều vào cấu trúc của cây
Kết quả này dường như cho thấy, hơn là sức mạnh tuyệt đối của bản thân cách tiếp cận học, việc cây trò chơi cờ vua phù hợp với hai cách tiếp cận này đến mức nào. Kết luận tôi rút ra là có thể tạo một xấp xỉ hợp lý của cây đó bằng dữ liệu cỡ 270 triệu từ
Cờ vua đã được giải khi trên bàn còn 7 quân bằng cơ sở dữ liệu 18,4TB, được giải thích ở đây: https://lichess.org/@/lichess/blog/7-piece-syzygy-tablebases...