Guía completa para el despliegue de LLM local: Construye tu propio flujo de trabajo de agentes para la libertad de tokens (Ideal para principiantes)

@Lonely__MH
CHINO17 ago 2026
153K
287
74
94
470

TL;DR

Un tutorial detallado sobre cómo desplegar el modelo Ling-3.0-flash de 124B localmente usando vLLM, incluyendo pruebas de rendimiento, desarrollo de TUI e integración de flujos de trabajo multimodelo para tareas de contenido automatizadas.

Este artículo busca ser lo más fácil de entender posible, permitiendo que cualquier jugador novato domine fácilmente el despliegue de modelos locales y construya su propio flujo de trabajo.

Este año, los modelos grandes de código abierto nacionales han estado muy activos. DeepSeek, Qwen, Kimi, GLM, MiniMax... aparecen nuevos modelos uno tras otro, abriendo constantemente sus pesos y comenzando a competir con los modelos de código cerrado de Estados Unidos.

Pero cuantos más modelos hay, más me importa una pregunta específica: ¿pueden estos modelos no solo quedarse en páginas web y APIs, sino realmente instalarse en nuestras propias máquinas, conectándose a archivos locales, herramientas y flujos de trabajo?

Aunque el precio unitario de los tokens de API generalmente está disminuyendo, el costo sigue siendo alto cuando se enfrentan llamadas de alta frecuencia y textos largos. Sumado a problemas como la privacidad, la red y el control de datos, el despliegue local se está convirtiendo en la opción para más y más desarrolladores y empresas.

Así que esta vez, quiero elegir un modelo con un tamaño desafiante y representativo del despliegue en una sola máquina para ejecutar el proceso completo de despliegue local.

El protagonista finalmente seleccionado es Ling-3.0-flash, de código abierto de Ant Bailing, un modelo de Mezcla de Expertos (MoE) con un total de 124B de parámetros. Resulta que tengo un NVIDIA DGX Spark a mano, que justo puede ejecutarlo.

Sin más preámbulos, comencemos con el tema principal.

Lonely - inline image

01 Introducción a la Terminología

Antes de empezar, presentemos algunos términos relacionados con los modelos para que todos se pongan al día ✌🏻

Precisión del Modelo

Un mismo modelo a menudo ofrece diferentes versiones de precisión o cuantizadas, lo que afecta directamente el tamaño del modelo y el umbral de ejecución.

Lonely - inline image

Esta vez estamos usando la versión oficial Ling INT4, que pesa aproximadamente 71.75 GB.

Denso o MoE

Lonely - inline image

Ten en cuenta que 5.1B es solo el número de parámetros activados por inferencia; los 124B completos de pesos aún deben cargarse en la memoria.

Motor de Inferencia

El motor de inferencia se encarga de cargar los pesos, gestionar el contexto y la concurrencia, y proporcionar interfaces. Es la herramienta para ejecutar el modelo, no el modelo en sí.

Lonely - inline image

Elegimos vLLM esta vez porque la adaptación oficial actual es compatible con los pesos INT4 de Ling-3.0-flash y la decodificación especulativa MTP.

02 Instalación y Despliegue del Modelo

Primero, presentemos el entorno de instalación: estoy usando un NVIDIA DGX Spark, equipado con un chip GB10 y 121.6 GB de memoria unificada, ejecutando Ubuntu 24.04 en arquitectura ARM64. El despliegue es Ling-3.0-flash-INT4, y las pruebas de rendimiento posteriores usarán el Qwen 3.8-27B local como referencia.

El oficial proporciona una versión básica y diferentes versiones de precisión como FP8, FP4 e INT4. Puedes elegir según tu hardware.

También hay un Ling-3.0-tiny de 8B y sus versiones FP8 e INT4. Los usuarios con una Mac normal o una sola 4090 pueden priorizar probar las versiones de baja precisión de Tiny.

Lonely - inline image

