Skip to content
Pikafish: Hướng dẫn đầy đủ về engine cờ tướng mạnh nhất

Pikafish: Hướng dẫn đầy đủ về engine cờ tướng mạnh nhất

Pikafish là gì, mạnh đến đâu, và cách cài đặt, cấu hình cũng như đọc hiểu nó

Matthew Leroy10 min

Pikafish là gì?

Pikafish là một engine cờ tướng miễn phí và mã nguồn mở: một chương trình nhận vào một thế cờ và trả về nước đi mà nó cho là tốt nhất, kèm theo một đánh giá bằng số cho biết bên nào đang ưu thế. Bản thân nó không có giao diện. Nó là một lõi tính toán trò chuyện với chương trình đồ họa qua các lệnh văn bản, giống như động cơ nằm dưới nắp ca-pô. Thiết kế này là có chủ đích: khi tách engine khỏi giao diện, cùng một lõi có thể vận hành một bàn phân tích trên máy tính, một ứng dụng điện thoại hay một trang web. Pikafish trở thành engine tham chiếu của thế giới cờ tướng vì đúng những lý do đã đưa Stockfish lên vị trí đó trong cờ vua: nó mạnh hơn các phần mềm thương mại, hoàn toàn miễn phí, và mã nguồn công khai nên ai cũng kiểm chứng được nó làm gì. Nếu bạn muốn bức tranh tổng thể về việc máy tính đã thống trị cờ tướng ra sao, bài tổng quan các engine AI cờ tướng của chúng tôi kể toàn bộ lịch sử; bài này chỉ tập trung vào chính Pikafish.

Pikafish đến từ đâu? Dòng dõi Stockfish

Pikafish là một sản phẩm phái sinh của Stockfish, engine cờ vua mã nguồn mở đã thống trị cờ vua máy tính hơn một thập kỷ. Thay vì viết lại thuật toán tìm kiếm từ đầu, các tác giả lấy phần tìm kiếm đã được kiểm chứng của Stockfish — phần quyết định nhánh nào trong cây nước đi đáng khai thác và nhánh nào có thể cắt bỏ an toàn — rồi điều chỉnh nó cho một trò chơi có bàn cờ 9x10, có sông, có cung, và những quân cờ chẳng hành xử giống bất kỳ quân cờ vua nào. Phần đánh giá thì phải xây lại hoàn toàn, bởi biết rằng xe mạnh trên cột mở chẳng nói lên điều gì về giá trị của một khẩu pháo cần ngòi mới ăn được quân. Dòng dõi đó giải thích nhiều thứ: ngôn ngữ lệnh, các tùy chọn cấu hình, quy ước phát hành và giấy phép đều đến từ họ Stockfish. Nó được phát hành theo GPL v3, nghĩa là tự do sử dụng và sửa đổi, nhưng mọi sản phẩm phái sinh cũng phải công bố theo cùng điều khoản.

Pikafish thực sự mạnh đến đâu?

Rất mạnh — mạnh đến mức câu hỏi làm sao thắng nó không còn câu trả lời nghiêm túc. Trên phần cứng hiện đại thông thường, với vài giây mỗi nước, Pikafish chơi vượt xa trình độ của những Đại kiện tướng mạnh nhất. Nó không đi nhầm, không mệt mỏi, tính các chuỗi ép buộc sâu hơn mức bất kỳ ai giữ được trong đầu, và đánh giá các thế cờ yên tĩnh với độ nhất quán mà không kỳ thủ nào duy trì nổi suốt một ván dài. So sánh đáng quan tâm không phải người với máy, mà là engine dùng để làm gì. Một người chơi trình 1400 chẳng thu được gì khi biết thế cờ đang thua hai điểm; điều họ cần là hiểu nước nào đã tạo ra vấn đề. Vì vậy sức mạnh thô của engine ít quan trọng hơn nhiều so với cách bạn dùng nó. Bài viết của chúng tôi về hệ số Elo trong cờ tướng đặt lại thang điểm của con người vào đúng bối cảnh, và cho thấy khoảng cách giữa một người chơi câu lạc bộ và một Đại kiện tướng còn nhỏ hơn khoảng cách giữa Đại kiện tướng và engine.

