1

Deeplearning do 0 em 1400 Linhas de Código - Linguagem Neve / Framework Frost

Olá, pessoal. Sou o criador da linguagem Neve e do framework de deep learning, Frost.

Construí isso principalmente por conta das dificuldades que os pesquisadores enfrentam quando querem implementar redes neurais. A primeira diz respeito a redes que exigem otimizações paralelas, como o Efficient Zero e os dataloaders do PyTorch. Eles são fortemente limitados pelo Global Interpreter Lock (GIL). Assim, exigem programação em C e o uso de uma trabalhosa interoperabilidade do Python com o C como contorno. O segundo motivo é para facilitar técnicas de fusão de kernels (kernel fusion), como o Flash Attention.

O projeto ainda é experimental (já me tomou 2 anos), mas já passou da metade do caminho para alcançar os objetivos mencionados.

A Neve possui paralelismo nativo, channels no estilo Go, e permite que você crie redes de forma totalmente em alto-nível, fazendo interface com kernels de GPU, ou usando interoperabilidade com C++.

Para demonstrar sua simplicidade e expressividade, coloquei todo o Frost em uma única página de código, misturado com o algoritmo de treinamento. O sistema completo de deep learning não passa de 1400 linhas de código (o carregamento de imagens, pool de memória de tensores na GPU e a função de print dos tensores estão em C++, mas também são compactos).

Treinei uma ResNet-18 no CIFAR-10 e comparei com o PyTorch. Todas as implementações alcançaram uma precisão semelhante. A implementação parcial com cuDNN na Neve é mais rápida que a do PyTorch. A Neve com kernels de GPU naive (ingênuos) ainda fica atrás, mas faltam algumas otimizações nesses kernels nas quais estou focado em trabalhar no momento.
Se você quiser ver como as escolhas de design funcionam na prática, o código de 1400 linhas está em neve_samples/all_in_one.nv (o GitHub não destaca a sintaxe, mas você pode configurar o seu editor para Python ou instalar a extensão de sintaxe da Neve).

-- Limitações

  • Você precisa de um Linux (ou rodar via Docker) para a Neve, e de uma GPU compatível com CUDA 12.3 para o Frost.
  • O garbage collector concorrente apresenta alguns crashes extremamente raros que ainda estou caçando.

--
Links

Carregando publicação patrocinada...