Hardware usado no jogo AlphaZero vs Stockfish

22

Entendo que o AlphaZero precisa usar um tipo diferente de hardware que o Stockfish comum. Eu esperaria que o hardware tenha um grande efeito na força do motor. É por isso que me pergunto se houve alguma tentativa de fornecer hardware comparável a ambos. Além disso, o que "comparável" significaria aqui?

Li especificamente que as pessoas reclamam:

  • O bacalhau recebe apenas 1 GB de cache e
  • o limite de tempo de 1 min / movimento (como isso prejudicaria o Stockfish?)
user1583209
fonte
Tamanho do hash , não cache, aparentemente.
Federico Poloni
2
Eu sugiro fortemente que você faça isso em um fórum técnico (como o AI Stack Exchange , talvez intitulado "Justiça da avaliação em partidas do AlphaZero vs. Stockfish"), porque as respostas aqui não são boas.
precisa saber é o seguinte

Respostas:

20

É por isso que me pergunto se houve alguma tentativa de fornecer hardware comparável a ambos.

É sobre o Google que você está falando! Portanto, a resposta é obviamente "Não".

Do hardware de papel original usado para inicializar e treinar -

O treinamento prosseguiu por 700.000 etapas (mini-lotes de tamanho 4.096) a partir de parâmetros inicializados aleatoriamente, usando 5.000 TPUs de primeira geração (15) para gerar jogos de auto-reprodução e 64 TPUs de segunda geração para treinar as redes neurais

e hardware usado para os jogos -

O AlphaZero e o AlphaGo Zero anterior usavam uma única máquina com 4 TPUs Stockfish e Elmo jogados com seu nível de habilidade mais forte, usando 64 threads e um tamanho de hash de 1 GB.

Portanto, o AlphaZero usou hardware especial desenvolvido pelo Google. Utilizou Unidades de Processador Tensor (TPUs) especializadas em vez de Unidades Centrais de Processamento (CPU) gerais, como estão disponíveis comercialmente.

É assim que a Wikipedia descreve as TPUs de segunda geração que eles usaram -

O TPU de segunda geração foi anunciado em maio de 2017. O Google declarou que o design do TPU de primeira geração era limitado à largura de banda da memória e, ao usar 16 GB de memória de alta largura de banda no design da segunda geração, o aumento da largura de banda foi de 600 GB / se o desempenho foi de 45 TFLOPS. As TPUs são então organizadas em módulos de 180 chips TFLOPS de 4 chips

Eles usaram 4 TPUs para os jogos, portanto, um poder de processamento de 180 TFLOPS. Nota TFLOPS = 1000 bilhões de operações de ponto flutuante por segundo.

Para comparação, o chip mais poderoso e mais recente da Intel é o processador Core i9 Extreme Edition, com 1 TFLOP. O topo da linha I7 que você encontraria em uma máquina de jogos normalmente seria de cerca de 100 GFLOPs (ou seja, um décimo de um TFLOP).

Acho justo dizer que o AlphaZero estava usando um gorila de 800 libras de uma configuração de hardware em comparação com o mouse Stockfishes.

Brian Towers
fonte
1
FLOPS significa operações de ponto flutuante por segundo. Provavelmente a aritmética de ponto flutuante provavelmente não é usada nos algoritmos principais do Stockfish e AlphaZero. Portanto, o número de FLOPS não é realmente uma medida significativa da velocidade do processador relevante para o mecanismo de xadrez.
René Pijl
9
Pelo contrário, acredito que as redes neurais usam aritmética de ponto flutuante bastante intensamente. (Mas é claro que a sua observação faz todo o sentido e se aplica a Stockfish.)
Federico Poloni
3
Uma comparação muito mais adequada seria com uma GPU; o NVIDIA Tesla V100 pode fazer 120 TFLOPS, acima da geração anterior (P100), que fez apenas cerca de 20. As CPUs são otimizadas de maneira muito diferente das GPUs que produzem grandes volumes de números.
Nick T
12