NNUE là gì, và tại sao Pikafish cần một tệp riêng?

NNUE là viết tắt của mạng nơ-ron cập nhật hiệu quả, và đó chính là phần trong Pikafish đảm nhiệm việc đánh giá thế cờ. Các engine cổ điển đánh giá bằng những quy tắc viết tay: xe đáng bấy nhiêu, tốt qua sông được bảo vệ đáng bấy nhiêu, tướng lộ thì bị trừ điểm. NNUE thay bảng điểm viết tay đó bằng một mạng nơ-ron nhỏ được huấn luyện trên hàng triệu thế cờ, nắm bắt được những tinh tế mà không ai diễn đạt nổi thành quy tắc. Chữ hiệu quả mới là mấu chốt: mạng được thiết kế sao cho khi một quân di chuyển, chỉ một phần nhỏ phép tính phải làm lại — chính điều đó khiến nó đủ nhanh để chạy hàng triệu lần mỗi giây. Trên thực tế, mạng này nằm trong một tệp riêng biệt, thường có tên đại loại như pikafish.nnue. Bản thân tệp thực thi của engine không chứa nó. Đây là nguồn nhầm lẫn phổ biến nhất với người mới, và cũng là nội dung của phần tiếp theo.

Tải và chạy Pikafish như thế nào?

Pikafish được phát hành dưới dạng tệp thực thi đã biên dịch trên kho mã công khai github.com/official-pikafish/Pikafish, với bản dựng cho Windows, Linux, macOS và Android. Mỗi phiên bản thường có vài biến thể, đặt tên theo tập lệnh của bộ xử lý — avx2, bmi2, vnni và tương tự. Đó không phải các engine khác nhau; đó là cùng một chương trình được biên dịch để tận dụng những tính năng vi xử lý mới hơn hoặc cũ hơn. Hãy chọn bản mới nhất mà máy bạn hỗ trợ; nếu nó không khởi động được và báo lỗi lệnh không hợp lệ, hãy lùi xuống bản dè dặt hơn. Bản phát hành đã kèm sẵn tệp mạng NNUE, nên tải về theo cách thông thường thì không cần thêm bước nào. Bạn chỉ phải tự lấy tệp mạng khi biên dịch từ mã nguồn: khi đó nó nằm ở kho Networks và cần đặt cạnh tệp thực thi. Lỗi này cũng không hề mơ hồ: engine không nạp được tệp mạng sẽ in ra đường dẫn nó đã thử cùng URL tải về, rồi thoát — nó không bao giờ chạy tiếp mà đi cờ yếu. Cuối cùng, nhớ rằng tệp thực thi không có cửa sổ và không có bàn cờ: bạn cần một giao diện đồ họa nói cùng giao thức để thực sự dùng được nó.

Cấu hình Pikafish sao cho đúng?

Ba thiết lập chiếm gần như toàn bộ khác biệt trong thực tế. Threads cho engine biết dùng bao nhiêu nhân xử lý. Nhiều luồng hơn nghĩa là xét được nhiều thế cờ hơn mỗi giây, nhưng chừa lại ít nhất một nhân sẽ giữ máy phản hồi mượt; đặt cao hơn số nhân thật chỉ làm chậm đi. Hash là bộ nhớ engine dùng để ghi nhớ các thế cờ đã đánh giá, tính bằng megabyte. Quá ít thì nó tính đi tính lại mãi cùng một thứ; quá nhiều thì nó tranh tài nguyên với phần còn lại của hệ thống. Vài trăm megabyte là thoải mái để phân tích trên một máy tính bình thường. Thiết lập thứ ba thực ra không phải thiết lập: đó là bạn cho nó bao nhiêu thời gian suy nghĩ. Sức mạnh tăng theo thời gian nhưng lợi ích giảm dần — bước nhảy từ một giây lên mười giây là rất lớn, từ mười lên một trăm thì nhỏ hơn nhiều. Để nghiên cứu ván cờ của chính mình, vài giây mỗi thế cờ là quá đủ. Chính những đánh đổi đó, áp dụng cho đối thủ thay vì cho phân tích, là điều chúng tôi mô tả trong cách chúng tôi cân bằng độ khó của bot.

