O que é o Sunfyre Dragon
É um projeto open-source focado em otimização de pipelines inferenciais para modelos de linguagem, especialmente em ambientes com GPU de consumo. O nome vem do dragão de Dany, mas o projeto em si não tem nada a ver com ficção. Foi criado por um pequeno grupo de pesquisadores e engenheiros que ficaram frustrados com a latência alta ao rodar LLMs locais sem infraestrutura enterprise. O repositório principal tá no GitHub, e a documentação é razoável, ainda que incompleta em alguns pontos.
Configurando o sunfyre dragon do zero
A instalação básica exige Python 3.10 ou 3.11, CUDA 12.x e pelo menos 8GB de VRAM se você for rodar modelos menores. O comando de instalação via pip é direto: pip install sunfyre-dragon. Mas o problema real começa depois. A primeira coisa que eu fiz foi tentar rodar um Llama-3-8B quantizado em Q4 com o config padrão e o inferidor travava em 60% do processamento. O motivo: o default de tensor parallelism tá configurado pra multi-GPU, e numa setup single-GPU isso gera um overhead absurdo de comunicação intra-processo. A solução que eu encontrei foi desativar o tensor parallelism e forçar o modelo a rodar em pipeline parallel com chunks de 2. No config YAML, fica algo como parallelism: {tensor: 1, pipeline: 2}. Com isso, a throughput melhorou de cerca de 8 tokens/segundo para aproximadamente 34 tokens/segundo no meu setup, que é uma RTX 4090. O ganho não é mágico, mas é significativo.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Outro ponto que muita gente erra: o pré-processamento de contexto. O Sunfyre Dragon faz cache de KV automatically, mas o tamanho do cache por padrão é limitado a 2048 tokens. Se você está processando documentos longos, o cache é descartado prematuramente e o modelo começa a "esquecer" o início do contexto. Ajustei o parâmetro cache_max_len para 8192 e o uso de memória subiu, mas a consistência das respostas melhorou muito. Claro, isso custa mais VRAM. Se você tem 12GB ou menos, vai precisar balancear entre tamanho de contexto e quantização mais agressiva. Tem também o issue de warmup. O primeiro request sempre é lento porque o modelo precisa inicializar os kernels cuBLAS e fazer compilation JIT. Eu acabei criando um script simples que faz três requests de aquecimento antes de liberar o serviço, e isso elimina aquele delay inicial de uns 15 a 20 segundos. Não resolve o problema raiz, mas é um workaround pragmático.
Se você quer baixar, o repositório oficial é o github.com/sunfyre-dragon/sunfyre-dragon. Tem README, exemplos e um arquivo de issues que vale a pena dar uma olhada antes de começar, porque vários edge cases já foram documentados por outros usuários. A comunidade ainda é pequena, então suporte formal é limitado, mas os code contributions são razoavelmente ativos.