Acho que é melhor elaborar seu segundo ponto com um exemplo de jogada no jogo 1 entre AlphaZero e Stockfish, que também serviu para satisfazer minha curiosidade hoje.

o limite de tempo de 1 min / movimento (como isso prejudicaria o Stockfish?)

O desempenho do Stockfish depende do tempo limite e da configuração do hardware; portanto, pense em quando alguém duplica os threads da CPU; o Stockfish precisa de menos tempo (não necessariamente a metade) para encontrar a solução do que faria na primeira configuração.

No primeiro relatório publicado no Chess.com, alguém afirmou que o Stockfish não estava sendo reproduzido da melhor maneira possível, porque ele não conseguiu reproduzir os mesmos resultados usando o mesmo Stockfish em seu computador. Ele disse que na posição abaixo (jogo 1 - jogada 11) Stockfish jogou Kg1-h1 (mudou seu rei), o que não fez nenhum sentido. Por outro lado, o bacalhau em seu computador mostrou um movimento mais desenvolvido como o Be3 (mova o bispo do quadrado escuro), vamos olhar para a posição:

Jogo 1 em movimento 11

Sim, foi um movimento passivo e parece que o Stockfish deveria ter desempenhado um movimento mais em desenvolvimento. Mas ele estava errado. Por quê? Como ele administrou o Stockfish por 15 segundos, e se ele o executasse por uma hora, ele teria Kg1-h1 como a melhor jogada nessa posição. O Stockfish muda sua decisão quando analisa todos os movimentos possíveis com mais profundidade. Aqui está o que eu disse originalmente na minha resposta :

Corri o último bacalhau na posição (no movimento 11):

  • No início, ele fornece b4 como o movimento ideal quando o motor está em funcionamento por cerca de um minuto. Depois disso, ele decide que o Be3 é melhor.
  • Mas, após 5 minutos no meu hardware que roda em 1.400k nós / s, ele decide usar o Kh1 como a melhor opção.

  • No artigo, é dito que o bacalhau calcula 70.000k de posições por segundo e é executado por 1 minuto por movimento, ou seja, cerca de 50 vezes o meu hardware, por isso deixarei o meu funcionar por 50 minutos ... Kg1-h1 ainda é o escolha para o Stockfish.

O prazo é a chave

No caso acima, provavelmente não importava muito se o Stockfish funcionasse duas vezes, porque a decisão seria a mesma, mas no próximo passo, definitivamente :

insira a descrição da imagem aqui

Nesta posição, o Stockfish optou por mover o peão no lado esquerdo ( a4-a5 ). Digamos que eu tenha um computador que execute o mecanismo Stockfish a uma velocidade de 1.400k nós por segundo, cerca de 50 vezes menor que o Stockfish no jogo real ( no documento , ele diz 70.000kn / s). Para simular o jogo, se eu o executar por 50 minutos a cada movimento. OK.

Fiz a análise do Stockfish na posição acima e obtive os seguintes resultados:

  • O Stockfish começou sugerindo algumas jogadas, mas após 6 minutos no meu computador (corresponde a 7,2 segundos no Stockfish no jogo real), ele preferiu o a4-a5 exatamente como o jogo foi .

Isso é bom, mas mantive-o funcionando por 50 minutos completos para alcançar os cálculos do Stockfish no jogo que foi permitido em 1 minuto:

A triste verdade é que acredito que o Stockfish perdeu todos os seus jogos por causa do prazo. O Stockfish recebe uma pesquisa e avaliação mais aprofundadas à medida que o tempo passa e, no jogo, não era permitido o uso de um livro de abertura, o que o leva a considerar muitos movimentos em profundidades rasas. Observe que no jogo real a4-a5 foi jogado, o que mostra que (supondo que ele pudesse avaliar 70 milhões de posições por segundo) o Stockfish no jogo não gastou mais de 21,6 segundos em movimento. Caso contrário, ele teria mudado sua decisão para esses três outros movimentos no jogo real. A razão para isso ainda não está clara para mim, pois meu Stockfish também estava consumindo menos memória (cerca de ~ 130 MB de RAM em comparação com 1 GB mencionado no artigo original , supondo que tudo isso vá para tabelas de hash).


