Motor de inferencia#

Xinference admite diferentes motores de inferencia para distintos modelos. Una vez que el usuario selecciona un modelo, Xinference elegirá automáticamente el motor adecuado.

llama.cpp#

Xinference actualmente admite xllamacpp desarrollado por el equipo de Xinference como backend de llama.cpp para su ejecución. llama.cpp se basa en la biblioteca de tensores ggml y soporta la inferencia de la serie de modelos LLaMA y sus variantes.

Advertencia

A partir de Xinference v1.5.0, xllamacpp se convierte en la opción predeterminada para llama.cpp, y llama-cpp-python queda en desuso; desde Xinference v1.6.0, llama-cpp-python ha sido eliminado.

Consulte la definición de la estructura common_params en common.h de llama.cpp para configurar los parámetros.

Puede haber parámetros anidados en varios niveles. Por ejemplo, sampling.top_k. Utilice . para separar los parámetros anidados.

Aquí hay un ejemplo de cómo configurar los parámetros de muestreo anidado en la WebUI:

actor

NGL automático#

Added in version v1.6.1: A partir de v1.6.1, cuando no se especifica n-gpu-layers (por defecto -1), se habilitará automáticamente la función de estimación de capas de GPU.

Esta función puede configurar automáticamente el número de capas de GPU (NGL) para el backend de llama.cpp. Tenga en cuenta que esto no es un cálculo preciso, por lo que el resultado de -ngl puede no ser óptimo y aún es posible encontrar errores de memoria insuficiente.

Actualmente NGL automático no tiene soporte oficial. Consulte el siguiente issue para más detalles:

Nuestra implementación se basa en el NGL automático de Ollama, pero tiene algunas diferencias:

  • Usamos la información del dispositivo proporcionada por xllamacpp.

  • Hemos eliminado la compatibilidad con algunas arquitecturas poco comunes, que utilizarán la lógica de cálculo predeterminada.

  • Si el NGL automático falla, intentaremos cargar todo en la GPU.

  • No soportamos la incrustación del proyector multimodal en el GGUF del modelo. Este formato de modelo se encuentra actualmente en etapa experimental.

Preguntas frecuentes#

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

    Registro del 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
    

    Puede deberse a memoria insuficiente. Puedes intentar reducir n_ctx para solucionarlo.

  • 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”}

    Si estás utilizando la funcionalidad multimodal, ctx_shift estará desactivado por defecto. Intenta aumentar n_ctx o reducir n_parallel para incrementar el tamaño del 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”}

    Registro del 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
    

    Puede deberse a un fallo en la creación de la cache KV. Puedes solucionarlo reduciendo n_ctx, aumentando n_parallel o ajustando el parámetro n_gpu_layers para cargar parte del modelo en la GPU. Ten en cuenta que si solo procesas solicitudes de inferencia en serie, aumentar n_parallel no mejorará el rendimiento.

transformers#

Transformers es compatible con la gran mayoría de los modelos más recientes. Es el motor predeterminado para modelos en formato Pytorch.

vLLM#

vLLM es un motor de inferencia de modelos de lenguaje grandes muy eficiente y fácil de usar.

vLLM tiene las siguientes características:

  • Rendimiento de inferencia líder

  • Usa PagedAttention para gestionar eficientemente la memoria de claves y valores de atención.

  • Procesamiento por lotes continuo de solicitudes entrantes

  • Núcleo optimizado de CUDA

Xinference seleccionará automáticamente vLLM como motor de inferencia cuando se cumplan las siguientes condiciones:

  • El formato del modelo es pytorch, gptq, awq, fp4, fp8 o bnb.

  • Cuando el formato del modelo es pytorch, la opción de cuantización debe ser none.

  • Cuando el formato del modelo es awq, la opción de cuantificación debe ser Int4.

  • Cuando el formato del modelo sea gptq, las opciones de cuantización deben ser Int3, Int4 o Int8.

  • El sistema operativo es Linux y tiene al menos un dispositivo compatible con CUDA.

  • El campo model_family de los modelos personalizados y el campo model_name de los modelos integrados están en la lista de soporte de vLLM.

Actualmente, los modelos compatibles son:

  • 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 cuenta con un runtime de inferencia de alto rendimiento basado en RadixAttention. Acelera significativamente la ejecución de programas complejos de LLM al reutilizar automáticamente la caché KV entre múltiples llamadas. También admite otras técnicas comunes de inferencia, como el procesamiento por lotes continuo y el procesamiento paralelo de tensores.

MLX#

MLX proporciona una forma de ejecutar LLM de manera eficiente en chips Apple Silicon. Cuando el modelo incluye el formato MLX, se recomienda que los usuarios de Mac con chip Apple Silicon utilicen el motor MLX.