{"schemaVersion":1,"id":"https://lucioduran.com/es/projects/llm-serving-bench","url":"https://lucioduran.com/es/projects/llm-serving-bench","title":"LLM Serving Bench","description":"Medición de inferencia CPU por HTTP/SSE: llegadas por token, TTFT, TPOT, latencia y memoria. Ocho configuraciones de SmolLM2 con evidencia cruda y replay offline.","language":"es","datePublished":"2026-10-21","dateModified":"2026-10-21","contentFormat":"text/markdown","content":"[Proyectos](<https://lucioduran.com/es/projects>) / LLM Serving Bench\n\n# LLM Serving Bench\n\nMedición de inferencia CPU por HTTP/SSE: llegadas por token, TTFT, TPOT, latencia y memoria. Ocho configuraciones de SmolLM2 con evidencia cruda y replay offline.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 · Licencia: [MIT](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/LICENSE>)\n\nFicha publicada: 2026-10-21 · Ficha actualizada: 2026-10-21\n\n[Repositorio](<https://github.com/lucioduran/llm-serving-bench>) · [Evidencia original](<https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json>) · [Release v0.1.0](<https://github.com/lucioduran/llm-serving-bench/releases/tag/v0.1.0>)\n\n## Problema y utilidad para agentes\n\nUn contador de tokens por segundo no explica cuánto espera el usuario ni dónde se forma la cola. Este banco registra cada token generado y recibido para separar el tiempo al primer token, la decodificación y la latencia total.\n\nPermite presupuestar la espera de un agente con mediciones del servidor real. Los resultados identifican modelo, precisión, hardware, concurrencia y longitud de entrada, las condiciones necesarias para interpretar una cifra de rendimiento.\n\n## Arquitectura\n\n1. **Servidor medido.** SmolLM2-135M-Instruct en FP32 sobre CPU, con un único slot de generación y un evento SSE por ID de token. Los clientes usan HTTP sobre loopback.\n2. **Matriz controlada.** Uno o dos hilos de CPU, concurrencia uno o dos y entradas de 64 o 256 tokens exactos. Cada configuración procesa seis prompts después de un calentamiento excluido.\n3. **Evidencia reconstruible.** Conserva solicitudes, IDs, tiempos de llegada, errores, muestras RSS y hashes del modelo. Un verificador sin dependencias recalcula las métricas del informe.\n\n- [Diseño y metodología](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/design.md>)\n- [Protocolo HTTP/SSE](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/protocol.md>)\n\n## Qué demuestra\n\n- Instrumentación por token y definición explícita de los límites de cada métrica.\n- Comparación de configuraciones con solicitudes registradas y control de concurrencia.\n- Separación entre consumo observado, costos supuestos y variables no medidas.\n\n## Resultados publicados\n\nMedición publicada en Intel Xeon W-3223, macOS, Python 3.11.13 y PyTorch 2.2.2. Las 48 solicitudes terminaron correctamente y generaron 1.152 tokens de salida. Los ocho calentamientos se excluyen.\n\nTTFT incluye conexión, tokenización, cola y prefill. TPOT es el intervalo entre el primer y el último token dividido por los intervalos de generación. Los percentiles interpolan seis solicitudes por configuración; el throughput usa la duración completa de esa configuración.\n\n### Ocho configuraciones medidas\n\n| Hilos / entrada / concurrencia | TTFT p50 (s) | TPOT p50 (ms) | Latencia p95 (s) | Tokens de salida/s |\n| --- | --- | --- | --- | --- |\n| 1 / 64 / 1 | 0.196 | 62.92 | 1.704 | 14.49 |\n| 1 / 64 / 2 | 1.871 | 63.74 | 3.355 | 14.35 |\n| 1 / 256 / 1 | 0.654 | 72.02 | 2.415 | 10.28 |\n| 1 / 256 / 2 | 3.002 | 72.84 | 4.691 | 10.24 |\n| 2 / 64 / 1 | 0.128 | 42.89 | 1.143 | 21.50 |\n| 2 / 64 / 2 | 1.256 | 43.24 | 2.460 | 20.80 |\n| 2 / 256 / 1 | 0.414 | 48.94 | 1.601 | 15.51 |\n| 2 / 256 / 2 | 2.041 | 50.61 | 3.234 | 14.93 |\n\nDos hilos dieron mayor throughput en esta muestra. Duplicar clientes agregó principalmente espera porque el servidor conserva un único slot. Seis solicitudes por configuración no establecen un SLA ni un ranking general de servidores.\n\nEl RSS máximo muestreado varió de 838,7 a 1.023,5 MiB. La energía permanece sin medir. El costo del informe usa una asignación ilustrativa de USD 0,10 por máquina-hora; no es una factura ni un gasto observado. [Evidencia original](<https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json>).\n\n## Reproducir\n\nEl replay requiere Python 3.11 y biblioteca estándar. Repetir la inferencia requiere las dependencias del modelo y descargar sus pesos públicos; la ejecución posterior usa archivos locales.\n\nLos comandos de entorno son para shell POSIX. Usá una salida nueva y ejecutá una sola medición intensiva a la vez. El lock publicado describe Intel macOS; otros sistemas pueden necesitar otra distribución de PyTorch.\n\n### Revisar la evidencia guardada\n\n```\ngit clone https://github.com/lucioduran/llm-serving-bench.git\ncd llm-serving-bench\ngit checkout f291bbe0e3fbd377438b56f4cbf4a7a808720d98\npython -m serving_bench verify results/reference/report.json\n```\n\n### Repetir la medición local\n\n```\npython -m venv .venv\n. .venv/bin/activate\npython -m pip install -r requirements-models.txt\npython -m serving_bench download\npython -m serving_bench run --output work/reproduction --hourly-usd 0.10\npython -m serving_bench verify work/reproduction/report.json\n```\n\n## Alcance y límites\n\n- Un único modelo, equipo y orden fijo de ejecución. Cliente y servidor comparten CPU.\n- Carga de circuito cerrado sin batching continuo, GPU, saturación por tasa de llegada ni evaluación de calidad de respuestas.\n- RSS muestreado puede perder picos. El replay comprueba consistencia; no vuelve a medir tiempos ni autentica el hardware.\n\n- [Optimización de inferencia: KV-cache, PagedAttention y medición](<https://lucioduran.com/es/blog/llm-inference-optimization-kv-cache-paged-attention>)\n\n## Fuentes y revisión\n\nLos valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.\n\n- Revisión consultada: [` f291bbe0e3fbd377438b56f4cbf4a7a808720d98 `](<https://github.com/lucioduran/llm-serving-bench/commit/f291bbe0e3fbd377438b56f4cbf4a7a808720d98>)\n- Revisión registrada por el experimento: [` 1f78bb2b7926840bbec088c289d56285daac807c `](<https://github.com/lucioduran/llm-serving-bench/commit/1f78bb2b7926840bbec088c289d56285daac807c>)\n- Fecha del informe (UTC): 2026-10-21T21:52:58.127518+00:00\n- Release publicada: [v0.1.0](<https://github.com/lucioduran/llm-serving-bench/releases/tag/v0.1.0>) · 2026-10-21T21:57:30Z\n- SHA-256 del corpus: ` 39e2b0383320350aef0ae9fbde0f4c81ff9c35991c36148808c834fb34466e5a `\n\n- [README y uso](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/README.md>)\n- [Evidencia original](<https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json>)\n- [Resultados y análisis](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/results.md>)\n- [Diseño y metodología](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/design.md>)\n- [Protocolo HTTP/SSE](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/protocol.md>)\n- [Modelos, revisiones y licencias](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/model-notices.md>)\n- [Dependencias del entorno medido](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/requirements-local.lock>)\n- [Licencia MIT](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/LICENSE>)","headings":[{"level":1,"text":"LLM Serving Bench","url":"https://lucioduran.com/es/projects/llm-serving-bench#title"},{"level":2,"text":"Problema y utilidad para agentes","url":"https://lucioduran.com/es/projects/llm-serving-bench#problem"},{"level":2,"text":"Arquitectura","url":"https://lucioduran.com/es/projects/llm-serving-bench#architecture"},{"level":2,"text":"Qué demuestra","url":"https://lucioduran.com/es/projects/llm-serving-bench#demonstrates"},{"level":2,"text":"Resultados publicados","url":"https://lucioduran.com/es/projects/llm-serving-bench#results"},{"level":3,"text":"Ocho configuraciones medidas","url":"https://lucioduran.com/es/projects/llm-serving-bench#results-timing"},{"level":2,"text":"Reproducir","url":"https://lucioduran.com/es/projects/llm-serving-bench#reproduce"},{"level":3,"text":"Revisar la evidencia guardada","url":"https://lucioduran.com/es/projects/llm-serving-bench#reproduce-replay"},{"level":3,"text":"Repetir la medición local","url":"https://lucioduran.com/es/projects/llm-serving-bench#reproduce-inference"},{"level":2,"text":"Alcance y límites","url":"https://lucioduran.com/es/projects/llm-serving-bench#scope"},{"level":2,"text":"Fuentes y revisión","url":"https://lucioduran.com/es/projects/llm-serving-bench#sources"}],"sections":[{"heading":"LLM Serving Bench","level":1,"url":"https://lucioduran.com/es/projects/llm-serving-bench","content":"[Proyectos](<https://lucioduran.com/es/projects>) / LLM Serving Bench"},{"heading":"LLM Serving Bench","level":1,"url":"https://lucioduran.com/es/projects/llm-serving-bench#title","content":"Medición de inferencia CPU por HTTP/SSE: llegadas por token, TTFT, TPOT, latencia y memoria. Ocho configuraciones de SmolLM2 con evidencia cruda y replay offline.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 · Licencia: [MIT](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/LICENSE>)\n\nFicha publicada: 2026-10-21 · Ficha actualizada: 2026-10-21\n\n[Repositorio](<https://github.com/lucioduran/llm-serving-bench>) · [Evidencia original](<https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json>) · [Release v0.1.0](<https://github.com/lucioduran/llm-serving-bench/releases/tag/v0.1.0>)"},{"heading":"Problema y utilidad para agentes","level":2,"url":"https://lucioduran.com/es/projects/llm-serving-bench#problem","content":"Un contador de tokens por segundo no explica cuánto espera el usuario ni dónde se forma la cola. Este banco registra cada token generado y recibido para separar el tiempo al primer token, la decodificación y la latencia total.\n\nPermite presupuestar la espera de un agente con mediciones del servidor real. Los resultados identifican modelo, precisión, hardware, concurrencia y longitud de entrada, las condiciones necesarias para interpretar una cifra de rendimiento."},{"heading":"Arquitectura","level":2,"url":"https://lucioduran.com/es/projects/llm-serving-bench#architecture","content":"1. **Servidor medido.** SmolLM2-135M-Instruct en FP32 sobre CPU, con un único slot de generación y un evento SSE por ID de token. Los clientes usan HTTP sobre loopback.\n2. **Matriz controlada.** Uno o dos hilos de CPU, concurrencia uno o dos y entradas de 64 o 256 tokens exactos. Cada configuración procesa seis prompts después de un calentamiento excluido.\n3. **Evidencia reconstruible.** Conserva solicitudes, IDs, tiempos de llegada, errores, muestras RSS y hashes del modelo. Un verificador sin dependencias recalcula las métricas del informe.\n\n- [Diseño y metodología](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/design.md>)\n- [Protocolo HTTP/SSE](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/protocol.md>)"},{"heading":"Qué demuestra","level":2,"url":"https://lucioduran.com/es/projects/llm-serving-bench#demonstrates","content":"- Instrumentación por token y definición explícita de los límites de cada métrica.\n- Comparación de configuraciones con solicitudes registradas y control de concurrencia.\n- Separación entre consumo observado, costos supuestos y variables no medidas."},{"heading":"Resultados publicados","level":2,"url":"https://lucioduran.com/es/projects/llm-serving-bench#results","content":"Medición publicada en Intel Xeon W-3223, macOS, Python 3.11.13 y PyTorch 2.2.2. Las 48 solicitudes terminaron correctamente y generaron 1.152 tokens de salida. Los ocho calentamientos se excluyen.\n\nTTFT incluye conexión, tokenización, cola y prefill. TPOT es el intervalo entre el primer y el último token dividido por los intervalos de generación. Los percentiles interpolan seis solicitudes por configuración; el throughput usa la duración completa de esa configuración."},{"heading":"Ocho configuraciones medidas","level":3,"url":"https://lucioduran.com/es/projects/llm-serving-bench#results-timing","content":"| Hilos / entrada / concurrencia | TTFT p50 (s) | TPOT p50 (ms) | Latencia p95 (s) | Tokens de salida/s |\n| --- | --- | --- | --- | --- |\n| 1 / 64 / 1 | 0.196 | 62.92 | 1.704 | 14.49 |\n| 1 / 64 / 2 | 1.871 | 63.74 | 3.355 | 14.35 |\n| 1 / 256 / 1 | 0.654 | 72.02 | 2.415 | 10.28 |\n| 1 / 256 / 2 | 3.002 | 72.84 | 4.691 | 10.24 |\n| 2 / 64 / 1 | 0.128 | 42.89 | 1.143 | 21.50 |\n| 2 / 64 / 2 | 1.256 | 43.24 | 2.460 | 20.80 |\n| 2 / 256 / 1 | 0.414 | 48.94 | 1.601 | 15.51 |\n| 2 / 256 / 2 | 2.041 | 50.61 | 3.234 | 14.93 |\n\nDos hilos dieron mayor throughput en esta muestra. Duplicar clientes agregó principalmente espera porque el servidor conserva un único slot. Seis solicitudes por configuración no establecen un SLA ni un ranking general de servidores.\n\nEl RSS máximo muestreado varió de 838,7 a 1.023,5 MiB. La energía permanece sin medir. El costo del informe usa una asignación ilustrativa de USD 0,10 por máquina-hora; no es una factura ni un gasto observado. [Evidencia original](<https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json>)."},{"heading":"Reproducir","level":2,"url":"https://lucioduran.com/es/projects/llm-serving-bench#reproduce","content":"El replay requiere Python 3.11 y biblioteca estándar. Repetir la inferencia requiere las dependencias del modelo y descargar sus pesos públicos; la ejecución posterior usa archivos locales.\n\nLos comandos de entorno son para shell POSIX. Usá una salida nueva y ejecutá una sola medición intensiva a la vez. El lock publicado describe Intel macOS; otros sistemas pueden necesitar otra distribución de PyTorch."},{"heading":"Revisar la evidencia guardada","level":3,"url":"https://lucioduran.com/es/projects/llm-serving-bench#reproduce-replay","content":"```\ngit clone https://github.com/lucioduran/llm-serving-bench.git\ncd llm-serving-bench\ngit checkout f291bbe0e3fbd377438b56f4cbf4a7a808720d98\npython -m serving_bench verify results/reference/report.json\n```"},{"heading":"Repetir la medición local","level":3,"url":"https://lucioduran.com/es/projects/llm-serving-bench#reproduce-inference","content":"```\npython -m venv .venv\n. .venv/bin/activate\npython -m pip install -r requirements-models.txt\npython -m serving_bench download\npython -m serving_bench run --output work/reproduction --hourly-usd 0.10\npython -m serving_bench verify work/reproduction/report.json\n```"},{"heading":"Alcance y límites","level":2,"url":"https://lucioduran.com/es/projects/llm-serving-bench#scope","content":"- Un único modelo, equipo y orden fijo de ejecución. Cliente y servidor comparten CPU.\n- Carga de circuito cerrado sin batching continuo, GPU, saturación por tasa de llegada ni evaluación de calidad de respuestas.\n- RSS muestreado puede perder picos. El replay comprueba consistencia; no vuelve a medir tiempos ni autentica el hardware.\n\n- [Optimización de inferencia: KV-cache, PagedAttention y medición](<https://lucioduran.com/es/blog/llm-inference-optimization-kv-cache-paged-attention>)"},{"heading":"Fuentes y revisión","level":2,"url":"https://lucioduran.com/es/projects/llm-serving-bench#sources","content":"Los valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.\n\n- Revisión consultada: [` f291bbe0e3fbd377438b56f4cbf4a7a808720d98 `](<https://github.com/lucioduran/llm-serving-bench/commit/f291bbe0e3fbd377438b56f4cbf4a7a808720d98>)\n- Revisión registrada por el experimento: [` 1f78bb2b7926840bbec088c289d56285daac807c `](<https://github.com/lucioduran/llm-serving-bench/commit/1f78bb2b7926840bbec088c289d56285daac807c>)\n- Fecha del informe (UTC): 2026-10-21T21:52:58.127518+00:00\n- Release publicada: [v0.1.0](<https://github.com/lucioduran/llm-serving-bench/releases/tag/v0.1.0>) · 2026-10-21T21:57:30Z\n- SHA-256 del corpus: ` 39e2b0383320350aef0ae9fbde0f4c81ff9c35991c36148808c834fb34466e5a `\n\n- [README y uso](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/README.md>)\n- [Evidencia original](<https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json>)\n- [Resultados y análisis](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/results.md>)\n- [Diseño y metodología](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/design.md>)\n- [Protocolo HTTP/SSE](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/protocol.md>)\n- [Modelos, revisiones y licencias](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/model-notices.md>)\n- [Dependencias del entorno medido](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/requirements-local.lock>)\n- [Licencia MIT](<https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/LICENSE>)"}],"links":[{"text":"Proyectos","url":"https://lucioduran.com/es/projects"},{"text":"Lucio Durán","url":"https://lucioduran.com/es"},{"text":"MIT","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/LICENSE"},{"text":"Repositorio","url":"https://github.com/lucioduran/llm-serving-bench"},{"text":"Evidencia original","url":"https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json"},{"text":"Release v0.1.0","url":"https://github.com/lucioduran/llm-serving-bench/releases/tag/v0.1.0"},{"text":"Diseño y metodología","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/design.md"},{"text":"Protocolo HTTP/SSE","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/protocol.md"},{"text":"Resultados y análisis","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/results.md"},{"text":"Optimización de inferencia: KV-cache, PagedAttention y medición","url":"https://lucioduran.com/es/blog/llm-inference-optimization-kv-cache-paged-attention"},{"text":"f291bbe0e3fbd377438b56f4cbf4a7a808720d98","url":"https://github.com/lucioduran/llm-serving-bench/commit/f291bbe0e3fbd377438b56f4cbf4a7a808720d98"},{"text":"1f78bb2b7926840bbec088c289d56285daac807c","url":"https://github.com/lucioduran/llm-serving-bench/commit/1f78bb2b7926840bbec088c289d56285daac807c"},{"text":"v0.1.0","url":"https://github.com/lucioduran/llm-serving-bench/releases/tag/v0.1.0"},{"text":"README y uso","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/README.md"},{"text":"Modelos, revisiones y licencias","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/model-notices.md"},{"text":"Dependencias del entorno medido","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/requirements-local.lock"},{"text":"Licencia MIT","url":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/LICENSE"}],"structuredData":[{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://lucioduran.com/es/projects/llm-serving-bench#page","url":"https://lucioduran.com/es/projects/llm-serving-bench","name":"LLM Serving Bench","description":"Medición de inferencia CPU por HTTP/SSE: llegadas por token, TTFT, TPOT, latencia y memoria. Ocho configuraciones de SmolLM2 con evidencia cruda y replay offline.","inLanguage":"es","datePublished":"2026-10-21","dateModified":"2026-10-21","author":{"@id":"https://lucioduran.com/#person"},"mainEntity":{"@id":"https://lucioduran.com/projects/llm-serving-bench#software"}},{"@type":"SoftwareSourceCode","@id":"https://lucioduran.com/projects/llm-serving-bench#software","name":"LLM Serving Bench","description":"Medición de inferencia CPU por HTTP/SSE: llegadas por token, TTFT, TPOT, latencia y memoria. Ocho configuraciones de SmolLM2 con evidencia cruda y replay offline.","url":"https://lucioduran.com/es/projects/llm-serving-bench","codeRepository":"https://github.com/lucioduran/llm-serving-bench","programmingLanguage":"Python","runtimePlatform":"Python 3.11.13","license":"https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/LICENSE","version":"v0.1.0","identifier":{"@type":"PropertyValue","propertyID":"git-commit","value":"f291bbe0e3fbd377438b56f4cbf4a7a808720d98"},"author":{"@type":"Person","@id":"https://lucioduran.com/#person","name":"Lucio Durán","url":"https://lucioduran.com"},"isAccessibleForFree":true,"citation":["https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/README.md","https://raw.githubusercontent.com/lucioduran/llm-serving-bench/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/results/reference/report.json","https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/results.md","https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/design.md","https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/protocol.md","https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/docs/model-notices.md","https://github.com/lucioduran/llm-serving-bench/blob/f291bbe0e3fbd377438b56f4cbf4a7a808720d98/requirements-local.lock","https://github.com/lucioduran/llm-serving-bench/releases/tag/v0.1.0"]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Proyectos","item":"https://lucioduran.com/es/projects"},{"@type":"ListItem","position":2,"name":"LLM Serving Bench","item":"https://lucioduran.com/es/projects/llm-serving-bench"}]}]}],"contentHash":"3025a1112fe9fb45656edc1acd339cb1e6c645840c550cae5c54b803d36bc680","provenance":{"method":"Deterministic serialization of the server-rendered main element","source":"https://lucioduran.com/es/projects/llm-serving-bench","hashAlgorithm":"sha256","hashScope":"JSON document fields before contentHash and provenance","sourceHTMLBytes":45344,"contentBytes":7635}}