Conclusão

O hardware que executava o Stockfish, como apontei, era no máximo 18 vezes mais rápido que o meu (atualização: em um único núcleo), com base na movimentação que analisei. Não tenho certeza se o AlphaZero poderia realmente usar esse hardware para treinar suas redes em 4 horas. Só posso assumir que é muito baixo para um jogo como o xadrez. Além disso, o AlphaZero passou essas horas aprendendo, o que também inclui a construção de aberturas sólidas (e, como o artigo indica, preferências em relação a determinadas aberturas). Por outro lado, o Stockfish foi deficiente em aberturas e não avaliou 70 milhões de posições por segundo durante 60 segundos em cada movimento.

Como nota final, todas as coisas que eu disse foram baseadas em minhas suposições. Claro, o resultado do AlphaZero e os jogos foram super interessantes para mim. No entanto, eu adoraria ver um jogo em que o jogo Stockfish era igual ao que recebo no meu computador também. Ou seja, mais tempo e um livro de abertura permitido. Também é fácil obter os resultados da análise do Stockfish a cada movimento, e eu desejo que eles a divulguem para mostrar o desempenho.

ReZzT
fonte
1
Em relação ao limite de tempo, a Figura 2 no artigo AlphaZero mostra o oposto: O bacalhau é melhor com orçamento mais baixo, mas piora quando há mais energia disponível. arxiv.org/pdf/1712.01815.pdf
old-ufo
1
@ old-ufo Obrigado por apontar isso. Como eu disse, o desempenho do Stockfish (e AlphaZero) depende do hardware e do prazo. Por exemplo, se dermos ao Stockfish mais hardware (e menos ao AlphaZero) e regenerarmos esse número, sua linha poderá ser transformada de forma que fique sempre acima da linha AlphaZero. Acho que esse é um bom ponto para comparar o hardware dos dois sistemas, o que também responde à pergunta principal.
ReZzT
4

Um dos autores originais do Stockfish responde às reclamações específicas que você mencionou aqui:

Enquanto isso, o Chess.com também recebeu um longo comentário de um dos autores originais do Stockfish, Tord Romstad, que apresentaremos na íntegra:

Os resultados da partida, por si só, não são particularmente significativos devido à estranha seleção de controles de tempo e aos parâmetros do Stockfish: os jogos foram disputados em um tempo fixo de 1 minuto / movimento, o que significa que o Stockfish não usa suas heurísticas de gerenciamento de tempo ( Foi feito um grande esforço para fazer o Stockfish identificar pontos críticos do jogo e decidir quando gastar algum tempo extra em um movimento; em um tempo fixo por movimento, a força sofrerá significativamente). A versão do Stockfish usada tem um ano, estava jogando com muito mais threads de pesquisa do que nunca recebeu uma quantidade significativa de testes e tinha tabelas de hash muito pequenas para o número de threads. Acredito que a porcentagem de empates teria sido muito maior em uma partida com condições mais normais.

Por outro lado, não há dúvida de que o AlphaZero poderia ter se saído melhor se mais trabalho tivesse sido colocado no projeto (embora as "4 horas de aprendizado" mencionadas no artigo sejam altamente enganosas quando você leva em consideração os enormes recursos de hardware usados durante essas 4 horas). Mas, de qualquer forma, Stockfish vs AlphaZero é uma comparação entre maçãs e orangotangos. Um é um programa de xadrez convencional rodando em computadores comuns, o outro usa técnicas fundamentalmente diferentes e é executado em hardware projetado personalizado que não está disponível para compra (e estaria fora do orçamento dos usuários comuns).

De outra perspectiva, o ângulo entre maçãs e orangotangos é a coisa mais empolgante: agora temos duas entidades artificiais extremamente diferentes (tanto no lado do hardware quanto do software) que exibem habilidades de jogo de xadrez super-humanas. Isso é muito mais interessante do que outro programa de xadrez que faz a mesma coisa que os programas de xadrez existentes, apenas um pouco melhor. Além disso, a adaptabilidade da abordagem AlphaZero a novos domínios abre possibilidades interessantes para o futuro.

