Se você curte o ecossistema HuggingFace e quer um servidor LLM battle-tested em produção (HF usa o próprio TGI nos seus Inference Endpoints), o Text Generation Inference (TGI) é a sua melhor opção. No GPUBrasil, deploy em 1 clique com Flash Attention 2, suporte a PEFT/LoRA e API REST + gRPC.
TGI é o servidor de inferência oficial da HuggingFace, escrito em Rust + Python. Otimizado para latência consistente, com excelente suporte a modelos novos da HF Hub.
O que é o TGI?
TGI (Text Generation Inference) é o servidor que roda por trás dos HuggingFace Inference Endpoints. Combina um core em Rust de alta performance com workers Python para inferência GPU. Foco: estabilidade em produção e integração nativa com a HF Hub.
Características principais
- Continuous batching: agrupamento dinâmico de requisições
- Flash Attention 2: 2-3x mais rápido em geração longa
- Tensor parallelism: divisão entre múltiplas GPUs
- Quantização: bitsandbytes, GPTQ, AWQ, EETQ, FP8
- Suporte a LoRA/PEFT: múltiplos adapters carregados ao mesmo tempo
- API REST + gRPC: messages API compatível com OpenAI
- Streaming: Server-Sent Events para tokens incrementais
- Métricas Prometheus: observabilidade out-of-the-box
Casos de uso brasileiros
- Empresas já no ecossistema HF: integração natural com Hub e Datasets
- Modelos customizados via PEFT/LoRA: ative/desative skills sem recarregar
- SaaS B2B com SLA: latência previsível e métricas Prometheus prontas
- Multi-tenant: múltiplos LoRAs servindo diferentes clientes em uma GPU
- Migração de Inference Endpoints: tirar workload da HF para o Brasil
Hardware recomendado
- RTX 4090 (24GB): 7B-13B em FP16; até 30B com EETQ/AWQ
- L40S / A6000 (48GB): 30-34B em FP16
- A100 80GB / H100: 70B+ em FP16
RTX 4090 (R$ 2,50/h) servindo Qwen2.5-3B: ~5M tokens/h em modo concorrente. Custo: R$ 0,50/1M tokens. HF Inference Endpoint cobra ~3-5x mais.
Deploy em 1 clique
Passo 1: Iniciar template
- Console → Templates → 🧠 LLM Self-hosted
- Selecione TGI (HuggingFace)
- GPU: RTX 4090 (recomendado)
- Clique em Iniciar
O template usa ghcr.io/huggingface/text-generation-inference:latest com Qwen2.5-3B-Instruct como modelo padrão e API REST na porta 8080.
Passo 2: Testar via curl
curl https://sua-instancia.gpubrasil.com.br/generate \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"inputs": "Qual é a capital do Brasil?",
"parameters": {
"max_new_tokens": 100,
"temperature": 0.7,
"top_p": 0.95
}
}'
Passo 3: Streaming
import requests
url = "https://sua-instancia.gpubrasil.com.br/generate_stream"
resp = requests.post(url, json={
"inputs": "Conte uma piada brasileira:",
"parameters": {"max_new_tokens": 200}
}, stream=True)
for line in resp.iter_lines():
if line and line.startswith(b"data:"):
chunk = line[5:].decode().strip()
print(chunk, end="", flush=True)
Passo 4: Messages API (compatível com OpenAI)
from openai import OpenAI
client = OpenAI(
base_url="https://sua-instancia.gpubrasil.com.br/v1",
api_key="dummy"
)
resp = client.chat.completions.create(
model="tgi",
messages=[
{"role": "system", "content": "Você é um assistente brasileiro técnico."},
{"role": "user", "content": "Como funciona Flash Attention 2?"}
]
)
print(resp.choices[0].message.content)
Trocar de modelo
SSH na instância e ajuste:
# Trocar para LLaMA 3.1 8B
docker stop tgi
docker run -d --name tgi --gpus all -p 8080:80 \
-v $PWD/data:/data \
-e HF_TOKEN=hf_xxx \
ghcr.io/huggingface/text-generation-inference:latest \
--model-id meta-llama/Llama-3.1-8B-Instruct \
--quantize eetq \
--max-input-length 4096 \
--max-total-tokens 8192
Multi-LoRA: múltiplos adapters em uma GPU
# Inicia TGI com 2 adapters LoRA
docker run -d --gpus all -p 8080:80 \
ghcr.io/huggingface/text-generation-inference:latest \
--model-id Qwen/Qwen2.5-7B-Instruct \
--lora-adapters \
"atendimento=hub:my-org/qwen-suporte,vendas=hub:my-org/qwen-vendas"
# Requisição usando um adapter
curl POST /generate -d '{
"inputs": "Como devolvo um produto?",
"parameters": {"adapter_id": "atendimento"}
}'
TGI vs vLLM
- Throughput: vLLM geralmente é maior em batch alto
- Latência: TGI mais consistente em tail latency (p99)
- Multi-LoRA: TGI tem suporte mais maduro
- Modelos novos: TGI lança updates HF Hub-aware mais rápido
- Métricas: TGI já vem com Prometheus integrado
- Recomendação: use TGI se já está no ecossistema HF; vLLM se prioriza throughput máximo
Dicas de produção
- Quantização EETQ: FP8 simplificado, menor perda que GPTQ
- Sharding: divida modelo em N GPUs com
--num-shard N - Health check: endpoint
/healthpara load balancers - Métricas:
/metricsem formato Prometheus - Logs estruturados: JSON com tracing OTel para Grafana
Sirva LLMs com a stack oficial da HuggingFace
Ganhe R$ 25 grátis no GPUBrasil e suba TGI em 90 segundos.
Começar Grátis →Conclusão
TGI é a escolha pragmática para times que já dominam HuggingFace e querem tirar workload de Inference Endpoints sem reescrever código. Combinado com o GPUBrasil, é uma migração indolor com economia significativa e dados em território brasileiro.
Compare: vLLM · LiteLLM proxy