
Honestamente, estou muito decepcionado com Habr. Por que ninguém destacou algo como ganhar uma abordagem de rede neural com um código totalmente
aberto , não é? E
dados de rede neural completamente abertos? De fato, bem, a DeepMind Technologies descreveu
como eles
ensinavam uma IA de xadrez jogando sozinha ... Só que agora o código está fechado lá, e o treinamento ocorreu nos clusters do Google, e não distribuídos na Nvidia Turing com
núcleos de tensor , como neste caso. Por que eu tenho que editar a
Wikipedia em inglês para chamar a atenção para isso?
Ok, algo que eu
fui longe demais com emoções, eu acho. (Ainda existe um link nos comentários que mencionam leela.) Este artigo é um experimento: uma maneira de me mostrar como meu outro
artigo , que é muito popular, na minha opinião, afetará isso.
A história começou quando atualizei minha antiga Nvidia Geforce GTX 770 para a RTX 2080 Ti. Bem, considerando
o custo, eu queria maximizá-lo. No começo, brinquei com o
Ray Tracing , li sobre como ele
funciona com o CUDA via
NVIDIA OptiX . Eu li sobre como uma pessoa conseguiu
usar núcleos RT para outros fins. Repetiu. Mas o número de comentários de que uma
jaqueta de couro se divorciava era tão grande que eu estava cansada de ler sobre isso. Especialmente considerando que sei que o rastreamento de caminho é o algoritmo mais importante da indústria de filmes e jogos, e essa não é a descoberta da Nvidia. Nem um pouco. Mesmo hardware.
Então eu decidi olhar para
NVENC . Eu sou geralmente um amante de brindes. Como se viu, havia muito disso neste codificador de hardware. Primeiro, o
artigo mais popular no Habr sobre o NVENC fala sobre como o
YourChief , armado com um depurador, conseguiu quebrar o limite do número de fluxos de codificação simultâneos para ele (e meu cartão, como se viu, pode ser
incrível ). Além disso, o patch, como geralmente acontece, muda apenas
alguns bytes .
Acontece que a tecnologia NvFBC (captura ultra-rápida de um quadro completo) também pode ser ativada na placa geforce, se você usar um patch mágico
na parte superior da estrutura do espelho, antes de ativar
essa tecnologia (o patch pode ser visto
aqui ).
Então eu queria uma cor de 30 bits no Photoshop. Repetindo o sucesso de outras pessoas, encontrei um byte que limitava o suporte ao OpenGL no modo de janela (como no DirectX nos modos de janela e de tela cheia e no OpenGL no modo de tela cheia, as cores de 30 bits funcionavam dessa maneira). E a Nvidia escreveu sobre isso, prometendo revelar o patch. Talvez isso seja uma coincidência, mas eles removeram
essa restrição na Gamescom 2019. Mas ainda
há suporte não oficial ao HDR10 + (metadados dinâmicos do HDR).
Então, agora chegou a hora do acelerador de matriz, acelerador neural, núcleos tensores, chame como quiser. Foi um pouco mais complicado. Direi imediatamente que adormeci uma palestra sobre a rede neural na universidade, então tive que descobrir. Mas depois de assistir a alguns
vídeos em que um homem gera milhares de pássaros para atravessar o Flappy Bird, e depois de algumas gerações esses pássaros passam por obstáculos como um relógio, fiquei inspirado na idéia. A questão era o que lançar. E então me lembrei de que o Google recentemente se vangloriou de que eles venceram seu
melhor jogador no Go com sua IA, o que era considerado impossível antes do uso de algoritmos "normais". Honestamente, ele adora o versionamento complexo do Google DeepMind. Bem, isto é, quem o inventou: AlphaGo Lee → AlphaGo Master → AlphaGo Zero → AlphaZero (o último já pode estar no xadrez, no shogov e no ir, e em geral, desde que eles implementaram um longo mecanismo para explicar as regras do jogo, poker pode ser adaptado). Estou ciente do pôquer, se é que não escrevo sobre ele, caso contrário, conheço você.
Minha pesquisa no Google "código fonte alphazero" não rendeu nada. Bem, isto é, eles não pensaram em abrir o código! Mas não pude acreditar. Bem, isto é, Elon Musk também defende o OpenAI (supostamente para que, quando a IA se desenvolver, ela seja mais estudada, ou algo assim, e mais livre de direitos autorais dos autores). E aqui no reddit me deparei com um
link . No entanto, algumas pessoas compassivas do DeepMind ainda decidiram fornecer parte do código-fonte, no entanto, imprimindo-o diretamente em um arquivo pdf. / facepalm
Bem, aqui eu
baixei imediatamente e a rede neural
daqui . E depois de brincar com ela, percebi que, por algum motivo, não joga xadrez. Levei cerca de 20 minutos para entender que ele joga, não xadrez, e outros 40 minutos para encontrar uma
versão para o xadrez. E aqui eu fiquei surpreso. Primeiro, eles já conseguiram implementar o back-end cuda com suporte para núcleos tensores da Nvidia, tanto para o jogo quanto para o treinamento (
voluntário e distribuído , além disso). Em segundo lugar, naquele momento eles tiveram um duelo com o Stockfish pelo 1º lugar no ranking do xadrez por computador! Não dormi meia noite, assistindo a super final do
TCEC e a rede neural venceu! Corri imediatamente para editar a Wikipedia, que naquela época tinha pouca informação, e no dia seguinte todo mundo escreveu sobre ela! Como se viu, durante o jogo leela usou apenas um monte de 2080 Ti e 2080, ou seja, meu cartão foi suficiente. Depois de baixar a rede neural a
partir daqui , lancei-a com bastante calma no meu computador! Bem, é claro, a rede neural me quebrou. Veja como configurá-lo.
Pessoalmente, eu realmente usei o shell explorer HIARCS Chess. Além disso, também dei às pessoas no Android para
testar leela no DroidFish. O Android usa uma rede destilada, mais simples e menor, mas ainda não fraca.
Em princípio, eu posso pintar as instruções de instalação com mais detalhes, adicionar links, escrever: =))
By the way, tal pergunta, alguém já ouviu falar sobre o uso não-padrão de NVENC e NVDEC? Parece que pode ser adaptado para acelerar operações matemáticas. Eu li sobre isso em algum lugar, mas não havia detalhes.