Paso 1: Descargar el modelo. Esta vez usé la versión INT4 oficial. Enlaces de descarga 👇🏻

Si el acceso a Hugging Face es complicado, puedes descargar manualmente desde ModelScope. Después de la descarga, hay 24 fragmentos safetensors, totalizando aproximadamente 71.75 GB. También necesitas dejar espacio para el motor de inferencia y el KV Cache durante la ejecución.

Paso 2: Preparar el entorno. La arquitectura BailingMoeV3 de Ling-3.0-flash es bastante nueva. Intenté usar GGUF con llama.cpp, pero dio error con unknown model architecture: 'bailingmoe3'. Así que esta vez, usé directamente la rama de vLLM adaptada oficialmente:

text
1pip install uv
2uv venv ~/my_ling_env
3source ~/my_ling_env/bin/activate
4
5git clone -b ling_3_0 https://github.com/inclusionAI/vllm-ling-v3.git
6cd vllm-ling-v3
7VLLM_USE_PRECOMPILED=1 uv pip install --editable . --torch-backend=auto

Paso 3: Iniciar el servicio de inferencia. Reemplaza la ruta del modelo con tus pesos INT4 descargados localmente:

text
1vllm serve /path/to/Ling-3.0-flash-int4 \
2 --served-model-name ling-int4 \
3 --host 127.0.0.1 \
4 --port 30000 \
5 --trust-remote-code \
6 --max-model-len 16384 \
7 --gpu-memory-utilization 0.8 \
8 --max-num-seqs 8 \
9 --reasoning-parser ling3 \
10 --speculative-config '{"method":"bailing_hybrid_v3_mtp","num_speculative_tokens":1}'

⚠️

Reemplaza las rutas en el comando con las rutas reales en tu máquina.

Aquí, el límite de contexto se establece en 16K, la concurrencia en 8, y se habilita la decodificación especulativa MTP.

Nota: MTP (Multi-Token Prediction) permite que el modelo intente predecir múltiples tokens a la vez. Las partes correctamente predichas se pueden adoptar directamente, reduciendo las rondas de cálculo para generar tokens uno por uno y aumentando la velocidad de salida.

Paso 4: Verificar el servicio. Una vez iniciado, envía una solicitud simple:

bash
1curl -s http://127.0.0.1:30000/v1/chat/completions \
2 -H "Content-Type: application/json" \
3 -d '{"model":"ling-int4",
4 "messages":[{"role":"user","content":"Hola, preséntate en una oración."}],
5 "stream":true}'

La terminal comienza a devolver contenido en streaming, lo que indica que este modelo de 124B se está ejecutando localmente.

Lonely - inline image

03 Probando el Rendimiento y la Capacidad del Modelo

  1. Rendimiento de Tokens Cuando el modelo se inició por primera vez, ejecuté una ronda de pruebas usando el benchmark integrado de vLLM. Las 20 solicitudes se completaron, con un rendimiento de salida de 84.34 tok/s, un rendimiento total de tokens de 133.10 tok/s y una tasa de aceptación de MTP del 67.35%.
Lonely - inline image

Salida del registro original 👇🏻

text
1============ Serving Benchmark Result ============
2Successful requests: 20
3Failed requests: 0
4Request rate configured (RPS): 2.00
5Benchmark duration (s): 60.71
6Total input tokens: 2960
7Total generated tokens: 5120
8Request throughput (req/s): 0.33
9Output token throughput (tok/s): 84.34
10Peak output token throughput (tok/s): 61.00
11Peak concurrent requests: 20.00
12Total token throughput (tok/s): 133.10
13---------------Time to First Token----------------
14Mean TTFT (ms): 19692.98
15Median TTFT (ms): 18877.99
16P99 TTFT (ms): 40039.02
17-----Time per Output Token (excl. 1st token)------
18Mean TPOT (ms): 44.61
19Median TPOT (ms): 44.09
20P99 TPOT (ms): 49.68
21---------------Inter-token Latency----------------
22Mean ITL (ms): 74.09
23Median ITL (ms): 72.39
24P99 ITL (ms): 280.71
25---------------Speculative Decoding---------------
26Acceptance rate (%): 67.35
27Acceptance length: 1.67
28Drafts: 3051
29Draft tokens: 3051
30Accepted tokens: 2055
31Per-position acceptance (%):
32 Position 0: 67.35
33==================================================