Đọc hiểu những gì Pikafish nói ra sao?

Engine xuất ra một dòng thông tin liên tục, và ba con số là đáng quan tâm. Đánh giá được biểu thị theo đơn vị tốt, nhìn từ phía bên đang đi: điểm dương nghĩa là bên đi quân đang ưu thế, điểm quanh không nghĩa là cân bằng. Giá trị cỡ +1 tương đương ưu thế của một con tốt lành lặn, chứ không phải một ván thắng chắc. Độ sâu là số nửa nước nó đã tìm kiếm; một đánh giá cao ở độ sâu thấp đáng tin ít hơn nhiều so với một đánh giá khiêm tốn ở độ sâu lớn. Biến chính là chuỗi nước đi mà engine cho là tốt nhất cho cả hai bên, và đó là phần bổ ích nhất: đánh giá cho biết rằng có gì đó sai, biến chính cho biết tại sao. Người mới chỉ đọc con số; người tiến bộ thì đọc cả dòng nước đi. Nếu ký hiệu trong những dòng đó còn xa lạ, hướng dẫn về ký hiệu cờ tướng của chúng tôi giải thích các hệ thống đang được dùng.

Dùng engine để tiến bộ — và ranh giới nằm ở đâu

Engine là một cỗ máy trả lời không khoan nhượng, điều đó khiến nó vừa là người bạn học tốt nhất vừa là tệ nhất. Cách làm hiệu quả là phân tích chính ván cờ của bạn sau khi đã chơi xong, và hãy nghĩ trước khi nhìn: tự đưa ra phán đoán về thời điểm ván cờ xoay chiều, rồi mới kiểm chứng. Khi engine bất đồng với bạn, chính sự bất đồng đó là bài học. Cách làm vô ích là bấm lướt qua ván cờ và ngắm thanh đánh giá nhấp nhô: cảm giác như đang học mà chẳng học được gì. Dưới khoảng 2000, phần lớn thất bại đến từ những đòn chiến thuật bạn tự tìm ra được nếu kỷ luật hơn, chứ không phải từ những tinh tế chỉ engine mới chỉ ra — hướng dẫn tiến bộ trong cờ tướng của chúng tôi đề xuất một lộ trình hiệu quả hơn. Và một điều hiển nhiên nhưng vẫn cần nói: dùng engine hỗ trợ trong lúc đang đánh trực tiếp với người khác là gian lận, trên mọi nền tảng nghiêm túc và trong mọi liên đoàn. Engine là để dùng sau ván cờ, hoặc cho những thế cờ không ai đang chơi.

Dùng Pikafish mà không cần cài gì cả

Nếu tất cả những gì bạn muốn là một engine mạnh phân tích thế cờ, bạn không cần cài đặt bất cứ thứ gì. Xiangqi One chạy Pikafish trực tiếp, dạng native trong ứng dụng di động và biên dịch sang WebAssembly trong trình duyệt, nên việc phân tích diễn ra ngay trên thiết bị của bạn, không cài đặt, không phải tải tệp mạng, không cấu hình. Bạn mở bàn cờ, đi lại một ván, và nhận đúng những đánh giá đã mô tả ở trên, ở độ sâu tùy theo mức kiên nhẫn của bạn. Các bot bạn đối đầu dùng chung lõi đó, được kìm hãm có chủ ý để tạo ra những đối thủ ở trình độ thực sự đáng chơi — lý lẽ đằng sau nằm trong cách chúng tôi cân bằng độ khó của bot. Để phân tích một thế cờ hay chơi với một đối thủ đã hiệu chỉnh ngay bây giờ, hãy mở Xiangqi One. Để nắm bức tranh rộng hơn về các engine và cách máy tính thay đổi trò chơi này, hãy đọc tiếp tổng quan các engine AI cờ tướng hoặc xem chuyên mục engine.

Đọc tiếp