Avançado 12 minImplantação

SGLang: disponibilizar um LLM local para vários utilisateurs

Resposta direta

SGLang é um servidor de inferência projetado para vários usuários simultâneos: é instalado com uv, é iniciado com um único comando na porta 30000 e deve sua taxa de processamento sob carga ao RadixAttention (cache de prefixos) e ao agendamento contínuo das requisições. Exige uma GPU CUDA recente, o que o torna uma ferramenta para servidores compartilhados, e não um substituto do Ollama em um computador pessoal usado por uma única pessoa.

SGLang é um framework de servidor de inferência, desenvolvido pela comunidade LMSYS, projetado para atender a várias requisições simultâneas com alta vazão e baixa latência. Este guia aborda sua instalação, o funcionamento do RadixAttention, os ajustes de concorrência que você precisa conhecer e os critérios para escolher entre SGLang, vLLM e Ollama de acordo com o número de usuários reais a serem atendidos.

Por Mohamed Meguedmi·Atualização 2026-09-28·Testado no Windows, macOS e Linux

#O que faz o SGLang

O SGLang se apresenta como um framework de alto desempenho para servir LLMs e modelos multimodais, projetado para inferência com baixa latência e alta taxa de processamento, desde uma única GPU até grandes clusters distribuídos. O projeto afirma ter implantações em produção que geram trilhões de tokens por dia em mais de 400.000 GPUs no mundo e é hospedado pela LMSYS, uma organização de código aberto sem fins lucrativos.

Compatível com as APIs OpenAI e Hugging Face, o SGLang suporta uma ampla gama de modelos (Llama, Qwen, DeepSeek, GLM, Mistral, Gemma) e de hardware (GPU NVIDIA, AMD, CPU Intel Xeon, TPU Google, NPU Ascend). Em 28 de setembro de 2026, a versão mais recente é a v0.5.20, publicada em 18 de setembro de 2026.

i
SGLang não é um substituto direto de Ollama
O SGLang é voltado ao atendimento de vários usuários em hardware de servidor. Ele oferece até uma API compatível com o cliente Ollama para facilitar a migração de ferramentas existentes, mas não instala nem substitui o próprio Ollama.

#Instalar e iniciar o servidor

O kit IA Local na Empresa

Implantar uma IA local no trabalho: RGPD, AI Act, arquitetura multiusuário, custos, nota para a diretoria.

  • Espaço online vitalício
  • PDF + arquivos
  • Atualizações vitalícias

A instalação recomendada pela documentação oficial utiliza o uv, que é mais rápido que o pip tradicional. O flag --prerelease=allow é necessário porque algumas dependências do SGLang publicam apenas versões prévias no PyPI.

Instalação
pip install --upgrade pip
pip install uv
uv pip install --prerelease=allow sglang

A execução em um contêiner Docker continua sendo a forma mais reprodutível de implantação em servidor, com a porta 30000 usada por padrão para a API.

Docker
docker run --gpus all \
    --shm-size 32g \
    -p 30000:30000 \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    --env "HF_TOKEN=<secret>" \
    --ipc=host \
    lmsysorg/sglang:latest \
    python3 -m sglang.launch_server --model-path meta-llama/Llama-3.1-8B-Instruct --host 0.0.0.0 --port 30000

A documentação especifica que o SGLang agora exige CUDA 13: as imagens e os pacotes wheel para CUDA 12 (cu129) foram removidos desde que o PyTorch 2.14 deixou de publicar builds para CUDA 12.9, e a versão 0.5.19 continua sendo a última a oferecer uma opção para CUDA 12. Uma implantação em hardware mais antigo deve, portanto, fixar essa versão ou verificar o driver da GPU antes de atualizar.

#RadixAttention e o cache de prefixos

O ponto central da promessa de taxa de processamento do SGLang é a RadixAttention: os prefixos de sequências já calculados (um prompt de sistema compartilhado, o início de uma conversa com múltiplos turnos) são organizados em uma árvore radix e reutilizados entre requisições, em vez de serem recalculados a cada chamada. O anúncio original do projeto, em janeiro de 2024, alegava uma inferência até 5 vezes mais rápida graças a esse mecanismo — um número divulgado pelo projeto com base em sua própria bancada de testes da época, não uma medição independente recente no seu hardware.