Posteriormente, realicé pruebas de concurrencia en Ling y en el Qwen 3.8-27B local. Con 8 de concurrencia, el rendimiento agregado de Ling fue de 141.38 tok/s, mientras que el de Qwen 3.8 fue de 32.61 tok/s, una diferencia de aproximadamente 4.34 veces en esta ronda.

🔥🔥🔥Comparación de Pruebas de Estrés Ling-3.0-Flash Vs Qwen3.8-27B

Lonely - inline image

Ling-3.0-flash

Lonely - inline image

Qwen 3.8 -27B

Lonely - inline image
Lonely - inline image

Algunos podrían preguntarse: ¿por qué la concurrencia única de Ling es solo de 34.77 tok/s, pero con 8 de concurrencia se convierte en 141.38 tok/s? Los amigos técnicos también podrían preguntar si esta puntuación de concurrencia única es lenta en comparación con los datos oficiales.

Aquí necesitamos explicar el método de prueba específico y las diferencias de velocidad causadas por diferentes métodos de evaluación:

  1. Método de Prueba y Enlace Extremo a Extremo Real: Esta prueba utiliza una interfaz local compatible con OpenAI, realizando pruebas de estrés a través de solicitudes HTTP en streaming, no una prueba de inferencia fuera de línea separada del marco del servicio. Cada solicitud de Ling usa un prompt de texto largo de aproximadamente 150 tokens, generando hasta 512 tokens. El tiempo comienza desde la solicitud HTTP del cliente hasta que se completa la respuesta en streaming, incluyendo así llamadas HTTP locales, programación del servicio, procesamiento del Tokenizer, Prefill, decodificación token por token y retorno en streaming.
  2. Velocidad de Salida de un Solo Flujo vs. Rendimiento Agregado de la Máquina: Velocidad de un solo flujo (experiencia real del usuario): En $c=1$, la tasa de salida de extremo a extremo es de aproximadamente 35.34 tok/s (pruebas de conversación única reales a 38+ tok/s), equivalente a más de 35 caracteres chinos por segundo, lo cual es extremadamente rápido visualmente; Rendimiento agregado (salida total bajo concurrencia): A medida que aumenta la concurrencia, vLLM usa Continuous Batching para combinar múltiples solicitudes en cálculos de GPU, aprovechando al máximo el ancho de banda de memoria unificada de Blackwell. Con 8 de concurrencia, el rendimiento agregado de la máquina se disparó a 141.38 tok/s.

En cuanto a por qué difiere de algunos benchmarks oficiales, la clave son los criterios de prueba. La precisión del modelo, el motor de inferencia, la longitud del contexto, el recuento de tokens de entrada/salida, la escala de concurrencia y si se usa inferencia fuera de línea o servicios HTTP afectan el resultado final. Solo cuando estas condiciones son básicamente consistentes, los números son adecuados para una comparación directa.

En pocas palabras: La velocidad varía debido a los métodos de evaluación—si se prueba con concurrencia extremadamente alta (como 32/64) o en un entorno de computación puro sin protocolos de red, los números de rendimiento total se verían más altos; en nuestras llamadas diarias de conversación individual o producción de código, la velocidad de un solo flujo de Ling de 35+ tok/s y una latencia del primer token inferior a 220 ms ya se sienten extremadamente suaves y sin retrasos.

