Pontos principais
- Os pesos do modelo precisam de cerca de 2 bytes por parâmetro em 16-bit, 1 em 8-bit e 0,5 em 4-bit, mais espaço para o cache de contexto.
- Uma GPU alugada cobra por cada hora ligada, enquanto uma API cobra apenas pelos tokens que você envia e recebe.
- A $0,15 por 1M de tokens de entrada e $0,50 por 1M de tokens de saída, 20.000 chats por dia com 1.500 de entrada e 500 de saída custam $285 por mês.
- A auto-hospedagem vence quando você precisa de ajuste fino, um modelo diferente, uso offline ou volume alto e constante.
A resposta curta: depende do seu volume
Se você está perguntando como hospedar pesos de llm você mesmo, o resumo honesto é que é fácil fazer um modelo responder na sua própria máquina e difícil rodá-lo barato para outras pessoas. Um laptop ou uma GPU de desktop é suficiente para uso pessoal. Um serviço que deve responder a muitos usuários ao mesmo tempo, a qualquer hora, precisa de mais memória, mais ajuste fino e alguém para mantê-lo ativo.
A alternativa é chamar um endpoint compatível com OpenAI hospedado e pagar por token. Para cargas de trabalho pequenas e médias, isso é quase sempre mais barato, porque você nunca paga por tempo ocioso de GPU. Para cargas de trabalho muito grandes e constantes, ou para tarefas que precisam do seu próprio modelo ajustado, possuir o hardware começa a fazer sentido. As seções abaixo colocam números em ambos os lados para você encontrar seu próprio ponto de equilíbrio.
Não há plano gratuito aqui. Você pode solicitar um crédito de teste único de $0,50 na página da chave de API após entrar, e depois disso você adiciona crédito pré-pago a partir de $20. O crédito de teste é suficiente para executar um teste real dos seus próprios prompts antes de tomar qualquer decisão.
O que realmente exige hospedar um modelo
Um modelo de linguagem é um arquivo grande de números, os pesos, que deve ficar na memória rápida enquanto o modelo roda. O tamanho desse arquivo é a primeira restrição, e você pode calculá-lo sozinho: parâmetros multiplicados por bytes por parâmetro.
| Tamanho do modelo | Pesos de 16 bits | Pesos de 8-bit | Pesos de 4 bits |
|---|---|---|---|
| 8B parâmetros | 16 GB | 8 GB | 4 GB |
| 32B parâmetros | 64 GB | 32 GB | 16 GB |
| 70B parâmetros | 140 GB | 70 GB | 35 GB |
Estes são apenas pesos. Além disso, você precisa de memória para o cache de chave-valor, que cresce com o comprimento de cada conversa ativa, e uma margem de segurança para o tempo de execução. Um modelo que nominalmente cabe em 24 GB pode ficar sem memória no momento em que você solicita um contexto longo ou vários usuários simultâneos. A quantização para 4 bits reduz o arquivo, mas também altera um pouco a qualidade da saída, e o efeito varia conforme o modelo.
Então existe o lado do software. Você precisa de um servidor de inferência como llama.cpp, Ollama ou vLLM, uma camada HTTP para que seus aplicativos possam chamá-lo, uma maneira de reiniciá-lo quando ele falhar e monitoramento para você notar quando isso acontecer. Nada disso é difícil isoladamente. Tudo isso leva tempo, e o tempo é parte do custo.
Opção um: rodar no seu próprio computador
A maneira mais barata de começar é a máquina que você já possui. Ferramentas como Ollama e llama.cpp baixam um modelo e expõem um servidor local, e muitos deles também oferecem um endpoint estilo OpenAI, então o código que você escreve contra eles pode depois apontar para uma API hospedada alterando duas configurações.
A hospedagem local é uma boa opção quando:
- você é uma pessoa experimentando, e alguns segundos por resposta são aceitáveis;
- os dados nunca devem sair da máquina;
- você quer experimentar muitos modelos abertos diferentes rapidamente;
- você tem uma GPU com memória suficiente e ela fica ociosa a maior parte do dia mesmo assim.
É uma opção fraca quando você precisa servir outras pessoas, quando o modelo desejado é maior que sua memória, ou quando você quer contextos longos. Nossa própria comparação de modelos locais sem censura e APIs hospedadas aborda os trade-offs com mais detalhes, incluindo o que muda na qualidade das respostas entre modelos locais pequenos e modelos hospedados maiores.
A eletricidade é uma linha de custo real, mas pequena para um usuário único. O custo maior é o hardware que você teve que comprar, que você paga se usar ou não. Se você já possui, o custo marginal é baixo e a hospedagem local é difícil de superar para experimentos privados.
Opção dois: alugar um servidor de GPU
Quando sua própria máquina não é suficiente, o próximo passo é uma GPU alugada. Provedores cobram por hora uma máquina com uma determinada quantidade de memória de GPU. Os preços variam muito entre provedores e mudam frequentemente, então verifique os preços atuais deles em vez de confiar em qualquer número que você leia em um artigo, incluindo este.
O que importa é o formato da conta. Um servidor alugado cobra por cada hora em que está ligado, seja respondendo a uma requisição ou não. Se você o deixar ligado o mês todo, a matemática é simples: um mês tem cerca de 730 horas (8.760 horas em um ano divididas por 12). Suponha, apenas como um exemplo hipotético e não uma cotação, que um servidor adequado custe $1 por hora. Operá-lo 24 horas por dia custa então 730 × $1 = $730 por mês antes de você adicionar armazenamento, largura de banda e seu próprio tempo.
Você pode desligar o servidor quando não estiver usando, mas então você paga com atrasos: carregar um modelo grande na memória leva tempo, e o primeiro usuário após uma pausa espera por isso. Configurações de autoescalonamento reduzem isso, e adicionam sua própria complexidade.
O ponto de equilíbrio contra uma API segue do preço. Um milhão de tokens de entrada mais um milhão de tokens de saída custam $0,15 + $0,50 = $0,65 nesta API. Seu servidor assumido de $730 equivale a 730 ÷ 0,65 ≈ 1.123 desses pares, ou aproximadamente 1,1 bilhão de tokens de entrada e 1,1 bilhão de tokens de saída em um mês. Abaixo desse volume, a API custa menos. Acima disso, um servidor bem utilizado pode vencer, desde que possa realmente acompanhar esse tráfego, o que depende do modelo, da GPU e de quão bem você ajusta o servidor.
Opção três: usar uma API hospedada
A rota da API remove o hardware, o servidor e o tempo ocioso. Você envia uma requisição, recebe uma resposta e paga pelos tokens que foram usados. A precificação aqui é de $0,15 por 1M de tokens de entrada e $0,50 por 1M de tokens de saída, pagamento por uso a partir de crédito pré-pago, sem assinatura. O crédito nunca expira, e requisições falhas ou recusadas não são cobradas.
Veja como isso se apresenta em três volumes realistas. Assume-se que uma rodada típica de chat use 1.500 tokens de entrada (prompt do sistema mais histórico) e 500 tokens de saída.
- Uma requisição: 1.500 tokens de entrada custam 0,0015 × $0,15 = $0,000225, e 500 tokens de saída custam 0,0005 × $0,50 = $0,00025. Juntos isso é $0,000475.
- 1.000 chats por dia, 30 dias: 1.000 × $0,000475 = $0,475 por dia, ou $14,25 por mês.
- 20.000 chats por dia, 30 dias: 20.000 × $0,000475 = $9,50 por dia, ou $285 por mês.
- Um trabalho em lote com 100.000 requisições com 2.000 tokens de entrada e 400 tokens de saída cada: a entrada são 200M tokens, então 200 × $0,15 = $30; a saída são 40M tokens, então 40 × $0,50 = $20. O total é $50.
No valor intermediário, a API custa $285 por mês, que está bem abaixo dos $730 assumidos para um servidor sempre ligado. Na maior estimativa, você precisaria de muito mais tráfego antes que um servidor alugado alcance esse valor. Seus próprios prompts determinam os números reais, então meça uma amostra em vez de adivinhar. O bloco de uso que retorna com cada resposta informa a contagem exata de tokens.
O crédito de teste de $0,50 cobre cerca de 1.052 requisições do tamanho 1.500 de entrada e 500 de saída (0,50 ÷ 0,000475 ≈ 1.052), o que é suficiente para um teste. Depois disso, você recarrega com qualquer valor inteiro de $20 a $500. Recargas maiores têm um bônus: +5% a partir de $50, +10% a partir de $100 e +15% a partir de $200, então uma recarga de $100 gera $110 de crédito. Os detalhes estão na página de preços. O pagamento é por cartão (Visa, Mastercard, Apple Pay, Google Pay) ou cripto (USDT na TRC20, USDC na Base).
O que você abre mão por não hospedar
Uma API não é isenta de compromissos, e é melhor saber antes de construir sobre ela.
- Um modelo. Você recebe um único modelo de pesos abertos, endereçado como
uncensored. Você não pode trocar por um diferente ou carregar seus próprios pesos. - Sem ajuste fino e apenas texto. Não há endpoint de treinamento, nem embeddings nem geração de imagem, áudio ou vídeo.
- Limites. Uma chave completa permite 8 requisições simultâneas e 300 requisições por minuto. Uma chave de teste permite 2 e 60. Isso atende à maioria dos aplicativos, mas um lote muito grande precisa de fila do seu lado.
- Contexto. A janela é de 100.000 tokens para prompt mais conclusão.
- Seus dados saem da sua rede. Prompts não são usados para treinamento, mas eles viajam para um terceiro. Se isso não for aceitável para um conjunto de dados específico, hospede localmente.
A auto-hospedagem é a melhor escolha quando qualquer um destes é um requisito rígido: ajuste fino nos seus próprios dados, um modelo específico que a API não oferece, operação totalmente offline, ou um volume constante grande o suficiente para que o hardware próprio fique ocupado 24 horas por dia.
Teste a API antes de comprar hardware
Um teste de uma hora custa menos que uma única hora da maioria dos servidores alugados e diz se o modelo responde bem aos seus prompts. O endpoint é compatível com OpenAI, então se você já tem código que fala com um servidor local, você só muda a URL base, a chave e o ID do modelo. Este script também relata quanto cada chamada custou, usando os números de uso na resposta:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise the pros and cons of self-hosting an LLM."}],
)
u = resp.usage
cost = u.prompt_tokens / 1_000_000 * 0.15 + u.completion_tokens / 1_000_000 * 0.50
print(resp.choices[0].message.content)
print(f"in={u.prompt_tokens} out={u.completion_tokens} cost=${cost:.6f}")
Execute-o em algumas dezenas dos seus prompts reais, some as linhas de custo e multiplique pelo volume diário esperado. Isso fornece um valor que você pode definir ao lado da cotação de hardware. Se quiser os detalhes da configuração, a documentação lista os parâmetros suportados, incluindo streaming, chamada de funções e modo JSON.