Esse ganho beneficia principalmente cenários com préfixos compartilhados: vários usuários fazendo consultas com o mesmo prompt de sistema, um agente que relê o mesmo contexto a cada turno ou few-shot com os mesmos exemplos. Um fluxo de requisições sem nenhum préfixo comum (perguntas totalmente independentes, sem histórico) se beneficia muito menos do RadixAttention.

→
Gradiente de surpresa
O ganho do RadixAttention depende diretamente da proporção de tokens de prefixo compartilhados entre as requisições. Uma implantação em que cada usuário tem seu próprio prompt de sistema longo e diferente perde grande parte dos benefícios do cache, mesmo que a funcionalidade permaneça ativa.

O runtime combina RadixAttention com um escalonador de CPU com overhead zero, desagregação prefill-decode, decodificação especulativa, escalonamento contínuo de requisições (continuous batching) e paginação da atenção (paged attention) — um conjunto de técnicas de otimização, e não um mecanismo isolado.

#Ajustar a concorrência e a memória

Três parâmetros de inicialização controlam a forma como o SGLang atende vários usuários em paralelo. --mem-fraction-static define a fração da memória da GPU reservada para os pesos do modelo e para o cache KV; a documentação recomenda reduzi-la em caso de erro por falta de memória; caso contrário, ela é calculada automaticamente com base na memória disponível da GPU.

Parâmetros de concorrência a conhecer
ParâmetroFunção
--max-running-requestsNúmero máximo de requisições processadas ao mesmo tempo (sem limite padrão)
--max-queued-requestsNúmero máximo de requisições em espera antes do processamento
--schedule-policyPolítica de escalonamento de requisições: fcfs (primeiro a chegar, primeiro atendido) por padrão, ou lpm, random, dfs-weight, lof, priority, routing-key
--chunked-prefill-sizeDivisão do prefill em blocos para evitar que uma requisição longa bloqueie as outras

Sem limite explícito em --max-running-requests, o SGLang aceita tantas requisições quanto a memória do cache KV permitir, o que pode degradar a latência por requisição sob carga alta, em vez de recusar gentilmente as novas conexões. Definir um limite explícito, coerente com a VRAM disponível, é o primeiro ajuste a fazer antes de abrir o servidor para vários usuários reais.

#Quando escolher SGLang em vez de vLLM ou Ollama

As três ferramentas atendem a necessidades diferentes. O Ollama visa o uso pessoal por um único usuário, com um aprendizado inicial mínimo; SGLang e vLLM se destinam a atender vários usuários em GPUs de servidor, com filosofias próximas (cache de prefixos, batching contínuo), mas históricos e ecossistemas distintos.

Um único usuário, computador pessoal
Ollama ou llama.cpp continuam sendo mais fáceis de instalar e rodar em CPUs ou GPUs de uso doméstico, sem configurar um serviço de rede.
Vários usuários, sistema já construído com vLLM
Permanecer com vLLM evita uma migração; nosso guia específico aborda sua implantação em produção.
Vários usuários, prioridade ao throughput com prefixos compartilhados
SGLang, com RadixAttention, é o candidato natural — desde que você tenha uma GPU compatível com CUDA.
Você deseja compatibilidade com o cliente Ollama sem instalar o Ollama
SGLang oferece uma API compatível com a CLI e a biblioteca Python Ollama, o que permite reutilizar scripts existentes sem precisar rodar o servidor Ollama em si.

Para um panorama mais amplo das arquiteturas de inferência (llama.cpp, vLLM, Exllama), o comparativo de backends do site detalha as vantagens e limitações para além do caso específico do SGLang.

#O que o hardware exige

O guia de início rápido do SGLang é explícito: uma GPU NVIDIA com suporte a CUDA sm80 ou superior (A10, A100, L4, L40S, H100) é um pré-requisito para a instalação padrão no Linux, a plataforma recomendada. O projeto também anuncia suporte a uma gama mais ampla de hardware — GPUs AMD (MI355, MI300), CPUs Intel Xeon, TPUs Google, NPUs Ascend — por meio de procedimentos de instalação específicos e distintos do procedimento principal para GPUs NVIDIA.