Para jogadores de xadrez que usam programas de xadrez como ferramenta, é improvável que esse avanço tenha um grande impacto, pelo menos a curto prazo, devido à falta de hardware adequado a preços acessíveis.

Para programadores de mecanismos de xadrez - e para programadores em muitos outros domínios interessantes - o surgimento de técnicas de aprendizado de máquina que requerem recursos maciços de hardware para serem eficazes é um pouco desanimador. Em alguns anos, é bem possível que um programa de xadrez semelhante ao AlphaZero possa ser executado em computadores comuns, mas os recursos de hardware necessários para criá- los ainda estarão muito além do orçamento de entusiastas ou empresas de tamanho médio. É possível que um projeto de código aberto com uma grande rede distribuída de computadores administrada por voluntários funcione, mas os dias de centenas de mecanismos exclusivos de xadrez, cada um com suas peculiaridades e personalidades, desaparecerão.

Fonte: https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author

Xonatron
fonte
2

Seria necessário rodar em hardware comparável se o objetivo final do Google fosse construir um mecanismo de xadrez superior, mas esse exercício não era realmente sobre xadrez. O xadrez é apenas uma maneira conveniente de demonstrar a capacidade da IA ​​de aprender tarefas complicadas do zero. Se ele tiver um bom desempenho em relação a alguma configuração vagamente razoável do Stockfish, está marcada a caixa.

Prevejo que a equipe do Google não gastará muito mais esforço no xadrez; em vez disso, eles passarão para outros problemas que a IA nunca foi capaz de realizar.

T Scherer
fonte
Eu dei +1 porque tenho o mesmo sentimento.
SmallChess
Parece provável, embora eu duvide que eles o tivessem publicado, se o Alphazero tivesse perdido apenas uma pequena margem (o que significa que ainda teria força comparável à do bacalhau).
user1583209
@ user1583209 Eles provavelmente o executaram muitas vezes para descobrir a quantidade mínima de tempo de aprendizado necessária para esmagar o Stockfish. Então eles fizeram uma execução final e publicaram esses resultados.
T Scherer
1

Visite o Fórum da Talkchess para saber mais, é onde você encontrará cerca de 3000 programadores. Isso tudo foi uma farsa. O Alpha jogou em hardware 30 vezes maior que o SF, 4TPUs vs 64 núcleos. 4TPUs tem cerca de 1000 núcleos ou mais. Alpha simulou o livro de abertura, treinado em inúmeros jogos vencedores de GM. SF tinha muito pouco hash. O TC foi fixado em 1 minuto por jogada, o que é novamente prejudicial ao SF, que possui gerenciamento avançado de tempo. As TPUs não possuem as ineficiências do SMP com mais núcleos, portanto a vantagem do hardware foi ainda maior. Etc., etc., basicamente, esse foi apenas um grande golpe publicitário da parte do Google. Atualmente, o Alpha está em torno de 2800 em núcleo único, portanto, 400 elos abaixo do SF, e não avançará muito no futuro, pois, a partir de agora, precisará de uma avaliação avançada que não poderá descobrir. Em relação à questão de 4 horas, bem, LOL, isso foi há 48 horas, então agora o Alpha está em 5000 elo? Vamos.

