Ketika saya memahami apa yang disebut Fishtesting , orang-orang menulis tambalan, kemudian mencoba tambalan tersebut terhadap versi Stockfish saat ini. Jika versi baru berkinerja lebih baik, itu dipromosikan menjadi versi utama; kalau tidak ditolak.
Pertanyaan: mengapa menguji versi Stockfish saat ini? Ini berhasil di masa lalu, dan Stockfish saat ini jauh lebih kuat daripada Stockfish berusia dua tahun. Namun, kita juga dapat melihat keterbatasan pada pendekatan ini. Meskipun Stockfish sekarang mampu menghancurkan mesin tradisional lainnya, ia juga baru-baru ini kehilangan TCEC S15 dangkal melawan Leela. Karena itu, mengapa tidak menguji setiap versi baru terhadap Leela?
Jawaban yang jelas adalah bahwa sumber daya Fishtesting berasal dari CPU, dan Leela buruk pada CPU. Namun itu tidak boleh berakibat fatal: orang hanya bisa memberi Leela lebih banyak waktu, misalnya dengan Stockfish berjalan pada 10 detik per game, berikan Leela 100 per game atau peluang waktu apa pun yang diperlukan untuk mendapatkan rasio Leela dengan rasio di superfinal. Ini tentu akan memperlambat Fishtesting, tetapi jika itu mengarah ke mesin yang dapat mengalahkan Leela dalam pertandingan, itu mungkin masih layak dilakukan.
Tujuan dari pengujian ikan adalah untuk menguji apakah versi baru dari Stockfish menjadi lebih kuat . Definisi yang lebih kuat adalah mengalahkan versi sebelumnya.
Saya tidak yakin bagaimana menguji setiap versi baru terhadap mesin seperti Leela akan membantu. Ide Anda mungkin hanya menerima versi baru dari Stockfish jika kinerjanya lebih baik terhadap Leela daripada versi sebelumnya dari Stockfish. Jadi sekarang setiap versi Stockfish dijamin akan bermain lebih baik melawan Leela, tetapi tidak dijamin menjadi pemain catur yang lebih baik secara keseluruhan. Alasannya adalah bahwa Stockfish dapat mengandalkan karakteristik tertentu dalam permainan Leela untuk memenangkan lebih banyak game.
EDIT - Saya memikirkan contoh yang mungkin membantu di sini. Misalkan Anda diberi nilai 1500 beberapa tahun yang lalu, dan sekarang Anda berusia 1800. Jika Anda memainkan diri Anda sebelumnya dalam pertandingan, jelas Anda akan menang. Tetapi demi argumen, mungkin saja 1500-an Anda akan bekerja lebih baik melawan Kasparov daripada 1800-an Anda saat ini. Mungkin 1500-diri itu kurang konservatif dan mengambil risiko jauh lebih besar. Ini berhasil mengalahkan Kasparov dalam permainan yang langka, sementara 1800 diri Anda saat ini akan kalah setiap waktu (namun rata-rata permainan akan sedikit lebih dekat).
sumber
Saya akan setuju dengan main dengan @inertialignorance tapi saya ingin sedikit memperjelas posisi.
Ketika manusia memainkan manusia, hasil dari satu permainan relatif tidak berarti, mengingat variabilitas yang ekstrim dari permainan manusia. (Saya akan menggunakan Kasparov v Deep Blue sebagai contoh dari variabilitas itu - pada hari yang baik saya mungkin bisa mengalahkan Kasparov dalam permainan yang ia lakukan terhadap DB.) Jadi mari kita abaikan manusia dalam hal ini dan berkonsentrasi pada mesin.
Mesin bermain pada tingkat keterampilan yang jauh lebih konsisten daripada manusia. Oleh karena itu satu permainan berarti lebih, dan serangkaian permainan sangat berarti. Jadi masuk akal untuk menguji peningkatan Stockfish yang diusulkan terhadap mesin. Tapi mengapa Stockfish?
Hanya karena tidak ada cara untuk mengukur "lebih baik melawan Leela" dengan cara yang berarti. Itu bisa berbuat lebih baik, dan masih kalah. Tapi apa standar untuk lebih baik, dalam hal ini? Bagaimana Anda membuktikannya bermain lebih baik? Saya tidak bisa melihat standar yang layak.
Jauh lebih sederhana untuk membuktikan bahwa Stockfish prima adalah peningkatan dari pada Stockfish yang asli hanya dengan memainkan serangkaian game dan menghitung hasilnya.
Edward Deming berpendapat bahwa sangat penting untuk memilih metrik yang benar, karena Anda hanya tahu Anda meningkat karena apa yang Anda ukur. Jadi ajukan pertanyaan: Apa tujuan dari proses ini? Mengapa Anda mengusulkan tambalan untuk Stockfish?
Apakah ini benar-benar tujuan akhir tambalan untuk mengalahkan Leela? Atau lebih tepatnya membuat Stockfish bermain catur yang lebih baik? Saya akan mengatakan itu yang terakhir. Mengalahkan Leela akan datang dengan sendirinya jika hanya Stockfish yang terus membaik.
Ya, jalur peningkatan tambahan untuk Stockfish bisa sampai ke dataran tinggi. Meski begitu, satu-satunya jalur yang dapat diverifikasi dari dataran tinggi itu akan terletak pada membuat perubahan padanya yang membuatnya lebih baik. Jika suatu pendekatan "menabrak tembok," maka pencarian berkelanjutan untuk perbaikan akan menentukan jalur lain. Jika jalur alternatif yang diusulkan tidak dapat mengalahkan jalur saat ini, mengapa memilihnya?
sumber
Tampaknya ada alasan perangkat keras untuk tidak melakukan perubahan ini.
Masalah utama dengan menggunakan Leela sebagai lawan sparring adalah Leela berjalan paling baik pada GPU. Dimungkinkan untuk menjalankan Leela pada CPU, tetapi kinerja Leela sangat menderita. OP menyarankan untuk memberikan peluang waktu Leela untuk mengkompensasi, tetapi peluang waktu tidak bekerja dengan baik: Kinerja Leela melemah sehingga peluang waktu yang dibutuhkan sangat panjang.
Untuk mendapatkan gambaran tentang seberapa lemah Leela pada CPU, kita dapat melihat Leela di musim 12 TCEC, ketika itu tidak memiliki dukungan GPU dan dijalankan pada CPU. Berikut ini contoh game yang dimainkan oleh Leela . Jika seseorang melihat kecepatan yang dicapai, itu sekitar 1-3kn / s, atau 1000-3000 posisi per detik. Relatif, di musim terbaru 15 ketika Leela berjalan pada GPU yang kuat, itu akan mencapai sekitar 50kn / s ( contoh game ). Oleh karena itu untuk dapat menguji Stockfish terhadap Leela dengan persyaratan yang sama, seseorang harus memberikan Leela peluang sekitar 25 kali. Jika Stockfish punya waktu satu menit, Leela perlu 25 menit.
Pada saat penulisan, Fishtesting menguji pada dua kontrol waktu: 10s + 0,1s / move, dan 60s + 0,6s / move (tambalan yang lulus pertama, tes kontrol waktu singkat dipromosikan ke yang lebih lama dan diuji lagi. Tambalan yang lulus yang kedua lalu menjadi versi "baru"). Pada odds 25 kali, Leela membutuhkan 250s + 2.5s / move di kontrol waktu pertama dan 1500s + 15s / move di kontrol waktu kedua. Perlambatan luar biasa; kami akan secara efektif membuat Leela bermain di kontrol waktu yang cepat dan bukan peluru. Jumlah game yang dapat diselesaikan dalam satuan waktu juga akan turun sekitar 25x. Fishtesting secara teratur membutuhkan puluhan ribu game untuk menguji setiap patch; mengambil 25x lebih lama untuk menyelesaikan setiap tes terdengar sangat lambat.
Untuk menambah bahan bakar ke api, sejauh yang saya tahu, Leela memiliki jaringan yang lebih kecil di musim 12 - kinerja jaring terbaru bahkan bisa lebih lambat pada CPU sekarang.
Mungkin suatu hari nanti, jika Fishtesting mendapatkan sumber daya GPU untuk diuji dengan Leela, itu mungkin akan beralih; namun kami belum sampai di situ.
Sunting : Lc0-CPU saat ini diputar di TCEC. Itu mendapat sekitar 5knps. Menurut beberapa orang dalam obrolan, Lc0-CPU dimodifikasi untuk diputar pada CPU; tidak dimodifikasi, ini lebih lambat 80x dari pada GPU. Oleh karena itu ada biaya perangkat keras nyata untuk menggunakan Lc0-CPU sebagai lawan pengujian.
sumber
Inersia benar. Saya juga harus menambahkan tidak ada mesin open source yang kuat sebelum LC0. Baik Komodo dan Houdini memiliki batasan lisensi.
sumber