!
Não é uma ferramenta para uso exclusivo da CPU por padrão
Ao contrário de llama.cpp ou Ollama, o SGLang não foi pensado prioritariamente para funcionar sem uma GPU dedicada. Em um Mac ou PC sem uma placa NVIDIA recente, Ollama ou LM Studio continuam sendo as opções padrão; o SGLang faz todo o sentido em um servidor com GPU dedicado a vários usuários.

#O custo de memória por requisição

“Servir vários usuários” significa, na prática, um consumo de VRAM que cresce com o número de requisições ativas, não apenas com o tamanho do modelo. O cache KV gerenciado por --mem-fraction-static e --max-total-tokens armazena, para cada token já gerado em uma requisição, dois vetores (chave e valor) por camada de atenção. A fórmula geral é: bytes por token = 2 × número de camadas × número de cabeças de atenção KV × dimensão de uma cabeça × bytes por valor (2 em FP16/BF16, 1 em FP8).

Cálculo ilustrativo para uma arquitetura próxima de Llama-3.1-8B-Instruct (32 camadas, 8 cabeças KV em atenção agrupada, dimensão de cada cabeça de 128): em FP16, isso dá 2 × 32 × 8 × 128 × 2 = 131.072 bytes por token, ou aproximadamente 128 KB por token. Para uma requisição com 8.192 tokens de contexto (prompt e resposta somados), o cache KV dessa única requisição ocupa então aproximadamente 1 GB de VRAM — antes mesmo de contar os pesos do modelo. Em uma GPU de 24 GB com cerca de 16 GB reservados para os pesos em Q4 e para a infraestrutura básica do runtime, a margem restante deixa espaço apenas para algumas requisições ativas simultâneas nesse nível de contexto, o que explica por que um limite explícito em --max-running-requests evita uma degradação em vez de uma rejeição controlada das novas conexões.

→
Ordem de grandeza, não uma medida
Este cálculo é uma estimativa teórica baseada na arquitetura do modelo, não um valor medido em uma implantação real do SGLang: o número exato de requisições simultâneas suportadas também depende do modelo carregado, do comprimento real do contexto e de --mem-fraction-static.

#Segurança e observabilidade

Por padrão, a API SGLang iniciada com sglang.launch_server não exige autenticação: qualquer pessoa que consiga acessar a porta 30000 pode enviar requisições. A opção --api-key define uma chave exigida pelo servidor, inclusive no seu endpoint compatível com OpenAI; sem ela, expor o servidor além de localhost ou de uma rede interna de confiança equivale a deixar o acesso aberto à inferência e, portanto, aos custos de GPU associados.

Para o acompanhamento em produção, a opção --enable-metrics (desativada por padrão) publica métricas no formato Prometheus em um endpoint /metrics: taxa de requisições, latência de inferência, velocidade de geração de tokens e eficiência do cache são expostas para scraping periódico, em vez de adivinhar o estado do servidor a partir apenas dos logs.

#Solução de problemas: sintomas, causa, correção

Sintomas comuns em ambiente multiusuário
SintomaCausa provávelCorreção
Erro de falta de memória (out of memory) na inicializaçãoValor de --mem-fraction-static calculado automaticamente acima do adequado para a VRAM realmente disponívelReduzir --mem-fraction-static explicitamente, conforme recomenda a documentação oficial
Latência que explode sob carga sem erroNenhuma limitação em --max-running-requests: o servidor aceita requisições desde que o cache KV o permitaDefinir --max-running-requests de acordo com a VRAM disponível e com o cálculo do custo por requisição acima
Falha na instalação ou na inicialização após atualizaçãoAtualização para uma versão que exige CUDA 13 com um driver que ainda está em CUDA 12Fixar a versão 0.5.19 (última opção para CUDA 12) ou atualizar o driver do GPU antes do SGLang
Servidor acessível pela rede sem controle de acessoNenhuma chave definida: --api-key está vazio por padrãoDefinir --api-key antes de expor o servidor fora de uma rede confiável

#Limitações e pontos de atenção

