Mecanismo de inferência#

O Xinference possui diferentes mecanismos de inferência para diferentes modelos. Após o usuário selecionar um modelo, o Xinference escolhe automaticamente o mecanismo adequado.

llama.cpp#

O Xinference atualmente suporta o xllamacpp desenvolvido pela equipe do Xinference como backend do llama.cpp para execução. O llama.cpp é baseado na biblioteca de tensores ggml e oferece suporte à inferência de modelos da série LLaMA e suas variações.

Aviso

A partir do Xinference v1.5.0, o xllamacpp tornou-se a opção padrão para o llama.cpp, e o llama-cpp-python foi descontinuado; a partir do Xinference v1.6.0, o llama-cpp-python foi removido.

Consulte a definição da estrutura common_params em common.h do llama.cpp para configurar os parâmetros.

Pode haver parâmetros com múltiplos níveis de aninhamento. Por exemplo, sampling.top_k. Use . para separar parâmetros aninhados.

Aqui está um exemplo de configuração dos parâmetros de nested sampling na WebUI:

actor

NGL automático#

Adicionado na versão v1.6.1: Desde v1.6.1, quando n-gpu-layers não é especificado (padrão -1), a estimativa do número de camadas da GPU é ativada automaticamente.

Este recurso pode definir automaticamente o número de camadas de GPU (NGL) para o backend llama.cpp. Observe que não é um cálculo preciso, portanto, o resultado de -ngl pode não ser ideal e ainda é possível encontrar erros de falta de memória de vídeo.

Atualmente, o NGL automático não tem suporte oficial. Consulte a issue abaixo para mais detalhes:

Nossa implementação é baseada no NGL automático do Ollama, mas com algumas diferenças:

  • Usamos as informações de dispositivo fornecidas pelo xllamacpp.

  • Removemos o suporte a algumas arquiteturas incomuns, nas quais a lógica de cálculo padrão era utilizada.

  • Se a NGL automática falhar, tentaremos carregar tudo na GPU.

  • Não oferecemos suporte para projetores multimodais incorporados ao GGUF do modelo. Esse formato de modelo ainda está em fase experimental.

Perguntas Frequentes#

  • Server error: {‘code’: 500, ‘message’: ‘failed to process image’, ‘type’: ‘server_error’}

    Log do servidor:

    encoding image or slice...
    slot update_slots: id  0 | task 0 | kv cache rm [10, end)
    srv  process_chun: processing image...
    ggml_metal_graph_compute: command buffer 0 failed with status 5
    error: Internal Error (0000000e:Internal Error)
    clip_image_batch_encode: ggml_backend_sched_graph_compute failed with error -1
    failed to encode image
    srv  process_chun: image processed in 2288 ms
    mtmd_helper_eval failed with status 1
    slot update_slots: id  0 | task 0 | failed to process image, res = 1
    

    Pode ser causado por memória insuficiente. Você pode tentar reduzir o n_ctx para resolver.

  • Server error: {‘code’: 400, ‘message’: ‘the request exceeds the available context size. try increasing the context size or enable context shift’, ‘type’: ‘invalid_request_error’}

    Se você estiver usando a funcionalidade multimodal, o ctx_shift será desativado por padrão. Tente aumentar o n_ctx ou diminuir o n_parallel para aumentar o tamanho do contexto de cada slot.

  • Server error: {‘code’: 500, ‘message’: ‘Input prompt is too big compared to KV size. Please try increasing KV size.’, ‘type’: ‘server_error’}

    Log do servidor:

    ggml_metal_graph_compute: command buffer 1 failed with status 5
    error: Insufficient Memory (00000008:kIOGPUCommandBufferCallbackErrorOutOfMemory)
    graph_compute: ggml_backend_sched_graph_compute_async failed with error -1
    llama_decode: failed to decode, ret = -3
    srv  update_slots: failed to decode the batch: KV cache is full - try increasing it via the context size, i = 0, n_batch = 2048, ret = -3
    

    Isso pode ser causado por falha na criação do cache KV. Você pode resolver reduzindo o n_ctx, aumentando o n_parallel ou ajustando o parâmetro n_gpu_layers para carregar parte do modelo na GPU. Observe que, se você estiver lidando apenas com requisições de inferência serial, aumentar o n_parallel não trará ganhos de desempenho.

transformers#

O Transformers suporta a grande maioria dos modelos recém-lançados. É o motor padrão usado para modelos no formato Pytorch.

vLLM#

vLLM é um motor de inferência de modelo de linguagem grande muito eficiente e fácil de usar.

A vLLM tem as seguintes características:

  • Taxa de transferência de inferência líder

  • Uso de PagedAttention para gerenciar eficientemente a memória das chaves e valores de atenção

  • Loteamento contínuo de requisições recebidas

  • Kernel CUDA otimizado

