Como eu entendo o chamado Teste de Peixe , as pessoas escrevem patches e depois tentam os patches contra a versão atual do Stockfish. Se a nova versão tiver um desempenho melhor, ela será promovida para a versão principal; caso contrário, é rejeitado.
Pergunta: por que testar a versão atual do Stockfish? Já funcionou no passado, e o atual Stockfish é muito mais forte que o Stockfish com dois anos de idade. No entanto, também podemos ver limitações nessa abordagem. Embora o Stockfish agora seja capaz de destruir completamente outros motores tradicionais, também perdeu recentemente a superfinal do TCEC S15 contra Leela. Portanto, por que não testar cada nova versão contra Leela?
A resposta óbvia é que os recursos do Fishtesting vêm de CPUs, e Leela é péssima em CPU. No entanto, isso não deve ser fatal: pode-se dar mais tempo a Leela, por exemplo, com o Stockfish rodando 10s por jogo, dar Leela 100s por jogo ou o tempo que for necessário para obter a proporção de Leela na razão da superfinal. Isso certamente desacelerará o Fishtesting, mas, se levar a um motor que pode derrotar Leela em uma partida, ainda valerá a pena.
O objetivo do teste de peixe é testar se uma versão mais recente do Stockfish se tornou mais forte . A definição de mais forte é vencer a versão anterior.
Não sei ao certo como o teste de cada nova versão em um mecanismo como Leela ajudaria. Sua idéia pode estar aceitando apenas uma nova versão do Stockfish se ele apresentar um desempenho melhor contra Leela do que a versão anterior do Stockfish. Portanto, agora é garantido que cada versão do Stockfish jogue melhor contra Leela, mas não seja um jogador de xadrez melhor no geral. O motivo é que o Stockfish pode contar com certas características do jogo de Leela para ganhar mais jogos.
EDIT - Pensei em um exemplo que pode ajudar aqui. Suponha que você tenha sido avaliado em 1500 há alguns anos e agora tenha 1800. Se você jogou seu passado em uma partida, está claro que venceria. Mas, por uma questão de argumento, é possível que o seu eu de 1500 tenha um desempenho melhor contra Kasparov do que o seu eu atual de 1800. Talvez o eu de 1500 fosse menos conservador e assumisse muito mais riscos. Isso consegue derrotar Kasparov em um jogo raro, enquanto o seu eu atual de 1800 perdia todas as vezes (ainda assim, os jogos seriam um pouco mais próximos, em média).
fonte
Concordo principalmente com @inertialignorance, mas gostaria de esclarecer um pouco a posição.
Quando humano joga humano, o resultado de um jogo é relativamente sem sentido, dada a extrema variabilidade do jogo humano. (Usarei Kasparov x Deep Blue como exemplo dessa variabilidade - em um bom dia eu provavelmente poderia ter derrotado Kasparov no jogo que ele errou contra o DB.) Então, vamos ignorar a humanidade nisso e nos concentrar na máquina.
Máquinas jogam com um nível de habilidade muito mais consistente do que seres humanos. Portanto, um único jogo significa mais, e uma série de jogos significa muito. Portanto, faz sentido testar a melhoria proposta do Stockfish em uma máquina. Mas por que Stockfish?
Simplesmente porque não há como quantificar "faz melhor contra Leela" de maneira significativa. Poderia fazer melhor e ainda perder. Mas qual é o padrão para melhor, nesse caso? Como você prova que jogou melhor? Não vejo um padrão viável.
É muito mais simples provar que o Stockfish prime é uma melhoria em relação ao original do Stockfish simplesmente jogando um conjunto de jogos e contando os resultados.
Edward Deming sustentou que era de primordial importância escolher a métrica correta, porque você só sabe que melhora por causa do que mede. Então faça a pergunta: qual é o objetivo do processo? Por que você está propondo um patch para o Stockfish?
É realmente o objetivo final do patch vencer Leela? Ou é melhor fazer Stockfish jogar melhor xadrez? Eu diria que é o último. Derrotar Leela virá por conta própria se apenas o Stockfish continuar melhorando o suficiente.
Sim, um caminho de melhoria incremental para o Stockfish pode chegar a um platô. Mesmo assim, o único caminho verificável desse platô estará em fazer alterações nele que o tornem melhor. Se uma abordagem "atingir uma barreira", uma busca contínua por melhorias determinará outro caminho. Se um caminho alternativo proposto não pode superar o caminho atual, por que escolher?
fonte
Parece haver uma razão de hardware para não fazer essa alteração.
O principal problema com o uso de Leela como oponente sparring é que ele funciona melhor em GPU. É possível executar Leela na CPU, mas o desempenho de Leela sofre muito. O OP sugere conceder a Leela chances de tempo para compensar, mas as probabilidades de tempo não funcionam muito bem: o desempenho de Leela enfraquece tanto que as chances de tempo exigidas são opressivamente longas.
Para ter uma idéia do quanto Leela está mais fraca na CPU, podemos olhar para Leela na 12ª temporada do TCEC, quando ele não tinha suporte para GPU e rodava na CPU. Aqui está um exemplo de jogo jogado por Leela então . Se observarmos as velocidades alcançadas, são cerca de 1-3kn / s, ou 1000-3000 posições por segundo. Comparativamente, na última temporada 15, quando Leela estava rodando em GPUs poderosas, atingia cerca de 50kn / s ( jogo de exemplo ). Portanto, para poder testar o Stockfish contra o Leela em termos iguais, é necessário dar ao Leela cerca de 25x de chances de tempo. Se o Stockfish tiver um minuto, Leela precisará de 25 minutos.
No momento da redação deste artigo, o Fishtesting testa em dois controles de tempo: 10s + 0,1s / movimento e 60s + 0,6s / movimento (os patches que passam no primeiro teste de controle de curto tempo são promovidos para o mais longo e testados novamente. passe o segundo e depois se torne a versão "nova"). Com probabilidades de 25x, Leela precisa de 250s + 2,5s / movimento no primeiro controle e 1500s + 15s / movimento no segundo controle. A desaceleração é tremenda; efetivamente teríamos Leela tocando em controles rápidos de tempo e não em balas. O número de jogos que podem ser concluídos em unidade de tempo também diminuiria em cerca de 25x. O teste de peixes precisa regularmente de dezenas de milhares de jogos para testar cada patch; levar 25 vezes mais tempo para terminar cada teste parece inaceitavelmente lento.
Para adicionar combustível ao fogo, até onde eu sei, Leela tinha uma rede menor na temporada 12 - o desempenho das redes mais recentes poderia ser ainda mais lento no CPU agora.
É possível que um dia, se o Fishtesting fizer com que os recursos da GPU testem com Leela, ele possa mudar; no entanto, ainda não estamos nesse ponto.
Edit : Lc0-CPU está atualmente jogando no TCEC. Fica cerca de 5 knps. De acordo com algumas pessoas no bate-papo, o Lc0-CPU é modificado para reproduzir na CPU; sem modificação, é cerca de 80x mais lento do que na GPU. Portanto, há um custo real de hardware para usar o Lc0-CPU como um oponente de teste.
fonte
Inercial está correto. Devo também acrescentar que não havia um mecanismo de código aberto forte antes do LC0. Komodo e Houdini tiveram restrição de licenciamento.
fonte