O número “até 5 vezes mais rápido” que ainda acompanha a apresentação do RadixAttention remonta ao anúncio inicial do projeto em janeiro de 2024: ele ilustra a contribuição do mecanismo no ambiente de testes da época, não um ganho garantido em uma implantação recente com modelos e GPUs diferentes. O dimensionamento real depende da taxa de compartilhamento de prefixos entre requisições, do modelo escolhido e da GPU utilizada — deve ser avaliado no seu próprio tráfego, em vez de deduzido do anúncio original.

A migração obrigatória para CUDA 13 (a versão 0.5.19 é a última a oferecer uma opção com CUDA 12) merece uma verificação do driver da GPU e da versão do CUDA instalada antes de qualquer atualização para uma versão recente, sob pena de falha na instalação em um servidor que tenha permanecido com CUDA 12.

A frequência de lançamento do projeto também deve ser monitorada para uma implantação em produção: o SGLang lança versões menores aproximadamente a cada duas ou três semanas (v0.5.20 em 18 de setembro de 2026, v0.5.19 em 5 de setembro, v0.5.18 em 22 de agosto), o que exige fixar uma versão específica nas imagens Docker em vez de seguir a tag latest em um serviço em produção, sob o risco de uma mudança de comportamento inesperada durante uma nova implantação.

Perguntas frequentes
O SGLang substitui o Ollama?+
Não, são duas ferramentas diferentes. Ollama é voltado ao uso pessoal por um único usuário em uma estação de trabalho, sendo fácil de começar a usar; SGLang é voltado a atender vários usuários simultaneamente em uma GPU de servidor, com uma configuração mais avançada. SGLang até expõe uma API compatível com o cliente Ollama, sem que o Ollama esteja realmente rodando por trás — algo prático para reutilizar scripts existentes sem migrar todo o conjunto de ferramentas.
É necessária uma GPU para rodar o SGLang?+
O guia de início rápido oficial exige uma GPU NVIDIA com suporte a CUDA sm80 ou superior (A10, A100, L4, L40S, H100) para a abordagem padrão no Linux. Existem caminhos distintos para AMD, Intel Xeon, TPU ou NPU, mas o SGLang não é projetado prioritariamente para uso apenas em CPU em um computador pessoal: Ollama ou llama.cpp permanecem mais adequados nesse caso.
O RadixAttention acelera todas as requisições da mesma forma?+
Não. O ganho depende do volume de tokens de prefixo compartilhados entre as requisições: requisições com um prompt de sistema comum a vários usuários ou um histórico de conversa reutilizado a cada rodada se beneficiam muito. Requisições totalmente independentes, sem nenhum prefixo comum entre si, se beneficiam muito menos, mesmo que o mecanismo permaneça ativo no servidor.
Qual parâmetro ajustar primeiro para atender vários usuários com SGLang?+
--max-running-requests, para definir um limite explícito coerente com a VRAM disponível e o custo do cache KV de cada requisição ativa. Sem esse limite, o SGLang aceita requisições enquanto o cache KV permitir, o que pode aumentar a latência de cada requisição sob carga elevada, em vez de recusar educadamente conexões adicionais.
O SGLang funciona com uma GPU mais antiga limitada ao CUDA 12?+
Não nas versões recentes. O SGLang exige agora o CUDA 13; a versão 0.5.19 é a última que oferece suporte ao CUDA 12: um servidor que permanecer com um driver CUDA 12 deve manter essa versão ou atualizar seu driver de GPU antes de instalar uma versão mais recente do SGLang, caso contrário, a instalação falhará.
Quanta memória da GPU o cache KV de uma única requisição ocupa?+
Depende do modelo e do comprimento do contexto, mas é possível calcular a ordem de grandeza: para uma arquitetura próxima à do Llama-3.1-8B (32 camadas, 8 cabeças KV), um contexto de 8.192 tokens ocupa aproximadamente 1 GB de VRAM em FP16, antes mesmo de contar os pesos do modelo. Mudar para FP8 divide esse valor por dois.
Como proteger um servidor SGLang exposto na rede?+
Definir --api-key para exigir autenticação por token em todas as requisições, incluindo o endpoint compatível com OpenAI; sem essa opção, o servidor permanece aberto a qualquer pessoa que consiga acessar a porta 30000. Ativar --enable-metrics separadamente para monitorar a taxa de transferência e a latência via Prometheus, sem confundir observabilidade com controle de acesso.

Este guia ajudou você?

Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.