En concurrencia única, la velocidad promedio de un solo flujo de Ling es de aproximadamente 35.34 tok/s; con 8 de concurrencia, el rendimiento agregado alcanza los 141.38 tok/s. El rendimiento agregado de Qwen3.8 con 8 de concurrencia es de 32.61 tok/s. En esta ronda, la ventaja de Ling se refleja principalmente en la velocidad de salida y el rendimiento concurrente, con respuestas notablemente más rápidas en el uso real.

2. Capacidades Reales

Los benchmarks solo reflejan parte del rendimiento; la usabilidad real depende del desempeño del modelo en problemas específicos. Elegí tres direcciones para pruebas simples.

(1) Razonamiento Lógico

Preparé una variación del problema de los pollos y conejos, un problema clásico de lavado de autos y un problema de máquina de lavado de autos, principalmente para ver si puede entender con precisión las condiciones en lugar de aplicar una respuesta de apariencia familiar. Entre ellos, el problema de los pollos y conejos incluía 4 pájaros mecánicos con tres patas para romper patrones convencionales.

Lonely - inline image

(2) Límites de Seguridad: A continuación, probé su reacción a operaciones de alto riesgo: si ejecuta directamente o identifica riesgos, confirma con el usuario y proporciona alternativas más seguras.

Lonely - inline image

(3) Texto Largo

Finalmente, una ronda de prueba de texto largo. Oculté información clave en un contexto largo para ver si podía encontrarla y responder con precisión, mientras observaba la velocidad de salida y la estabilidad bajo texto largo.

Lonely - inline image

04 De API a TUI, luego a Llamada de Herramientas

Hemos completado el despliegue del modelo y las pruebas de capacidad, pero para los usuarios comunes, curl es más adecuado para verificar interfaces que para uso diario. Para hablar con un modelo local durante mucho tiempo, se necesita una interfaz de interacción más conveniente.

Así que primero hice un TUI simple, una interfaz de chat que se ejecuta en la terminal. No es un software complejo; le pedí a la IA que escribiera un script de Python para encapsular las llamadas de interfaz local, la salida en streaming y el historial de conversación, y luego lo inicié con un comando:

text
1python3 ling-3.0-chat.py

De esta manera, no tengo que escribir curl cada vez. Abro la terminal y chateo directamente; las respuestas llegan en streaming, y puedo ver TPS, TTFT y recuentos de tokens. Completé las pruebas de capacidad anteriores en esta interfaz.

Sin embargo, en este punto, el TUI es solo una herramienta de chat de texto sin la capacidad de llamar herramientas. El modelo grande es como un "cerebro" responsable de pensar, pero no tiene "manos y pies" para leer archivos, ejecutar comandos o conocer el estado actual del sistema.

Para permitirle llamar capacidades del sistema, necesitamos agregar llamadas de herramientas. En pocas palabras, operaciones como la ejecución de comandos, la lectura y escritura de archivos se encapsulan como herramientas. El modelo primero juzga qué información necesita, luego inicia un tool use; el script de Python lo ejecuta y entrega el resultado al modelo para su posterior procesamiento.

Por ejemplo, inicialmente, cuando le pedí que verificara la información de la GPU del sistema, no sabía el uso real y solo podía decirme cómo verificarlo. Después de agregar la llamada de herramientas, pudo ejecutar comandos del sistema por sí mismo y organizar los resultados de la consulta directamente en el TUI.

Basado en el mismo principio, puedes continuar conectando búsqueda web, interfaces empresariales internas, bases de datos, etc. Las herramientas específicas se pueden expandir según las necesidades del negocio.

Lonely - inline image

05 Conectando a una Interfaz Visual

Para uso personal, un TUI con llamada de herramientas es bastante suficiente. Para ir más allá y poner el modelo en un banco de trabajo de Agente más completo, puedes conectarte a un framework de agente como Harness.

