Implantar um modelo
Sirva qualquer modelo do Hugging Face (texto, imagem, vídeo ou voz) com vLLM, SGLang, vLLM-Omni ou llama.cpp e suas próprias opções do motor: um endpoint no estilo da OpenAI com chave de API própria, e SSH como root.
No console
- Abra Models no console.
- Informe o nome do modelo como no Hugging Face, por exemplo
Qwen/Qwen3-8B, ou cole o link dele. - Escolha o motor: vLLM ou SGLang para modelos de texto, vLLM-Omni ou SGLang para modelos de imagem e vídeo, vLLM-Omni para voz e som, llama.cpp para um arquivo GGUF. No llama.cpp, adicione a quantização depois de dois-pontos, como
unsloth/Qwen3-8B-GGUF:Q4_K_M. - Cole suas próprias opções do motor, se tiver (veja abaixo).
- Para um modelo restrito (gated) ou privado, adicione um token do Hugging Face com permissão de leitura.
- Find GPUs lê o tamanho do modelo no Hugging Face, mostra a linha de início que a máquina vai rodar e lista todas as GPUs em que ele cabe agora, com o preço. Escolha uma e alugue.
O motor baixa o modelo quando a máquina inicia, então o endpoint responde alguns minutos depois. Models mostra quando está pronto, o endereço, a chave de API, código para chamar, um teste para modelos de chat e imagem, e o log do motor.
Suas opções do motor
Cole as opções que você ajustou, do jeito que você as guarda:
VLLM_USE_DEEP_GEMM=1 vllm serve Qwen/Qwen3-8B \
--max-model-len 32768 --enable-prefix-caching \
--speculative-config '{"method": "eagle3", "num_speculative_tokens": 3}'Flags soltas, o comando inteiro e uma linha de docker run funcionam, com variáveis na frente e valores JSON entre aspas. Você as escolhe e as mantém atualizadas com as versões do seu motor. O Arrakis as lê sem shell e as entrega ao motor palavra por palavra, então:
- Sintaxe de shell (
;,|,&&,$(...),$VARIABLES) é recusada: nada a executaria. - Onde o motor escuta (
--host,--port), a chave dele (--api-key) e o modelo ficam com o Arrakis, então o endpoint mantém o endereço e a chave.--served-model-name(--aliasno llama.cpp) muda o nome do modelo usado nas requisições. - Seu paralelismo vale: com
-tp,--tpou-dpnas suas opções, o Arrakis não adiciona o dele. - Configurações que escolhem GPUs (
NVIDIA_*) e do carregador (LD_*) são recusadas: uma máquina usa as GPUs que aluga. - Seu token do Hugging Face vai no campo próprio dele, nunca nas opções, para não ser salvo junto com elas.
Pela API
curl -X POST $ARRAKIS_URL/v1/deploy \
-H "Authorization: Bearer ark_..." \
-H "Content-Type: application/json" \
-d '{"model": "black-forest-labs/FLUX.1-schnell", "engine": "omni", "termination_hours": 4,
"extra_args": "--enforce-eager"}'Sem node_id, o Arrakis aluga a máquina mais bem classificada que comporta o modelo, com o menor número de GPUs possível. POST /v1/deploy/plan lista antes, de graça, todas as GPUs em que ele cabe, e com extra_args confere suas opções e devolve a linha de início. A resposta traz o endpoint e a api_key dele; GET /v1/instances/{id}/endpoint os devolve de novo, com ready quando o modelo responde, e GET /v1/instances/{id}/endpoint/log o final do log do motor. Agentes usam a ferramenta deploy_model via MCP.
Chame o modelo
O endpoint fala a API da OpenAI, então qualquer cliente da OpenAI funciona. O nome do modelo numa requisição é o ID dele no Hugging Face, sem a quantização, a menos que você o tenha renomeado.
from openai import OpenAI
client = OpenAI(base_url="http://<address>/v1", api_key="sk-...")
reply = client.chat.completions.create(
model="Qwen/Qwen3-8B",
messages=[{"role": "user", "content": "Hello"}],
)
print(reply.choices[0].message.content)| O modelo gera | Peça em |
|---|---|
| Texto | POST /v1/chat/completions, /v1/completions, /v1/embeddings |
| Imagens | POST /v1/images/generations, /v1/images/edits |
| Vídeo | POST /v1/videos, depois GET /v1/videos/{id} até terminar e GET /v1/videos/{id}/content |
| Voz | POST /v1/audio/speech |
| Som e música | POST /v1/audio/generate |
| Texto a partir de fala | POST /v1/audio/transcriptions |
A máquina é sua
- É um aluguel comum: cobrado por hora, removido no horário de remoção e listado em Instances.
- Ela inicia com uma imagem Arrakis construída sobre a versão oficial do motor, com SSH como root. Rode nela
arrakis-serve status,arrakis-serve logsouarrakis-serve restart. - Para testar outras opções sem uma máquina nova, edite
/etc/arrakis/serve/command(uma palavra por linha) ou/etc/arrakis/serve/enve rodearrakis-serve restart. Quando o motor para, a máquina continua ligada para você corrigir. - O endpoint é o endereço da máquina em HTTP simples. Um controle de acesso na porta 8000 confere a chave de API (
Authorization: Bearer <key>) antes que uma requisição chegue ao motor, que só escuta dentro da máquina;/healthresponde sem a chave e diz apenas se o motor está no ar. Para tráfego privado, abra um túnel SSH (ssh root@<host> -p <port> -N -L 8000:localhost:8000) e usehttp://localhost:8000/v1. - Seu token do Hugging Face vai para a máquina como
HF_TOKEN, e o Arrakis não o guarda. O host da máquina pode ler o que roda nela, então use um token granular (fine-grained) e só de leitura.
É um agente? Esta página em Markdown.