Quando as seguintes condições forem atendidas, o Xinference selecionará automaticamente o vLLM como mecanismo de inferência:

  • O formato do modelo pode ser pytorch, gptq, awq, fp4, fp8 ou bnb.

  • Quando o formato do modelo for pytorch, a opção de quantização deve ser none.

  • Quando o formato do modelo for awq, a opção de quantização deve ser Int4.

  • Quando o formato do modelo for gptq, as opções de quantização devem ser Int3, Int4 ou Int8.

  • O sistema operacional é Linux e há pelo menos um dispositivo compatível com CUDA.

  • Os campos model_family do modelo personalizado e model_name do modelo embutido estão na lista de suporte do vLLM.

Atualmente, os modelos suportados incluem:

  • code-llama, code-llama-instruct, code-llama-python, deepseek, deepseek-chat, deepseek-coder, deepseek-coder-instruct, deepseek-r1-distill-llama, gorilla-openfunctions-v2, HuatuoGPT-o1-LLaMA-3.1, llama-2, llama-2-chat, llama-3, llama-3-instruct, llama-3.1, llama-3.1-instruct, llama-3.3-instruct, minicpm5-1b, tiny-llama, wizardcoder-python-v1.0, wizardmath-v1.0, Yi, Yi-1.5, Yi-1.5-chat, Yi-1.5-chat-16k, Yi-200k, Yi-chat

  • codestral-v0.1, mistral-instruct-v0.1, mistral-instruct-v0.2, mistral-instruct-v0.3, mistral-large-instruct, mistral-nemo-instruct, mistral-v0.1, openhermes-2.5, seallm_v2

  • Baichuan-M2, codeqwen1.5, codeqwen1.5-chat, deepseek-r1-distill-qwen, DianJin-R1, fin-r1, HuatuoGPT-o1-Qwen2.5, KAT-V1, marco-o1, qwen1.5-chat, qwen2-instruct, qwen2.5, qwen2.5-coder, qwen2.5-coder-instruct, qwen2.5-instruct, qwen2.5-instruct-1m, qwenLong-l1, QwQ-32B, QwQ-32B-Preview, seallms-v3, skywork-or1, skywork-or1-preview, XiYanSQL-QwenCoder-2504

  • llama-3.2-vision, llama-3.2-vision-instruct

  • baichuan-2, baichuan-2-chat

  • InternLM2ForCausalLM

  • qwen-chat

  • mixtral-8x22B-instruct-v0.1, mixtral-instruct-v0.1, mixtral-v0.1

  • cogagent

  • glm-edge-chat, glm4-chat, glm4-chat-1m

  • codegeex4, glm-4v

  • seallm_v2.5

  • orion-chat

  • qwen1.5-moe-chat, qwen2-moe-instruct

  • CohereForCausalLM

  • deepseek-v2-chat, deepseek-v2-chat-0628, deepseek-v2.5, deepseek-vl2

  • deepseek-prover-v2, deepseek-r1, deepseek-r1-0528, deepseek-v3, deepseek-v3-0324, Deepseek-V3.1, moonlight-16b-a3b-instruct

  • deepseek-r1-0528-qwen3, qwen3

  • minicpm3-4b

  • internlm3-instruct

  • gemma-3-1b-it

  • glm4-0414

  • minicpm-2b-dpo-bf16, minicpm-2b-dpo-fp16, minicpm-2b-dpo-fp32, minicpm-2b-sft-bf16, minicpm-2b-sft-fp32, minicpm4

  • Ernie4.5

  • Qwen3-Coder, Qwen3-Instruct, Qwen3-Thinking

  • glm-4.5, GLM-4.6, GLM-4.7

  • gpt-oss

  • seed-oss

  • Qwen3-Next-Instruct, Qwen3-Next-Thinking

  • DeepSeek-V3.2, DeepSeek-V3.2-Exp

  • MiniMax-M2, MiniMax-M2.5, MiniMax-M2.7

  • GLM-4.7-Flash

  • glm-5, glm-5.1

  • DeepSeek-V4-Flash, DeepSeek-V4-Pro

SGLang#

SGLang possui um runtime de inferência de alto desempenho baseado em RadixAttention. Ele acelera significativamente a execução de programas complexos de LLM ao reutilizar automaticamente o cache KV entre múltiplas chamadas. Também suporta outras técnicas comuns de inferência, como processamento em lote contínuo e paralelismo de tensor.

MLX#

MLX oferece uma maneira eficiente de executar LLMs em chips Apple Silicon. Quando o modelo está no formato MLX, recomenda-se que usuários de Mac com chips Apple Silicon utilizem o motor MLX.