Esta vez elegí el DeepSeek Harness de Liang Sheng, que no solo agrega una página de chat, sino que también proporciona gestión de contexto, espacios de trabajo, llamada de herramientas, control de permisos y planificación de tareas, con una interfaz web incorporada. Utiliza una arquitectura de "todo es un plugin", lo que permite una futura expansión funcional.

Ten en cuenta que DeepSeek Harness todavía está en la etapa de vista previa para desarrolladores y se actualiza rápidamente, lo que puede provocar cambios incompatibles. Hay muchos otros frameworks de Agente de código abierto; puedes elegir según tus necesidades.

El proceso de conexión no es complejo: el núcleo es agregar un servicio de modelo personalizado y apuntar la dirección a la interfaz local proporcionada por vLLM. Además de configurar en la interfaz web, también puedes modificar el archivo de configuración como se muestra:

text
1llm-pi-ai:
2 providers:
3 ling:
4 displayName: "Ling-3.0-flash (124B)"
5 api: openai-completions
6 baseURL: http://127.0.0.1:30000/v1
7 apiKeyEnv: OPENAI_API_KEY
8 models:
9 - id: ling-int4
10 name: Ling-3.0-flash (124B MoE)

Después de iniciar la interfaz web, abre la dirección predeterminada en tu navegador:

text
1http://localhost:3080

De esta manera, el chat diario, el historial y el cambio de modelo se pueden hacer en DeepSeek Harness. Harness en sí mismo proporciona operaciones de archivos, ejecución de comandos y planificación de tareas, que se pueden extender aún más a través de plugins. Para uso específico y plugins de terceros, los amigos interesados pueden buscarlos.

Ten en cuenta que las herramientas que escribí en el TUI de Python no se migrarán automáticamente. Para usarlas en Harness, deben reintegrarse según su mecanismo de plugins. A continuación se muestra el efecto de integración real que hice para Ling; puedes ver la grabación.

Lonely - inline image

06 Construyendo un Flujo de Trabajo de IA

En este punto, el enlace de modelo único desde el despliegue hasta la interfaz y la llamada de herramientas para Ling-3.0-flash está completamente establecido.

Sin embargo, en proyectos reales, generalmente no usamos un solo modelo. Diferentes modelos se destacan en diferentes cosas; combinarlos a menudo es mejor que tener un solo modelo que lo haga todo.

La ventaja de Ling-3.0-flash es el procesamiento de texto y la velocidad de generación, pero no admite entrada multimodal nativa. Si una tarea requiere comprender imágenes o videos, puedes conectar un modelo multimodal como Qwen3.8-27B; si necesitas generar video, puedes conectar el recientemente lanzado MiniMax H3 de código abierto. Cada modelo maneja lo que mejor sabe hacer, pasando los resultados al siguiente.

Por ejemplo, para construir un flujo de trabajo de generación de video, Ling puede primero entender los requisitos, escribir guiones y dividir storyboards, luego el modelo multimodal verifica los materiales de referencia y la consistencia visual, y finalmente, el modelo de video lo genera. Después de la generación, se puede hacer otra ronda de inspección visual para modificar los prompts y regenerar según los resultados:

text
1Requisitos y Materiales
2→ Ling genera guión y storyboards
3→ Modelo multimodal verifica materiales y requisitos visuales
4→ MiniMax H3 genera video
5→ Modelo multimodal verifica visuales y continuidad
6→ Ling ajusta prompts basándose en la retroalimentación
7→ Humano completa la revisión final

El video a continuación muestra el efecto real de los prompts generados por Ling-3.0-flash y luego entregados a MiniMax H3 para su generación.

Lonely - inline image

Una vez que este proceso está fijo, solo necesitas cambiar los requisitos y materiales para un uso repetido. Sin embargo, ejecutar múltiples modelos grandes localmente simultáneamente tiene requisitos muy altos de VRAM y memoria. Ling INT4 es de aproximadamente 72 GB, Qwen3.8-27B BF16 es de aproximadamente 51.77 GB, más el KV Cache y los modelos de video; es difícil mantenerlos todos residentes en este Spark.

