HN divulgado: conexão de GPU virtual via TCP
(thundercompute.com)- Ao contrário de CPU, armazenamento, rede e memória, a GPU ainda não foi virtualizada como um recurso abundante, e a Thunder Compute quer resolver isso na camada de sistema
- O foco em ampliar a oferta não está apenas em fabricar mais chips, mas em usar melhor, via software, as GPUs que já foram implantadas
- Enquanto as otimizações existentes ficaram na camada de workload, como batching de inferência ou enfileiramento de jobs de treinamento, a virtualização de GPU mira uma área de sistema relativamente menos explorada
- É possível usar uma NVIDIA H100 a partir de US$ 1,38 por hora no VS Code, CLI e navegador, com promessa de 80% de economia frente à AWS, sem contrato, sem custo de egress e com armazenamento escalável
- Após 4 anos em modo stealth, a empresa criou um protótipo de pesquisa e quer implantar melhorias de capacidade de GPU em datacenters por meio de sua própria nuvem e de parceiros corporativos
Melhorando a baixa utilização com virtualização de GPU
- A Thunder Compute avalia que vários recursos escassos da computação acabaram se tornando abundantes, mas que as GPUs ainda não passaram pela mesma transição
- Tornar GPUs abundantes não depende apenas de produzir mais chips, mas também de software para usar melhor os chips já implantados
- Hoje, as GPUs muitas vezes não são plenamente aproveitadas, e as soluções existentes se concentram principalmente na camada de workload
- Batching de requisições de inferência
- Enfileiramento de jobs de treinamento em várias frotas de servidores
- CPU, armazenamento, rede e memória já têm virtualização amplamente difundida, mas as GPUs ainda não alcançaram o mesmo nível
- Tratar essa lacuna na camada de sistema é a abordagem central da Thunder Compute
Abordagem do produto e plano de implantação
- A Thunder Compute se apresenta como um laboratório de sistemas com foco comercial, buscando levar pesquisas recentes em virtualização de GPU para ambientes de produção
- A equipe é descrita como formada por especialistas em infraestrutura e pesquisadores de sistemas vindos de Citadel Securities, Aquatic e AWS
- Após 4 anos em modo stealth, criou um protótipo de pesquisa e agora está implantando os resultados por meio de sua própria nuvem e de parceiros corporativos
- Segundo a descrição do produto, uma NVIDIA H100 pode ser usada a partir de US$ 1,38 por hora
- Acesso por VS Code, CLI e navegador
- Promessa de 80% de economia em relação à AWS
- Sem contrato, sem custo de egress e com armazenamento escalável
- O objetivo é melhorar gradualmente a capacidade de GPU dos datacenters
1 comentários
Opiniões no Hacker News
Bem interessante. Um tempo atrás, precisei de GPU-over-IP apenas para transcodificação de vídeo
Meu servidor de homelab tinha uma GPU AMD fraca, que derrubava o kernel sempre que eu tentava codificar vídeo, enquanto meu PC de jogos tinha uma NVIDIA RTX 3080. Então criei https://github.com/steelbrain/ffmpeg-over-ip, rodei o servidor na máquina Windows e o cliente no servidor de mídia (Plex, Emby, Jellyfin etc.), e funcionou perfeitamente
https://gist.github.com/tzmartin/88abb7ef63e41e27c2ec9a5ce5d...
https://news.ycombinator.com/showhn.html
https://news.ycombinator.com/item?id=22336638
Também fico curioso se há usos para GPU-over-network além de codificação de vídeo. Com a latência maior, imagino que machine learning ou tarefas graficamente intensivas fiquem difíceis
Se isso opera na fronteira CPU/GPU, fico confuso se não haveria um enorme gargalo de I/O em datasets que não cabem na VRAM
Posso estar entendendo errado como funciona, mas, se ele intercepta a entrada/saída da GPU, isso significaria ter que transmitir o dataset inteiro para a máquina remota a cada época, o que soa desperdício
O desempenho de inferência do BERT pode ser visto aqui: https://youtu.be/qsOBFQZtsFM?t=69
Treinamento tem mais overhead do que inferência, e estamos implementando otimizações adicionais para chegar mais perto do desempenho nativo
Para quem está curioso sobre como isso realmente funciona, parece ser uma arquitetura que injeta uma biblioteca no processo, faz hooking destas funções[1] e as encaminha para o serviço
[1] https://pastebin.com/raw/kCYmXr5A
ld/lddque indique quais símbolos estão sendo rebindingTambém achei que, para um símbolo ser rebinding, ele precisaria ser um símbolo fraco, mas a NVIDIA dificilmente exporia símbolos fracos; então suponho que isso seja, na prática, uma abordagem de LD_PRELOAD
Interessante, mas o que me interessa mais é self-hosting. Já tenho várias GPUs; algumas estão rodando e outras ficam ociosas
Gostaria de saber se existe uma opção de self-hosting para usar as GPUs que já possuo
Benefícios como agendamento eficiente de jobs, compartilhamento de GPU e facilidade de uso também se aplicam diretamente a ambientes self-hosted. Estamos bastante abertos a essa possibilidade no futuro
Não entendi muito bem. Você pode simplesmente subir a instância GPU que quiser no ECS; não sei por que subiria uma instância no ECS para usar as GPUs de vocês a partir do ECS
Separadamente, também não vejo por que alguém iria querer usar um Nitro meia-boca em vez do Nitro de verdade
Se você está desenvolvendo algo que precisa de GPU, normalmente precisa pagar por todo o tempo em que a instância fica ligada. Com o Thunder, você paga apenas enquanto está realmente usando a GPU. Quando está rodando só código de CPU, não há custo de tempo de GPU. A alternativa é ligar e desligar instâncias manualmente, o que pode ser trabalhoso
Também é fácil escalar o tipo e a quantidade de GPUs que você usa. Por exemplo, se estiver desenvolvendo em uma instância T4 barata e quiser rodar um job completo de treinamento de deep learning em 8 A100, pode executar um único comando e rodar imediatamente nas GPUs mais fortes, sem trocar de instância nem reconfigurar o ambiente
Você pode desenvolver sem GPU e, de repente, anexar uma GPU ao rodar uma simulação, e imagino que seja muito mais barato que a AWS. Essencialmente, parece resolver de uma forma mais genérica o problema que o Ray (https://www.ray.io/) resolve. Também pode permitir compartilhamento de GPU mais granular, como meia GPU, então estou bem empolgado
Como há bastante interesse nisso, decidimos abrir instâncias T4 gratuitamente. Seria ótimo se vocês testassem e contassem o que acharam
Legal. Fico curioso se daria para fazê-lo funcionar também com MIG ou vGPU
Um dos nossos principais objetivos no futuro próximo é permitir compartilhamento de GPU. Como vamos permitir que os usuários usem toda a memória da GPU, em vez de limitá-los a uma parte da memória, isso pode ser melhor que MIG ou vGPU
Fico curioso para saber como é usar isso de verdade com throughput significativo. Dá para usar em quebra de hashes?
Sempre que penso em uma GPU virtual pela rede, me vem à mente uma botnet. Especialmente o trecho em https://www.hpcwire.com/2012/12/06/gpu_monster_shreds_passwo... em que “Gosney primeiro teve que convencer o professor Amnon Barak, cofundador do Mosix, de que não estava ‘tentando transformar o mundo em uma botnet gigante’”
Essa tecnologia tem aplicações interessantes para criar clusters muito flexíveis dentro de datacenters, e estamos explorando essa parte
Os engenheiros originais da SGI que desenvolveram o glx projetaram tudo com muito cuidado para usar os mecanismos do X11 no transporte de GPU, então era bem simples enviar um stream GL pela rede e renderizar na minha placa de vídeo
Era algo como “rodar no supercomputador no fim do corredor e renderizar na workstation”. O desenvolvimento recente de drivers parece não levar isso em conta, então geralmente isso já não é mais possível. Não sei o quanto era útil na prática. Normalmente, se você tinha uma boa placa de vídeo, também tinha uma boa CPU. Ainda assim, era divertido brincar com isso, e havia algo curiosamente atraente em um programa rodando na sala de máquinas obter gráficos acelerados. Uma vez consegui rodar glquake desse jeito
O simples fato de isso ser possível é impressionante, mas fico curioso sobre o que acontece quando a conexão de rede cai ou não é 100% estável
Pela minha experiência, drivers não reagem bem quando uma GPU local se comporta de forma minimamente estranha