DeepSeek V3 detalhes do artigo: Como contornar o monopólio da CUDA!
Os dois modelos lançados recentemente pela DeepSeek, DeepSeek-V3 e DeepSeek-R1, alcançam um desempenho comparável ao de modelos semelhantes da OpenAI a um custo muito menor.
De acordo com relatos da mídia estrangeira, em apenas dois meses, eles treinaram um modelo de linguagem MoE com 671 bilhões de parâmetros em um cluster de 2.048 GPUs H800, o que é 10 vezes mais eficiente do que a melhor IA.
Esse avanço não foi obtido com o uso da CUDA, mas por meio de um grande número de otimizações refinadas e do uso da programação PTX (execução paralela de threads) do tipo assembly da NVIDIA.
DeepSeek foi forçada a seguir um caminho diferente da OpenAI e de outras empresas que dependem do poder de computação da força bruta sob restrições de hardware. Ela usou uma série de inovações tecnológicas para reduzir os requisitos de energia do modelo e, ao mesmo tempo, obter ganhos de desempenho.
Alguns comentários entusiasmados de internautas:
"Neste mundo, se há algum grupo de pessoas que seria louco o suficiente para dizer coisas como 'CUDA é muito lento!
Os geeks geniais ajustam o PTX para maximizar o desempenho da GPU
A NVIDIA PTX (Parallel Thread Execution) é uma arquitetura de conjunto de instruções intermediárias projetada especificamente para suas GPUs, situada entre linguagens de programação de GPU de alto nível (como CUDA C/C++) ou outros front-ends de linguagem e código de máquina de baixo nível (streaming assembly ou SASS).
O PTX é uma arquitetura de conjunto de instruções de baixo nível que apresenta a GPU como um dispositivo de computação paralela de dados, permitindo otimizações refinadas, como alocação de registros e ajuste de nível de thread/thread-bundle, que não são possíveis com linguagens como CUDA C/C++.
Quando o PTX é convertido em SASS, ele é otimizado para uma geração específica de GPUs NVIDIA.
Ao treinar o modelo V3, o DeepSeek reconfigurou a GPU NVIDIA H800:
Dos 132 núcleos do processador de fluxo, 20 foram alocados para comunicação entre servidores, principalmente para compactação e descompactação de dados, para romper o limite de conexão do processador e melhorar a velocidade de processamento das transações.
Para maximizar o desempenho, o DeepSeek também implementou algoritmos avançados de pipelining por meio de ajustes adicionais de nível de pacote de thread/thread de granulação fina.
Essas otimizações vão muito além do nível de desenvolvimento CUDA convencional, mas são extremamente difíceis de manter. No entanto, esse nível de otimização é exatamente o que demonstra plenamente os excelentes recursos técnicos da equipe do DeepSeek.
O documento V3 menciona especificamente detalhes sobre o PTX
Isso se deve ao fato de que, sob a dupla pressão da escassez global de GPUs e das restrições dos EUA, empresas como a DeepSeek tiveram que buscar soluções inovadoras.
Felizmente, eles fizeram avanços significativos nessa área.
Um desenvolvedor acredita que "a programação de baixo nível da GPU é a direção certa. Quanto mais otimização, menor o custo ou o orçamento de desempenho que pode ser usado para outros progressos sem gastos adicionais".
Esse avanço teve um impacto significativo no mercado, e alguns investidores acreditam que o novo modelo reduzirá a demanda por hardware de alto desempenho, o que pode afetar o desempenho das vendas de empresas como a NVIDIA.
No entanto, os veteranos do setor, incluindo o ex-CEO da Intel, Pat Gelsinger, acreditam que os aplicativos de IA podem fazer uso total de todo o poder de computação disponível.
Gelsinger vê esse avanço da DeepSeek como uma nova maneira de incorporar recursos de IA em dispositivos de baixo custo para o mercado de massa.
PTX e CUDA
Então, a chegada do DeepSeek significa que o desenvolvimento de LLM de ponta não precisa mais de clusters de GPU em grande escala?
Será que os enormes investimentos em recursos de computação pelo Google, OpenAIO Meta e a xAI acabam sendo desperdiçados? O consenso geral entre os desenvolvedores de IA é que esse não é o caso.
No entanto, é certo que ainda há um enorme potencial a ser explorado em termos de processamento de dados e otimização de algoritmos, e certamente surgirão métodos de otimização mais inovadores no futuro.
Com o modelo V3 do DeepSeek de código aberto, os detalhes são divulgados em detalhes em seu relatório técnico.
O relatório documenta as profundas otimizações subjacentes realizadas pelo DeepSeek. Em resumo, o grau de otimização pode ser resumido como "eles reconstruíram todo o sistema a partir do zero".
Como mencionado acima, ao treinar o V3 usando a GPU H800, o DeepSeek personalizou as unidades de computação principais da GPU (núcleos de multiprocessador de streaming, ou SMs) para atender a necessidades específicas.
Do total de 132 SMs, eles alocaram 20 especificamente para lidar com tarefas de comunicação entre servidores em vez de tarefas de computação.
Essa personalização é feita no nível PTX (execução de thread paralelo), que é o conjunto de instruções de baixo nível da GPU NVIDIA.
O PTX é executado em um nível próximo ao da linguagem assembly e permite otimizações refinadas, como alocação de registros e ajuste de nível de thread/thread-bundle. No entanto, esse controle fino é complexo e difícil de manter.
É por isso que os desenvolvedores geralmente preferem usar linguagens de programação de alto nível, como a CUDA, que oferece otimizações de desempenho suficientes para a maioria das tarefas de programação paralela e elimina a necessidade de otimizações de baixo nível.
No entanto, quando se trata de maximizar a eficiência dos recursos da GPU e atingir requisitos de otimização específicos, os desenvolvedores precisam recorrer ao PTX.
No entanto, as barreiras técnicas permanecem
A esse respeito, o usuário da Internet Ian Cutress disse: "O uso do PTX pelo Deepseek não elimina as barreiras técnicas do CUDA".
CUDA é uma linguagem de alto nível. Ela facilita o desenvolvimento de bibliotecas e interfaces com GPUs NVIDIA e oferece suporte ao desenvolvimento iterativo rápido.
A CUDA pode otimizar o desempenho por meio do ajuste fino do código subjacente (ou seja, PTX), e as bibliotecas básicas já estão completas. Atualmente, a maioria dos softwares em nível de produção é desenvolvida em CUDA.
O PTX é mais semelhante a uma linguagem de montagem diretamente compreensível para a GPU. Ela funciona em um nível baixo e permite a otimização em nível micro.
Se você optar por programar em PTX, isso significa que nenhuma das bibliotecas CUDA integradas mencionadas anteriormente poderá ser usada. Essa é uma tarefa muito tediosa que requer conhecimento profundo em questões de hardware e tempo de execução.
No entanto, se os desenvolvedores entenderem completamente o que estão fazendo, eles poderão, de fato, obter melhor desempenho e otimização no tempo de execução.
Atualmente, o principal elemento do ecossistema da NVIDIA ainda é o uso de CUDA.
Os desenvolvedores que desejam obter um desempenho extra de 10-20% ou eficiência energética de sua carga computacional, como empresas que implantam modelos na nuvem e vendem serviços de token, de fato otimizaram do nível CUDA para o nível PTX. Elas estão dispostas a investir tempo porque vale a pena no longo prazo.
Deve-se observar que o PTX geralmente é otimizado para um modelo de hardware específico e é difícil de ser transferido entre diferentes hardwares, a menos que a lógica de adaptação seja especialmente escrita.
Além disso, o ajuste manual do kernel de computação exige muita perseverança, coragem e uma capacidade especial de manter a calma, pois o programa pode apresentar um erro de acesso à memória a cada 5.000 ciclos.
É claro que, para os cenários em que a PTX é realmente necessária e para os desenvolvedores que são pagos o suficiente para lidar com esses problemas, expressamos nossa total compreensão e respeito.
Para todos os outros desenvolvedores, é recomendável continuar usando CUDA ou outras variantes avançadas baseadas em CUDA (ou MLIR).