Antes del despliegue real, asegúrate de calcular cuánta VRAM o memoria unificada necesita cada modelo. Cuando los recursos son insuficientes, puedes cambiar modelos paso a paso, elegir versiones cuantizadas o dividir modelos en múltiples dispositivos. Múltiples modelos ya no se ejecutan de forma independiente, sino que colaboran en torno a la misma tarea—este es un flujo de trabajo de IA multimodelo verdaderamente utilizable.

07 Reflexiones Finales

Desde el despliegue del modelo, TUI y llamada de herramientas hasta flujos de trabajo multimodelo, todo el enlace está completo. Este artículo tiene como objetivo compartir un método repetible, no una configuración fija.

Los modelos de código abierto continuarán actualizándose. En el futuro, ya sea que cambies modelos, versiones de cuantización o motores de inferencia, el camino desde la descarga de pesos y el inicio de servicios hasta la conexión de herramientas y flujos de trabajo no cambiará mucho.

Si las condiciones lo permiten, todavía recomiendo que todos desplieguen modelos locales personalmente:

  1. Control de Datos: Los archivos, conversaciones y datos comerciales permanecen en tu máquina o intranet, con permisos de directorio y comandos restringidos por ti.
  2. Adecuado para Uso de Alta Frecuencia: No es necesario calcular los costos de tokens por uso, reduciendo la dependencia de la red y servicios de terceros.
  3. Fácil Personalización: Los modelos, la precisión de cuantización, los motores de inferencia y las herramientas se pueden ajustar, y se pueden conectar interfaces internas y bases de datos.

A medida que los modelos de código abierto se vuelven más potentes, el despliegue local se convertirá en la opción para más personas. Puedes construir herramientas y flujos de trabajo basados en las necesidades de tu tarea, las condiciones del equipo y el presupuesto. Espero que todos puedan tener su propio Agente local en el futuro, sin tener que mirar el consumo de tokens cada vez, logrando realmente su propia "Libertad de Tokens"!

Recursos Relacionados

📚 Resumen de Artículos Históricos

  1. Guía Práctica de Hermes Agent: De la Ansiedad X a la Acumulación Automática
  2. Guía Anticaída del Cabello para Programadores
  3. Conectando Hermes a iMessage
  4. Conectando Hermes a X Premium
  5. Guía Completa de Hermes Agent
  6. Guía de Introducción a Hermes Agent: Modelos Auxiliares
  7. Guía de Introducción a Hermes Agent
  8. Guía Avanzada de Hermes Agent
  9. Guía Incompleta de Hermes Agent
  10. Guía Completa para Suscripción a Claude Pro en Nigeria
  11. Tutorial para Registrar una ID de Apple en Nigeria
  12. Suscripción a ChatGPT Plus a Mitad de Precio en Turquía
  13. Registro de ID de Apple en EE. UU.
  14. Suscripción a Claude/ChatGPT/Gemini con Alipay
  15. Tutorial Completo para Despliegue Local de LLM en Mac
  16. Verificación de Calidad de IP
  17. Por Qué Doubao No Recomienda Tu Marca
  18. Cómo Explicarle a Tu Abuela Que Lo Que Dijo Doubao No Es Verdad

Si esto fue útil, por favor sigue + marca como favorito + comparte 👏🏻

Sigue a @Lonely__MH para actualizaciones continuas de tutoriales para principiantes y perspectivas sobre herramientas de IA.

Recrear en YouMind

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
Para creadores

Convierte tu Markdown en un artículo de 𝕏 impecable

Cuando publicas tus propios textos largos, dar formato en 𝕏 a imágenes, tablas y bloques de código es un fastidio. YouMind convierte un borrador completo en Markdown en un artículo de 𝕏 impecable y listo para publicar.

Prueba Markdown a 𝕏

Más patrones por descifrar

Artículos virales recientes

Explorar más artículos virales