- GPT-OSS-120B, um LLM open source da OpenAI, foi otimizado em ambiente de GPU NVIDIA para processar mais de 500 tokens por segundo
- Foram feitos testes paralelos com vários frameworks de inferência como TensorRT-LLM, vLLM e SGLang, com suporte às arquiteturas Hopper e Blackwell
- Corrigiram-se bugs de compatibilidade, integraram-se novidades como o formato de resposta Harmony, roteamento ciente do KV cache e decodificação especulativa baseada no Eagle, entre outras otimizações
- Depois de comparar Tensor Parallelism e Expert Parallelism, escolheu-se Tensor Parallelism para menor latência e o backend TensorRT-LLM MoE no Blackwell
- Há planos de otimizações futuras com maior desempenho, incluindo decodificação especulativa (Speculative) com modelos “draft” menores
Visão geral
- Quando o GPT-OSS-120B, o novo LLM open source da OpenAI, foi lançado, a Baseten buscou implementar desempenho de ponta
- A Baseten é a parceira oficial de lançamento da OpenAI
- Dados de usuários reais publicados pela OpenRouter comprovaram desempenho superior em ambiente baseado em GPUs NVIDIA em relação a terceiros
- Com o Flexible Inference Stack e a expertise da equipe de engenharia de modelos, patches de otimização foram aplicados rapidamente em ritmo de horas
- Em poucas horas de escrita do artigo, houve ainda aumento adicional de 100 tokens por segundo e manutenção de 100% de uptime
Esforços de otimização de desempenho
- Foram realizados testes e benchmarks em diversos frameworks de inferência, como TensorRT-LLM, vLLM e SGLang
- Em paralelo, garantiu-se compatibilidade com as arquiteturas de GPU Hopper e Blackwell
- Foi feita integração com componentes centrais como o Flexible Inference Stack da Baseten e NVIDIA Dynamo
- Aplicaram-se técnicas de otimização validadas continuamente, como roteamento ciente de KV cache e Speculative decoding (baseado em Eagle)
Abaixo estão as etapas principais para alcançar desempenho SOTA e suporte à janela de contexto completa
Etapa 1: Execução da inferência inicial
- O ponto de partida foi rodar a inferência inicial (baseline inference) o mais rápido possível, independentemente da abordagem
- Com foco em GPU, vários engenheiros conduziram experimentos paralelos com vLLM, SGLang e TensorRT-LLM
- O TensorRT-LLM com melhor desempenho foi colocado em funcionamento rapidamente
- Foi garantido suporte ao TensorRT-LLM em Hopper (onde há mais GPUs H100) e Blackwell (acelera melhor com GPUs B200)
- Graças à flexibilidade do Baseten Inference Runtime, foi simples substituir ferramentas dentro da stack e atender a novos modelos de arquitetura
Etapa 2: Correção de bugs de compatibilidade
- Novas arquiteturas de modelo trazem com frequência bugs recorrentes durante integração de frameworks
- O GPT OSS trouxe novos recursos, como o novo formato de resposta Harmony, gerando bugs na integração com frameworks existentes
- Para preservar velocidade e precisão, foram feitas revisões e testes repetidos, e as melhorias eficazes foram contribuídas de volta ao open source
- A colaboração da comunidade open source global faz com que diferentes caminhos de otimização e correções de bugs aconteçam rapidamente
Etapa 3: Otimização da configuração do modelo
- A OpenAI informa que o GPT OSS 120B funciona em um único H100, mas, na prática, a paralelização em 4 a 8 GPUs é mais vantajosa para desempenho
- Tensor Parallelism favorece a latência, enquanto Expert Parallelism favorece o throughput de sistema
- Como objetivo da Baseten é otimizar latência, escolheu-se Tensor Parallelism
- No Blackwell, foi aplicado o backend TensorRT-LLM MoE para melhorar o desempenho do kernel CUDA em relação ao backend Triton anterior
- Foram divulgadas configurações otimizadas para os ambientes Hopper e Blackwell, e a Model API adotou a configuração baseada em Blackwell
Otimizações de desempenho adicionais
- Mesmo apenas com a otimização inicial, já foi alcançado throughput e latência em nível SOTA, mas ainda há espaço significativo para melhoria
- A atualização principal prevista é a adoção de Speculative Decoding
- Nesse formato, um modelo de “draft” menor e mais rápido gera os tokens previstos, enquanto o modelo principal valida
- A Baseten recomenda o Eagle 3, mas mantém mais de 10 algoritmos no stack de inferência para operar de forma dinâmica conforme cada cenário
- A decodificação especulativa conduz inferência de múltiplos tokens de uma só vez, trazendo ganho de velocidade de forma eficiente
2 comentários
Eu também queria que alguém me desse um H100 pequeno e fofo...
Comentários do Hacker News
Então, procurando na gaveta de peças de casa e insistindo bastante, por que não aparece uma GPU H100 de US$ 25.000?
Usei GPT-OSS-120B em um MacBook Pro (M4, 128GB RAM) durante um voo transatlântico. É rápido só quando a janela de contexto é pequena e o total de tokens também é baixo. Depois de passar de 10 mil tokens, quase tudo fica demorado e vai para a fila. MCPs, pesquisa web e patch de URL já se tornaram muito importantes na experiência de uso de LLM. Sem essas funcionalidades, a utilidade do LLM cai bastante. As ferramentas de codificação CLI/TUI pré-configuradas para ambiente offline (como o opencode) não funcionaram de forma confiável junto com o modelo. Além dos pontos sobre modelos OSS já mencionados em comentários anteriores, também há este:
iogpu.wired_limit_mb. No padrão, só cerca de 70% da RAM, ou seja, uns 90 GB, pode ser usado pelo núcleo da GPU. Para usar mais, precisa ajustar essa configuração.Vários engenheiros testaram vLLM, SGLang e TensorRT-LLM em paralelo. Fala-se que o TensorRT-LLM é o mais rápido, mas geralmente é o mais difícil de configurar, também não reflete bem arquiteturas novas e ainda é um incômodo porque precisa compilar o modelo diretamente no stack hardware-driver-biblioteca igual ao de produção. Multimodal ficou praticamente impossível por um tempo, e até modelos multimodais emblemáticos da Llama não funcionaram direito. Fico em dúvida se isso vale a pena, porque, por exemplo, com GPT-OSS-120B no H100 em vLLM tudo roda sem problema e rende consistentemente 130~140 t/s. Pelo título, parecia que sairia 500 t/s por GPU, mas na prática era tensor parallel. Fizeram também uma embalagem separada de TRT-LLM para gpt-oss, o que é meio cômico. O próprio TRT-LLM já é uma ferramenta meio confusa.
O GPT-OSS 20B é realmente fácil de instalar. Graças ao Llama, deu para rodar no meu Mac em 5 minutos.
git pulle recompilar só ollama-server; assim já rodava em 40 t/s sem ajuste, e em 50 t/s com pouquíssimo tuning. Infelizmente, já existem modelos melhores que o 120B, então não há tanta necessidade de rodá-lo. O ggerganov e o time do llama.cpp realmente foram incríveis ao democratizar o uso de LLM também no ambiente de computação pessoal.Lendo isso, aprendi que para o modelo funcionar bem são necessários muita etapa de pré-processamento e muito tuning. Eu achava que ia funcionar bem no padrão.
No AI Action Plan dos EUA, “incentivar IA open source e open-weight” vem logo antes de “fazer a frontier AI proteger a liberdade de expressão e os valores americanos”. Não é muito racional, mas a leitura de modelo open-source da OpenAI nesse momento me dá um arrepio. Ainda assim, é bom que os desenvolvedores de modelo OSS falem de hardware; para a maioria dos desenvolvedores, hardware é uma barreira de entrada, então é ótimo ouvirmos isso.
Alguém conhece um site que diga claramente, por OS e por GPU, quais modelos de LLM rodam melhor? A fórmula empírica mais confiável para estimar VRAM que encontrei era parâmetro × (Precisão/8) × 1,2 (referência)
Quero dizer que ficou surpreendentemente difícil encontrar métricas exatas, como o tamanho real do arranjo do modelo GPT-OSS-120B. Em uma linguagem tipada estaticamente, dá para enxergar o tamanho do array de relance, e quero entender melhor como os dados (além dos pesos) fluem e quão larga é a saída em stream. Tenho curiosidade sobre qual é a largura de banda máxima de “token output” em gigabit Ethernet, e por isso procurei no repositório do Github gpt-oss, mas não apareceu direito.
O GPT-OSS roda mais rápido em chips Blackwell com suporte a fp4. Estamos fazendo um engine de treinamento/inferência em Rust e adicionando suporte de fp8 e fp4 no cudarc e no candle. Também estou fazendo isso para suportar esses modelos no engine da Mixlayer.