<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Focus on lo0 — Blog Técnico</title><link>https://blog.lo0.es/tags/focus/</link><description>Recent content in Focus on lo0 — Blog Técnico</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Sat, 13 Jun 2026 03:00:00 +0200</lastBuildDate><atom:link href="https://blog.lo0.es/tags/focus/index.xml" rel="self" type="application/rss+xml"/><item><title>FinOps de GPU/LLM: frameworks, métricas y estado del arte (ficha a ficha)</title><link>https://blog.lo0.es/posts/finops-gpu-llm-frameworks-estado-del-arte/</link><pubDate>Sat, 13 Jun 2026 03:00:00 +0200</pubDate><guid>https://blog.lo0.es/posts/finops-gpu-llm-frameworks-estado-del-arte/</guid><description>&lt;blockquote>
&lt;p>Notación: importes en &lt;strong>euros (N €)&lt;/strong>, decimales con coma. Las referencias son
&lt;strong>europeas&lt;/strong> (proveedores y precios de FR/DE/ES), por tratarse de una propuesta soberana;
cuando una fuente cita dólares se indica &amp;ldquo;USD&amp;rdquo;. No se usa el símbolo de dólar (en este
sitio es delimitador de fórmula).&lt;/p>
&lt;/blockquote>
&lt;h2 id="qué-cubre-esta-introducción">Qué cubre esta introducción&lt;/h2>
&lt;p>Segundo artículo de la serie de datos, y primer &lt;em>deep dive&lt;/em> de pilar. Aquí se inventaría
el tooling de &lt;strong>FinOps&lt;/strong> para infraestructura GPU/LLM con el detalle que necesita una
decisión de arquitectura: qué métricas maneja cada herramienta, &lt;strong>cómo&lt;/strong> asigna el coste
por dentro, qué soporte de GPU tiene, bajo qué licencia y modelo de precio opera, y dónde
están sus límites. Es la continuación natural del &lt;a href="https://blog.lo0.es/posts/tres-ejes-coste-rendimiento-energia-inferencia-llm/">artículo de apertura&lt;/a>,
donde se fijó que el coste por token es la unidad que permite comparar on-prem vs cloud.
Sin recomendaciones: la elección final se decide en el artículo de síntesis con la tabla
de Pareto; aquí solo están los hechos y la metodología.&lt;/p>
&lt;hr>
&lt;h2 id="por-qué-el-finops-de-gpu-es-un-problema-distinto">Por qué el FinOps de GPU es un problema distinto&lt;/h2>
&lt;p>El FinOps clásico de cloud nació para repartir CPU, memoria y almacenamiento, recursos
baratos y elásticos. La GPU rompe tres supuestos a la vez, y por eso necesita su propio
tratamiento:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Es cara y discreta.&lt;/strong> Una H100 cuesta del orden de &lt;strong>2,7 a 7 €/hora&lt;/strong> en cloud europeo
(Scaleway desde 2,73 €/h; OVHcloud algo más), o su capex amortizado on-prem; no es un
recurso que se reparta en fracciones triviales. Un error
de asignación de un 10 % sobre una flota de GPU es dinero real.&lt;/li>
&lt;li>&lt;strong>Se infrautiliza con facilidad.&lt;/strong> A diferencia de la CPU, una GPU &lt;strong>consume su potencia
aunque esté ociosa&lt;/strong>, y la ocupación media en clusters sin gobierno es notoriamente
baja. El coste del &lt;em>idle&lt;/em> —la GPU encendida sin trabajar— es el desperdicio número uno,
y es invisible si no se mide.&lt;/li>
&lt;li>&lt;strong>Es difícil de atribuir.&lt;/strong> ¿De quién es el coste de una GPU compartida por &lt;em>time-slicing&lt;/em>
o MIG entre varios pods de varios equipos? Sin una capa de asignación, el gasto de GPU
es un agujero negro que nadie reclama y nadie optimiza.&lt;/li>
&lt;/ol>
&lt;p>El objetivo del FinOps de GPU es convertir ese agujero negro en una factura &lt;strong>atribuida,
medida y accionable&lt;/strong>: saber qué cuesta cada equipo, cada modelo y, al final, cada token.&lt;/p>
&lt;hr>
&lt;h2 id="las-métricas-de-finops">Las métricas de FinOps&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Métrica&lt;/th>
&lt;th>Definición&lt;/th>
&lt;th>Unidad&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>CPM&lt;/strong> (coste/1M tokens)&lt;/td>
&lt;td>coste del cluster ÷ tokens producidos&lt;/td>
&lt;td>€ / 1M tok&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Coste por petición&lt;/td>
&lt;td>coste imputado a una request completa&lt;/td>
&lt;td>€ / req&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>€/GPU-hora&lt;/td>
&lt;td>coste horario de una GPU (amortizado o alquiler)&lt;/td>
&lt;td>€/h&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Utilización&lt;/strong>&lt;/td>
&lt;td>fracción de la GPU realmente usada&lt;/td>
&lt;td>% (MFU, GPU-hour util)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Coste del idle&lt;/td>
&lt;td>GPU encendida sin trabajo útil&lt;/td>
&lt;td>€/h desperdiciados&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Showback&lt;/td>
&lt;td>reportar el coste a cada equipo (sin cobrar)&lt;/td>
&lt;td>€ / equipo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Chargeback&lt;/td>
&lt;td>imputar/cobrar el coste a cada equipo&lt;/td>
&lt;td>€ / equipo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Eficiencia de coste&lt;/td>
&lt;td>coste real ÷ coste si estuviera al 100 %&lt;/td>
&lt;td>%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>La métrica que cierra el círculo con el negocio es el &lt;strong>coste por token&lt;/strong> (o por petición):
es la única que se puede comparar entre proveedores, entre modelos y contra el precio de
una API externa. Todo el tooling de FinOps de GPU existe para llegar, de una forma u otra,
a ese número.&lt;/p>
&lt;hr>
&lt;h2 id="las-tres-fases-de-finops-finops-foundation">Las tres fases de FinOps (FinOps Foundation)&lt;/h2>
&lt;p>El marco de la FinOps Foundation organiza el trabajo en un ciclo de tres fases. Aplicado a
GPU:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Fase&lt;/th>
&lt;th>Objetivo&lt;/th>
&lt;th>Acción típica en GPU&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Inform&lt;/strong>&lt;/td>
&lt;td>visibilidad y asignación&lt;/td>
&lt;td>medir coste por namespace/equipo/modelo/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Optimize&lt;/strong>&lt;/td>
&lt;td>reducir el gasto&lt;/td>
&lt;td>rightsizing, spot, cuotas, apagar lo ocioso, cuantizar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Operate&lt;/strong>&lt;/td>
&lt;td>gobierno continuo&lt;/td>
&lt;td>presupuestos, alertas de idle, chargeback automatizado&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>El error habitual es saltar a &lt;em>Optimize&lt;/em> sin haber hecho &lt;em>Inform&lt;/em>: se compran GPUs o se
ajustan réplicas sin saber dónde se va realmente el dinero. La asignación (fase Inform) es
el prerrequisito de todo lo demás, y es donde entra el tooling.&lt;/p>
&lt;hr>
&lt;h2 id="cómo-se-asigna-el-coste-en-kubernetes-la-mecánica-de-opencost">Cómo se asigna el coste en Kubernetes: la mecánica de OpenCost&lt;/h2>
&lt;p>&lt;strong>OpenCost&lt;/strong> es el estándar de facto, así que conviene entender &lt;strong>cómo&lt;/strong> asigna el coste,
porque define lo que cualquier herramienta encima puede y no puede hacer. Es un proyecto
&lt;strong>vendor-neutral, Apache 2.0&lt;/strong>, originalmente construido por Kubecost y donado a la CNCF
(proyecto en incubación) (&lt;a href="https://github.com/opencost/opencost">OpenCost · GitHub&lt;/a>).&lt;/p>
&lt;p>El modelo trabaja &lt;strong>a nivel de nodo&lt;/strong>: parte de la capacidad de recursos del nodo (CPU,
RAM, GPU, almacenamiento) y de su precio total, y reparte ese precio entre los recursos.
Cuando el proveedor no da precios explícitos de CPU/GPU/RAM, OpenCost usa la &lt;strong>ratio de
unos precios base&lt;/strong> (las tarifas marginales del proveedor, personalizables) y los
&lt;strong>normaliza para que la suma de los componentes iguale el precio total del nodo&lt;/strong>
(&lt;a href="https://opencost.io/docs/configuration/on-prem/">OpenCost · on-prem&lt;/a>). Esto es clave en
on-premise: tú defines el coste del nodo (capex amortizado + opex) y OpenCost lo reparte.&lt;/p>
&lt;p>La utilización la obtiene &lt;strong>scrapeando Prometheus&lt;/strong>: &lt;code>kube-state-metrics&lt;/code>, &lt;code>node-exporter&lt;/code>
y &lt;code>cAdvisor&lt;/code> le dan el consumo real por pod, y con eso asigna el coste por &lt;strong>cluster, nodo,
namespace, controlador, servicio o pod&lt;/strong> (&lt;a href="https://opencost.io/docs/integrations/opencost-exporter/">OpenCost · exporter&lt;/a>).
Para la &lt;strong>GPU&lt;/strong>, la señal viene de &lt;strong>DCGM&lt;/strong> (vía el NVIDIA GPU Operator) exportado a
Prometheus —la misma base que la &lt;a href="https://blog.lo0.es/posts/observabilidad-gpu-dcgm-llm/">observabilidad GPU&lt;/a>—.
Un patrón habitual de detección de idle: una alerta cuando &lt;code>DCGM_FI_DEV_GPU_UTIL &amp;lt; 10&lt;/code>
durante más de 15 minutos, enrutada al equipo dueño del namespace.&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 250" role="img" aria-label="Mecánica de asignación de coste de OpenCost: métricas de utilización de Prometheus y DCGM, modelo de precio a nivel de nodo, y asignación por namespace, equipo y pod" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.dsh{fill:none;stroke:currentColor;stroke-width:1.3;stroke-dasharray:5 3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}.ar{fill:none;stroke:currentColor;stroke-width:1.3;marker-end:url(#fm)}&lt;/style>
&lt;defs>&lt;marker id="fm" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>&lt;/marker>&lt;/defs>
&lt;text x="20" y="26" class="tl">Métricas de utilización (Prometheus)&lt;/text>
&lt;rect class="bx" x="20" y="36" width="200" height="84" rx="6"/>
&lt;text x="32" y="58" class="ts">kube-state-metrics&lt;/text>
&lt;text x="32" y="76" class="ts">node-exporter · cAdvisor&lt;/text>
&lt;text x="32" y="94" class="ts">DCGM (GPU, vía GPU Operator)&lt;/text>
&lt;text x="32" y="112" class="ts">uso por pod&lt;/text>
&lt;path class="ar" d="M220,78 L265,78"/>
&lt;rect class="bx" x="265" y="36" width="210" height="84" rx="6"/>
&lt;text x="277" y="58" class="tl">Modelo de precio (por nodo)&lt;/text>
&lt;text x="277" y="78" class="ts">precio total del nodo repartido&lt;/text>
&lt;text x="277" y="96" class="ts">entre CPU/GPU/RAM/disco&lt;/text>
&lt;text x="277" y="114" class="ts">normalizado a la suma = total&lt;/text>
&lt;path class="ar" d="M475,78 L520,78"/>
&lt;rect class="bx" x="520" y="36" width="240" height="84" rx="6"/>
&lt;text x="532" y="58" class="tl">Asignación&lt;/text>
&lt;text x="532" y="78" class="ts">por cluster / nodo / namespace&lt;/text>
&lt;text x="532" y="96" class="ts">controlador / servicio / pod&lt;/text>
&lt;text x="532" y="114" class="ts">→ coste por equipo&lt;/text>
&lt;rect class="dsh" x="20" y="150" width="740" height="74" rx="6"/>
&lt;text x="34" y="172" class="tl">En on-premise tú defines el coste del nodo (capex amortizado + opex); OpenCost solo lo reparte.&lt;/text>
&lt;text x="34" y="192" class="ts">Idle de GPU: alerta si DCGM_FI_DEV_GPU_UTIL &amp;lt; 10 durante &amp;gt;15 min → enrutar al dueño del namespace.&lt;/text>
&lt;text x="34" y="210" class="ts">Lo que OpenCost asigna por recurso, las capas de arriba lo enriquecen hasta coste por token.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;hr>
&lt;h2 id="frameworks-ficha-a-ficha">Frameworks, ficha a ficha&lt;/h2>
&lt;h3 id="opencost--el-estándar-de-asignación-cncf-apache-20">OpenCost — el estándar de asignación (CNCF, Apache 2.0)&lt;/h3>
&lt;p>Qué mide: coste asignado de los recursos in-cluster (CPU, GPU, memoria, volúmenes) por
cualquier dimensión de Kubernetes. Método: modelo de precio a nivel de nodo + scraping de
Prometheus (arriba). GPU: sí, vía DCGM. Licencia: &lt;strong>Apache 2.0&lt;/strong>, gratis. Puede correr
como &lt;strong>exportador de métricas a Prometheus&lt;/strong> sin más dependencias. Límite: es la &lt;strong>capa de
asignación&lt;/strong>, no trae optimización, gobierno ni unit economics de producto; para eso se le
pone algo encima.&lt;/p>
&lt;h3 id="kubecost--el-comercial-sobre-opencost-ibm">Kubecost — el comercial sobre OpenCost (IBM)&lt;/h3>
&lt;p>Qué mide: lo de OpenCost (está construido sobre él) más capacidades enterprise. &lt;strong>Kubecost
3.0 (2025)&lt;/strong> añadió monitorización de GPU vía &lt;strong>NVIDIA DCGM&lt;/strong> e integración con &lt;strong>IBM
Turbonomic&lt;/strong> para &lt;em>rightsizing&lt;/em> automático, y amplió el alcance de Kubernetes a coste de
servicios cloud. IBM &lt;strong>adquirió Kubecost&lt;/strong> e integró Kubecost/OpenCost en su FinOps Suite
junto a Cloudability y Turbonomic (&lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">CloudZero · Kubecost vs OpenCost&lt;/a>).
Diferenciador: rightsizing, gobierno, soporte. Límite: producto comercial; el grueso del
valor sobre lo gratis de OpenCost es la capa de optimización y enterprise.&lt;/p>
&lt;h3 id="cloudzero--unit-economics-y-coste-a-producto">CloudZero — unit economics y coste a producto&lt;/h3>
&lt;p>Qué mide: mapea el coste cloud a &lt;strong>features, productos, equipos y clientes&lt;/strong>, no solo a
recursos. Método: ingiere facturación multi-cloud y la modela en dimensiones de negocio.
Diferenciador: la asignación más profunda y el enfoque de &lt;strong>unit economics&lt;/strong> (coste por
unidad de negocio). Límite: menos centrado en la mecánica intra-Kubernetes que
OpenCost/Kubecost; es la capa de &amp;ldquo;coste a negocio&amp;rdquo;.&lt;/p>
&lt;h3 id="vantage--multi-cloud-con-muchas-integraciones">Vantage — multi-cloud con muchas integraciones&lt;/h3>
&lt;p>Qué mide: coste multi-cloud con &lt;strong>más de 20 integraciones nativas&lt;/strong> (AWS, Azure, GCP,
Kubernetes, Snowflake, Datadog, OpenAI, etc.). Diferenciador: amplitud de fuentes,
incluida la &lt;strong>factura de proveedores de LLM&lt;/strong> (OpenAI), lo que lo acerca al coste de IA de
extremo a extremo. Límite: la profundidad de asignación intra-cluster es menor que la de
herramientas K8s-nativas.&lt;/p>
&lt;h3 id="finout--virtual-tagging-despliegue-rápido">Finout — virtual tagging, despliegue rápido&lt;/h3>
&lt;p>Qué mide: coste multi-cloud con &lt;strong>virtual tagging&lt;/strong>: aplica etiquetas de coste &lt;strong>sin
modificar los recursos reales&lt;/strong>, lo que permite asignar gasto que no estaba bien etiquetado
de origen. Diferenciador: despliegue rápido y reasignación flexible sin tocar la infra.
Límite: como las otras de su categoría, depende de la calidad de los datos de facturación
que ingiere.&lt;/p>
&lt;h3 id="tabla-comparativa">Tabla comparativa&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Herramienta&lt;/th>
&lt;th>Ámbito&lt;/th>
&lt;th>GPU&lt;/th>
&lt;th>Licencia / modelo&lt;/th>
&lt;th>Diferenciador&lt;/th>
&lt;th>Capa&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>OpenCost&lt;/strong>&lt;/td>
&lt;td>Kubernetes&lt;/td>
&lt;td>Sí (DCGM)&lt;/td>
&lt;td>Apache 2.0 (CNCF), gratis&lt;/td>
&lt;td>estándar de asignación&lt;/td>
&lt;td>recurso&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Kubecost&lt;/strong>&lt;/td>
&lt;td>K8s + cloud&lt;/td>
&lt;td>Sí (DCGM, 3.0)&lt;/td>
&lt;td>comercial (IBM)&lt;/td>
&lt;td>rightsizing, enterprise&lt;/td>
&lt;td>recurso+optim&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>CloudZero&lt;/strong>&lt;/td>
&lt;td>multi-cloud&lt;/td>
&lt;td>indirecto&lt;/td>
&lt;td>comercial&lt;/td>
&lt;td>unit economics a producto&lt;/td>
&lt;td>negocio&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Vantage&lt;/strong>&lt;/td>
&lt;td>multi-cloud (20+)&lt;/td>
&lt;td>vía K8s/proveedor&lt;/td>
&lt;td>comercial&lt;/td>
&lt;td>amplitud (incl. OpenAI)&lt;/td>
&lt;td>negocio&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Finout&lt;/strong>&lt;/td>
&lt;td>multi-cloud&lt;/td>
&lt;td>vía K8s/proveedor&lt;/td>
&lt;td>comercial&lt;/td>
&lt;td>virtual tagging&lt;/td>
&lt;td>negocio&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="modelos-de-precio-del-tooling-comercial">Modelos de precio del tooling comercial&lt;/h2>
&lt;p>Conviene conocerlos porque el coste de la herramienta de FinOps &lt;strong>también es FinOps&lt;/strong>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Modelo&lt;/th>
&lt;th>Cómo cobra&lt;/th>
&lt;th>Rango&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Savings-based&lt;/td>
&lt;td>% de los ahorros entregados&lt;/td>
&lt;td>&lt;strong>15–35 %&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fixed-fee&lt;/td>
&lt;td>% del gasto cloud anual&lt;/td>
&lt;td>&lt;strong>1–3 %&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>(&lt;a href="https://www.cloudzero.com/blog/finops-tools/">CloudZero · FinOps Tools&lt;/a>). Implicación:
en un gasto cloud grande, un &lt;em>fixed-fee&lt;/em> del 1–3 % puede superar al &lt;em>savings-based&lt;/em>; en uno
pequeño con mucho desperdicio, el &lt;em>savings-based&lt;/em> alinea incentivos. OpenCost, al ser
gratis, cambia la ecuación para quien tiene equipo para operarlo.&lt;/p>
&lt;hr>
&lt;h2 id="focus-el-estándar-de-datos-de-coste">FOCUS: el estándar de datos de coste&lt;/h2>
&lt;p>El problema transversal del FinOps multi-fuente es que &lt;strong>cada proveedor factura en su
propio formato&lt;/strong>. &lt;strong>FOCUS&lt;/strong> (FinOps Open Cost and Usage Specification) es la
especificación técnica abierta que define requisitos para que los proveedores produzcan
&lt;strong>datasets de facturación uniformes&lt;/strong> (&lt;a href="https://focus.finops.org/focus-specification/">FOCUS · FinOps Foundation&lt;/a>).
El comité ratificó &lt;strong>FOCUS v1.3 el 4 de diciembre de 2025&lt;/strong>.&lt;/p>
&lt;p>Lo relevante para esta serie: en &lt;strong>FinOps X 2026&lt;/strong> el foco se ha puesto en &lt;strong>extender FOCUS
a las cargas de IA&lt;/strong>, con la economía de tokens empujando la especificación —las peticiones
de expansión incluyen workloads de IA, datacenter y SaaS/PaaS (&lt;a href="https://siliconangle.com/2026/06/08/focus-specification-ai-cost-accountability-finopsx/">SiliconANGLE&lt;/a>).
Es decir, el estándar que normaliza el coste cloud se está estirando para cubrir el coste
de IA por token. Para una propuesta de arquitectura, apostar por herramientas que &lt;strong>emiten
y consumen FOCUS&lt;/strong> es apostar por interoperabilidad futura.&lt;/p>
&lt;hr>
&lt;h2 id="del-recurso-al-token-coste-por-token-con-gateway">Del recurso al token: coste por token con gateway&lt;/h2>
&lt;p>La asignación por recurso (OpenCost) llega hasta &amp;ldquo;este pod de vLLM costó X €/hora&amp;rdquo;. Para
llegar a &amp;ldquo;esta petición de este equipo costó Y&amp;rdquo; hace falta &lt;strong>interceptar el tráfico de
inferencia&lt;/strong>. Ahí entra el &lt;strong>gateway&lt;/strong>.&lt;/p>
&lt;p>Herramientas como &lt;strong>LiteLLM&lt;/strong> se sitúan entre la aplicación y el proveedor/motor de LLM, e
&lt;strong>interceptan cada petición para registrar tokens, latencia y coste en tiempo real&lt;/strong>. Capas
encima (p. ej. el AI Gateway de OpenLM) generan &lt;strong>logs de uso compatibles con FOCUS (v1.0
a 1.3)&lt;/strong> y mapean el gasto a &lt;strong>equipo, producto, cliente o feature&lt;/strong>, habilitando showback
o chargeback (&lt;a href="https://www.openlm.com/enable-ai-finops-with-real-time-token-attribution/">OpenLM · token attribution&lt;/a>).
Esto enlaza con &lt;a href="https://blog.lo0.es/posts/finops-multi-tenancy-gpu-litellm/">FinOps y multi-tenancy del cluster GPU&lt;/a>,
donde el gateway es la pieza que reparte el coste entre inquilinos.&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 230" role="img" aria-label="Del GPU-hora al coste por token: OpenCost asigna el coste del pod, el gateway LiteLLM intercepta las peticiones y cuenta tokens, y se reparte el coste por equipo y producto" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.dsh{fill:none;stroke:currentColor;stroke-width:1.3;stroke-dasharray:5 3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}.ar{fill:none;stroke:currentColor;stroke-width:1.3;marker-end:url(#fm2)}&lt;/style>
&lt;defs>&lt;marker id="fm2" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>&lt;/marker>&lt;/defs>
&lt;rect class="bx" x="20" y="40" width="160" height="58" rx="6"/>
&lt;text x="32" y="63" class="tl">OpenCost&lt;/text>
&lt;text x="32" y="82" class="ts">coste del pod vLLM (€/h)&lt;/text>
&lt;path class="ar" d="M180,69 L225,69"/>
&lt;rect class="bx" x="225" y="40" width="180" height="58" rx="6"/>
&lt;text x="237" y="63" class="tl">Gateway (LiteLLM)&lt;/text>
&lt;text x="237" y="82" class="ts">intercepta · cuenta tokens&lt;/text>
&lt;path class="ar" d="M405,69 L450,69"/>
&lt;rect class="bx" x="450" y="40" width="150" height="58" rx="6"/>
&lt;text x="462" y="63" class="tl">Logs FOCUS&lt;/text>
&lt;text x="462" y="82" class="ts">tokens · latencia · coste&lt;/text>
&lt;path class="ar" d="M600,69 L645,69"/>
&lt;rect class="bx" x="645" y="40" width="115" height="58" rx="6"/>
&lt;text x="657" y="63" class="tl">Showback&lt;/text>
&lt;text x="657" y="82" class="ts">por equipo&lt;/text>
&lt;rect class="dsh" x="20" y="130" width="740" height="72" rx="6"/>
&lt;text x="34" y="152" class="tl">Dos mitades que hay que unir: asignación por recurso (OpenCost) + medición por token (gateway).&lt;/text>
&lt;text x="34" y="172" class="ts">Sin el gateway sabes lo que cuesta el pod, no la petición. Sin OpenCost sabes los tokens, no el coste real del hierro.&lt;/text>
&lt;text x="34" y="190" class="ts">FOCUS es el formato común que permite cruzarlas con el resto del gasto cloud.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;hr>
&lt;h2 id="ejemplo-trabajado-chargeback-de-un-cluster-multi-tenant">Ejemplo trabajado: chargeback de un cluster multi-tenant&lt;/h2>
&lt;p>Para ver las dos mitades unidas, un reparto sobre un nodo de ejemplo (&lt;strong>4×H100&lt;/strong>, coste
amortizado &lt;strong>12 €/hora&lt;/strong>) compartido por tres equipos vía namespaces y MIG:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Equipo&lt;/th>
&lt;th>GPU-horas asignadas (OpenCost)&lt;/th>
&lt;th>Coste hierro (€/h)&lt;/th>
&lt;th>Tokens/día (gateway)&lt;/th>
&lt;th>Coste/1M tok&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>A · producto chat&lt;/td>
&lt;td>50 %&lt;/td>
&lt;td>6,00&lt;/td>
&lt;td>8M&lt;/td>
&lt;td>~0,75 €&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>B · batch nocturno&lt;/td>
&lt;td>30 %&lt;/td>
&lt;td>3,60&lt;/td>
&lt;td>3M&lt;/td>
&lt;td>~1,20 €&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C · experimentación&lt;/td>
&lt;td>20 %&lt;/td>
&lt;td>2,40&lt;/td>
&lt;td>0,5M&lt;/td>
&lt;td>~4,80 €&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Cómo sale: OpenCost reparte las 12 €/h del nodo según las GPU-horas que consume cada
namespace (la mitad para A → 6 €/h). El gateway aporta los tokens por equipo. El coste
por millón de tokens de cada uno es su coste de hierro dividido por su producción —y
revela algo que ninguna de las dos mitades vería sola: el equipo &lt;strong>C paga 6× más por token
que A&lt;/strong>, no porque su modelo sea peor, sino porque su GPU está &lt;strong>infrautilizada&lt;/strong> (mucha
GPU-hora asignada para pocos tokens). Ese 4,80 €/1M es la señal de chargeback que dispara
una conversación de optimización: o C sube su utilización, o libera la GPU. Sin cruzar
asignación y tokens, ese desperdicio queda escondido en una media de cluster.&lt;/p>
&lt;hr>
&lt;h2 id="el-coste-oculto-la-utilización">El coste oculto: la utilización&lt;/h2>
&lt;p>La palanca de optimización número uno no es cambiar de GPU, es &lt;strong>dejar de pagar por GPU
ociosa&lt;/strong>. Como se vio en el artículo de apertura, el coste eléctrico por token a 80 % de
utilización es &lt;strong>la cuarta parte&lt;/strong> que a 20 %, y la utilización reparte todo el coste fijo
(capex + energía) sobre más tokens. Medir el idle es, por tanto, la acción de mayor retorno
de la fase &lt;em>Optimize&lt;/em>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Señal&lt;/th>
&lt;th>Fuente&lt;/th>
&lt;th>Umbral típico&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>GPU ociosa&lt;/td>
&lt;td>&lt;code>DCGM_FI_DEV_GPU_UTIL&lt;/code>&lt;/td>
&lt;td>&amp;lt; 10 % durante &amp;gt; 15 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memoria GPU sin uso&lt;/td>
&lt;td>&lt;code>DCGM_FI_DEV_FB_USED&lt;/code>&lt;/td>
&lt;td>reservada pero no usada&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Pods sin tráfico&lt;/td>
&lt;td>métricas del gateway&lt;/td>
&lt;td>0 peticiones, GPU asignada&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>La asignación (OpenCost) localiza &lt;strong>de quién&lt;/strong> es la GPU ociosa; el scheduling y la
co-residencia (&lt;a href="https://blog.lo0.es/posts/compartir-gpu-time-slicing-mps-mig/">compartir GPU: time-slicing, MPS y MIG&lt;/a>)
la &lt;strong>recuperan&lt;/strong>. FinOps cierra el bucle: medir → atribuir → optimizar → gobernar.&lt;/p>
&lt;hr>
&lt;h2 id="optimize-las-palancas-de-ahorro-con-datos">Optimize: las palancas de ahorro (con datos)&lt;/h2>
&lt;p>Una vez asignado el coste (Inform), la fase &lt;em>Optimize&lt;/em> tiene un repertorio acotado de
palancas. Ordenadas por retorno típico:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Palanca&lt;/th>
&lt;th>Ahorro típico&lt;/th>
&lt;th>Mecanismo&lt;/th>
&lt;th>Coste/riesgo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Recuperar idle&lt;/strong>&lt;/td>
&lt;td>el mayor&lt;/td>
&lt;td>apagar/compartir GPU ociosa&lt;/td>
&lt;td>requiere medir utilización&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Cuantización (FP8/INT4)&lt;/strong>&lt;/td>
&lt;td>sube throughput, baja VRAM&lt;/td>
&lt;td>más tokens por GPU-hora&lt;/td>
&lt;td>posible coste de calidad&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Compromiso reserved&lt;/strong>&lt;/td>
&lt;td>&lt;strong>20–40 %&lt;/strong> sobre on-demand&lt;/td>
&lt;td>reservar capacidad&lt;/td>
&lt;td>menos elasticidad&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Spot/preemptible&lt;/strong>&lt;/td>
&lt;td>el descuento más profundo&lt;/td>
&lt;td>capacidad interrumpible&lt;/td>
&lt;td>hay que tolerar cortes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Rightsizing&lt;/strong>&lt;/td>
&lt;td>variable&lt;/td>
&lt;td>ajustar tipo/nº de GPU al SLO&lt;/td>
&lt;td>requiere benchmarks&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Autoscaling (HPA/KEDA)&lt;/strong>&lt;/td>
&lt;td>variable&lt;/td>
&lt;td>escalar réplicas con la demanda&lt;/td>
&lt;td>tunear métricas&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Sobre el &lt;strong>compromiso&lt;/strong>, los datos de cloud de 2026 son contundentes: los planes
&lt;strong>reserved&lt;/strong> dan 20–40 % de ahorro frente a on-demand, y &lt;strong>spot&lt;/strong> el descuento más profundo
a cambio de interrumpibilidad; el precio de la H100 cayó 64–75 % entre Q4 2024 y principios
de 2026 (&lt;a href="https://www.spheron.network/blog/gpu-cloud-pricing-comparison-2026/">Spheron · GPU Cloud Pricing&lt;/a>).
El &lt;strong>rightsizing&lt;/strong> y el &lt;strong>autoscaling&lt;/strong> conectan con el scheduling del cluster: encajar la
carga en la GPU correcta y escalar réplicas con la demanda son, a la vez, palancas de
rendimiento y de coste. La cuantización aparece aquí porque sube el throughput —y, por la
identidad del artículo de apertura, baja el coste y la energía por token al mismo tiempo.&lt;/p>
&lt;hr>
&lt;h2 id="madurez-del-finops-de-gpu">Madurez del FinOps de GPU&lt;/h2>
&lt;p>Un modelo simple para situar dónde está una organización, y qué le falta:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Nivel&lt;/th>
&lt;th>Estado&lt;/th>
&lt;th>Lo que falta para subir&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>0 · ciego&lt;/td>
&lt;td>factura agregada, sin atribución&lt;/td>
&lt;td>instrumentar OpenCost + DCGM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1 · visibilidad&lt;/td>
&lt;td>coste por namespace/equipo&lt;/td>
&lt;td>medición por token (gateway)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2 · unit economics&lt;/td>
&lt;td>coste por token y por producto&lt;/td>
&lt;td>alertas de idle y presupuestos&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3 · optimización&lt;/td>
&lt;td>idle recuperado, commitment, rightsizing&lt;/td>
&lt;td>chargeback automatizado&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4 · gobierno&lt;/td>
&lt;td>chargeback + presupuestos + FOCUS&lt;/td>
&lt;td>mejora continua&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>La mayoría de las organizaciones con GPU están en el &lt;strong>nivel 0 o 1&lt;/strong>: ven una factura
grande pero no saben de quién es cada euro. El salto de valor está en llegar al nivel 2 —el
coste por token y por producto—, que es justo donde el tooling de este artículo deja de ser
opcional. El track de FinOps de la serie recorre esa escalera hasta el modelo TCO completo
y el coste/token comparable que sostiene la propuesta de arquitectura.&lt;/p>
&lt;hr>
&lt;h2 id="el-stack-mínimo-para-llegar-al-nivel-2">El stack mínimo para llegar al nivel 2&lt;/h2>
&lt;p>Reunir las piezas anteriores en un toolchain concreto, todo open source, que lleva de la
ceguera (nivel 0) al coste por token y por producto (nivel 2):&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Pieza&lt;/th>
&lt;th>Función&lt;/th>
&lt;th>Alternativa&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>NVIDIA GPU Operator + DCGM&lt;/strong>&lt;/td>
&lt;td>exporta métricas de GPU (uso, memoria, potencia)&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Prometheus&lt;/strong>&lt;/td>
&lt;td>almacena las series de uso y coste&lt;/td>
&lt;td>VictoriaMetrics&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>OpenCost&lt;/strong>&lt;/td>
&lt;td>asigna el coste por recurso y dimensión&lt;/td>
&lt;td>Kubecost (comercial)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Gateway (LiteLLM)&lt;/strong>&lt;/td>
&lt;td>cuenta tokens por equipo/modelo&lt;/td>
&lt;td>OpenLM AI Gateway&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Grafana&lt;/strong>&lt;/td>
&lt;td>paneles de coste, utilización e idle&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Es, deliberadamente, infraestructura que muchos clusters &lt;strong>ya tienen&lt;/strong> para observabilidad
(DCGM, Prometheus, Grafana); el FinOps de GPU reutiliza esa base y le añade OpenCost y el
gateway. No es un producto nuevo, es una capa sobre lo existente.&lt;/p>
&lt;h3 id="kpis-a-vigilar">KPIs a vigilar&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>KPI&lt;/th>
&lt;th>Qué indica&lt;/th>
&lt;th>Objetivo típico&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Utilización media de GPU&lt;/td>
&lt;td>desperdicio&lt;/td>
&lt;td>&amp;gt;70–80 % sostenido&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Coste por 1M tokens (por modelo)&lt;/td>
&lt;td>eficiencia económica&lt;/td>
&lt;td>comparar vs alquiler cloud&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>% de GPU-horas en idle&lt;/td>
&lt;td>dinero tirado&lt;/td>
&lt;td>minimizar (&amp;lt;10–15 %)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Coste por equipo/producto&lt;/td>
&lt;td>atribución&lt;/td>
&lt;td>reparto justo, sin sorpresas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desviación sobre presupuesto&lt;/td>
&lt;td>gobierno&lt;/td>
&lt;td>alertar antes de superarlo&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Estos cinco KPIs son los que convierten el FinOps de GPU de un panel bonito en una
herramienta de decisión: si los vigilas, sabes en todo momento qué cuesta cada cosa y
dónde está el desperdicio.&lt;/p>
&lt;hr>
&lt;h2 id="estado-del-arte-2026">Estado del arte 2026&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Consolidación en Kubernetes&lt;/strong>: OpenCost es el estándar CNCF de asignación; Kubecost
(IBM) el comercial de referencia, ya con GPU vía DCGM y rightsizing por Turbonomic.&lt;/li>
&lt;li>&lt;strong>Del recurso al token&lt;/strong>: las plataformas fuertes de 2026 trackean el coste &lt;strong>a nivel de
token y de GPU&lt;/strong>, combinando asignación por recurso (OpenCost) con medición por gateway
(LiteLLM); es la única vía para un coste/token comparable on-prem vs cloud.&lt;/li>
&lt;li>&lt;strong>FOCUS v1.3&lt;/strong> (dic-2025) como capa de interoperabilidad, &lt;strong>extendiéndose a IA&lt;/strong> en
FinOps X 2026: el estándar de coste cloud absorbe la economía de tokens.&lt;/li>
&lt;li>&lt;strong>GPU FinOps maduro&lt;/strong>: la instrumentación se apoya en DCGM (misma base que la
observabilidad), y la detección de idle por umbral de utilización es práctica común.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="coste-por-token-el-puente-con-la-decisión-de-negocio">Coste por token: el puente con la decisión de negocio&lt;/h2>
&lt;p>Todo el tooling anterior existe para producir un número que el negocio entienda: el &lt;strong>coste
por token&lt;/strong> (o por petición). Es el que permite responder a las tres preguntas que sostienen
una propuesta de arquitectura:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>¿Construir o comprar?&lt;/strong> El coste/token on-prem (capex amortizado + opex, a la
utilización real) frente al precio de una API externa o de alquiler cloud. Por debajo del
umbral de volumen (~2M tokens/día) suele ganar comprar; por encima, construir.&lt;/li>
&lt;li>&lt;strong>¿Cómo poner precio a un producto?&lt;/strong> Si una feature consume N tokens por uso y cada
millón cuesta C, el coste marginal por uso es N·C/10⁶ — la base de cualquier margen.&lt;/li>
&lt;li>&lt;strong>¿Dónde está el desperdicio?&lt;/strong> El coste/token por equipo (el ejemplo de chargeback)
señala quién infrautiliza la GPU antes de que la factura agregada lo esconda.&lt;/li>
&lt;/ol>
&lt;p>La trampa: comparar coste/token entre escenarios &lt;strong>sin fijar los supuestos&lt;/strong> (utilización,
precisión, modelo de propiedad). Un coste/token on-prem calculado al 80 % de utilización no
es comparable con uno al 20 %, ni un FP16 con un FP8. Por eso la asignación (Inform) no es
un fin en sí mismo: es la materia prima de un modelo de coste &lt;strong>con supuestos explícitos&lt;/strong>,
que es lo que el artículo de síntesis convierte en el argumento de &amp;ldquo;construir vs comprar&amp;rdquo;
con números defendibles. El FinOps de GPU no es contabilidad; es la base cuantitativa de la
decisión de arquitectura.&lt;/p>
&lt;hr>
&lt;h2 id="límites-y-trampas-data-driven">Límites y trampas (data-driven)&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Asignación ≠ medición por token.&lt;/strong> OpenCost reparte el coste del recurso; sin gateway
no llegas a la petición. Son dos mitades que hay que unir explícitamente.&lt;/li>
&lt;li>&lt;strong>Precios base mal puestos = asignación mal puesta.&lt;/strong> En on-prem, OpenCost reparte el
coste &lt;strong>que tú declaras&lt;/strong> del nodo; si el capex/opex amortizado está mal, todo el reparto
lo está. La calidad del dato de entrada manda.&lt;/li>
&lt;li>&lt;strong>Idle invisible.&lt;/strong> Sin DCGM exportado a Prometheus y sin alertas de utilización, el
desperdicio número uno no aparece en ningún panel.&lt;/li>
&lt;li>&lt;strong>Coste de la herramienta.&lt;/strong> Un &lt;em>fixed-fee&lt;/em> del 1–3 % sobre un gasto grande es dinero;
compara el coste del tooling con el ahorro que entrega (es FinOps sobre el FinOps).&lt;/li>
&lt;li>&lt;strong>Formatos propietarios.&lt;/strong> Herramientas que no emiten/consumen FOCUS te atan a su modelo
de datos; en 2026 la apuesta robusta es la interoperabilidad FOCUS.&lt;/li>
&lt;/ol>
&lt;p>El siguiente artículo de la serie (A2) entra en OpenCost a fondo; este fija el mapa. Con la
asignación resuelta, el resto del track de FinOps construye el modelo TCO y el coste/token
que la propuesta necesita.&lt;/p>
&lt;h2 id="fuentes">Fuentes&lt;/h2>
&lt;ul>
&lt;li>OpenCost · GitHub (CNCF, Apache 2.0) — &lt;a href="https://github.com/opencost/opencost">https://github.com/opencost/opencost&lt;/a>&lt;/li>
&lt;li>OpenCost · documentación on-prem (modelo de precio por nodo) — &lt;a href="https://opencost.io/docs/configuration/on-prem/">https://opencost.io/docs/configuration/on-prem/&lt;/a>&lt;/li>
&lt;li>OpenCost · exporter de Prometheus — &lt;a href="https://opencost.io/docs/integrations/opencost-exporter/">https://opencost.io/docs/integrations/opencost-exporter/&lt;/a>&lt;/li>
&lt;li>CloudZero · Kubecost vs OpenCost (2026) — &lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">https://www.cloudzero.com/blog/kubecost-vs-opencost/&lt;/a>&lt;/li>
&lt;li>CloudZero · FinOps Tools: Definitive Guide (2026) — &lt;a href="https://www.cloudzero.com/blog/finops-tools/">https://www.cloudzero.com/blog/finops-tools/&lt;/a>&lt;/li>
&lt;li>FOCUS · especificación (FinOps Foundation) — &lt;a href="https://focus.finops.org/focus-specification/">https://focus.finops.org/focus-specification/&lt;/a>&lt;/li>
&lt;li>SiliconANGLE · FOCUS y la economía de tokens de IA (FinOps X 2026) — &lt;a href="https://siliconangle.com/2026/06/08/focus-specification-ai-cost-accountability-finopsx/">https://siliconangle.com/2026/06/08/focus-specification-ai-cost-accountability-finopsx/&lt;/a>&lt;/li>
&lt;li>OpenLM · atribución de tokens en tiempo real (LiteLLM + FOCUS) — &lt;a href="https://www.openlm.com/enable-ai-finops-with-real-time-token-attribution/">https://www.openlm.com/enable-ai-finops-with-real-time-token-attribution/&lt;/a>&lt;/li>
&lt;li>Finout · Best AI Cost Observability Tools (2026) — &lt;a href="https://www.finout.io/blog/best-ai-cost-observability-tools-in-2026">https://www.finout.io/blog/best-ai-cost-observability-tools-in-2026&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>