Lyudmil Tsvetkov
fonte
5
Você parece acreditar que o AlphaZero faz a mesma coisa que o Stockfish, apenas 1000 vezes mais rápido porque usou hardware 1000 vezes mais forte. Isto não é verdade, de forma alguma. Ele usa uma abordagem muito diferente e essa abordagem consome muitos recursos. De fato, durante a partida, o AlphaZero avaliou 80 mil posições por segundo, enquanto o Stockfish estava com 70 milhões de posições por segundo. Agora me diga que o AlphaZero venceu por causa de um hardware mais forte. É claro que em CPU 64 seria mais lento e quem sabe como seria o desempenho, mas o ponto é que o AlphaZero faz isso melhor, embora a um custo mais alto.
IA Petr Harasimovic
3
O hardware SF custa menos de US $ 10k, o Alpha um mais que US $ 250k. Tire as conclusões você mesmo. Nps não têm sentido, e todo programador de xadrez sabe disso. Você pode fazer todos os tipos de truques para que os nps fiquem mais baixos, mas isso não significa que você jogará mais forte. Eu gostaria de vê-lo implementar essa abordagem no hardware SF e SF no hardware Alpha. Adivinha o resultado? +85 -0 = 15 para SF. Se eles são ótimos, publique seu código.
Lyudmil Tsvetkov
3
"Alpha simulou o livro de abertura, treinado em inúmeros jogos vencedores da GM." Livro de abertura simulado, sim, mas ele treinou nos jogos da GM? Você tem uma fonte para isso? Meu entendimento era que o Alpha foi totalmente inicializado.
Akavall
0

O Stockfish é restrito às CPUs, portanto nunca será capaz de escalar para o nível que as GPUs são capazes.

As GPUs dos cálculos da matriz Gor são escalonadas com n, enquanto as CPUs são escalonadas com n 3 , esses núcleos de tensores são otimizados ainda mais, por isso é provável um desempenho ainda melhor à medida que você escala.

Famous Jameis
fonte
-2

Primeiro parágrafo mais detalhes, segunda resposta curta e simples terceiro parágrafo minhas opiniões sobre a situação

Com o AlphaZero, o hardware tem 0 efeito na força do seu jogo. Pode levar mais tempo, mas não porque está pensando. É uma rede neural, o que significa que você alimenta as informações em um vetor (uma tabela de coluna única), faz cálculos simples através de um tensor gigante (uma tabela tridimensional ou mais) e, em seguida, fornece a resposta. O Stockfish precisa de tempo para ser bom, pois verifica as possíveis posições para ver se um movimento é benéfico; portanto, quanto mais tempo ele olha para o problema, mais posição / movimento ele pode verificar.

Não existe realmente uma configuração de hardware comparável. Por terem necessidades diferentes, o Stockfish precisa analisar mais posições, enquanto o AlphaZero só precisa fazer uma jogada. E as pessoas estão chateadas porque o computador do AlphaZero é tecnicamente muito mais poderoso e eles pensam que deveriam ser iguais nesse sentido. Mas o AlphaZero não precisa desse supercomputador após o treinamento.

Na minha opinião, não importa o que eles dêem a ambos os lados, a menos que o Stockfish tenha uma quantidade razoável de tempo, provavelmente amarrará mais alguns jogos, mas em geral um efeito semelhante ocorrerá. É por isso que penso que o Stockfish avalia inicialmente com peças e seus valores, enquanto o Alpha jogava (provavelmente) milhões de jogos para perceber o que é importante estrategicamente. É por isso que o Alpha economiza muito mais do que o Stockfish jamais faria, mas obtém enormes vantagens posicionais.

Ezecal
fonte
Isso está errado. AlphaZero faz pesquisa de árvore. Mais hardware o torna mais forte. E ele precisa de uma tonelada de hardware para funcionar melhor do que o bacalhau.
BlindKungFuMaster
Nada neste post está correto ...
SmallChess
Este sistema é baseado em três redes neurais e na pesquisa parcial de árvores de Monroe Carlo, para que você esteja correto usando a pesquisa de árvores. Durante o jogo, ele usa 2 princípios de rede neural desenvolvidos em alphago de valor e política. Go é um jogo que não pode ser feito via poder computacional, porque é astronomicamente mais complexo que o xadrez. Então, se eu acredito que precisa de mais poder computacional do que um algoritmo de força bruta, então você é ilusório. Ou perca informado. A terceira rede neural é usada para tentar otimizar o processo de aprendizado, adivinhando as mudanças na propagação de retorno. O poder Alphazeros está nas redes e não nos mcts.
Ezecal