Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, analizas qué está impulsando el gasto de tu modelo de base con Unity AI Gateway. Atribuis el coste por usuario a los servicios modelo que gobiernas, y luego añades etiquetas para rastrear el gasto por equipo, proyecto o caso de uso usando tablas del sistema:
-
system.billing.usage: consumo de Azure Databricks en unidades de Databricks (DBU) para modelos proporcionados por Azure Databricks. -
system.billing.list_prices: precios de lista para convertir DBUs en dólares. -
system.ai_gateway.usage: solicitud y uso de tokens para cada solicitud. -
system.ai_gateway.external_model_spend: coste estimado en USD para modelos de proveedores externos.
Prerequisites
- Uno o más servicios del modelo de Unity AI Gateway que reciben tráfico. Consulta Crear y gestionar APIs modelo (servicios modelo).
- La tabla del sistema de uso facturable está habilitada para tu cuenta. Consulte Habilitar tablas del sistema.
- Acceso a las tablas del sistema mencionadas anteriormente, que requieren por defecto roles de administrador de cuentas y metastores. Consulte Concesión de acceso a las tablas del sistema.
Note
Las estimaciones en dólares de este tutorial se basan en el precio de lista. Excluyen los descuentos negociados y los créditos de facturación. Úsalos para la atribución y el análisis de tendencias, y tu estado de facturación para la conciliación.
Paso 1: Ver qué usuarios están generando el gasto
Tip
Genie Code (modo agente) puede hacerlo automáticamente. Pruebe esta indicación de ejemplo:
Query system.billing.usage for MODEL_SERVING records from the past 30 days where usage_metadata.ai_gateway.endpoint_name is set. Convert DBUs to list-price USD using system.billing.list_prices at the price effective for each record, break down by model service, destination model, and requesting user, and sort by cost.
Ve a AI Gateway > Govern > Panel de uso >Análisis de costes, que desglosa el gasto por modelo proporcionado por Databricks o por un proveedor externo, endpoint y usuario, sin necesidad de escribir SQL. El gráfico de Usuarios Principales por Coste (USD) bajo el Desglose de Costes clasifica a los que más gastan.
Alternativamente, consulta directamente las tablas del sistema para ver quién consume más y dónde. La tabla que consultes depende del tipo de modelo:
Modelos proporcionados por Databricks
Consulta system.billing.usage y combínalo con system.billing.list_prices para convertir el consumo de DBU en dólares. El identity_metadata.run_by campo identifica al principal que emitió cada solicitud:
SELECT
u.usage_metadata.ai_gateway.endpoint_name AS model_service_name,
u.usage_metadata.ai_gateway.destination_model AS destination_model,
u.identity_metadata.run_by AS run_by,
SUM(u.usage_quantity * lp.pricing.effective_list.default) AS list_cost_usd
FROM system.billing.usage u
JOIN system.billing.list_prices lp
ON u.sku_name = lp.sku_name
AND u.cloud = lp.cloud
AND u.usage_unit = lp.usage_unit
AND u.usage_end_time >= lp.price_start_time
AND (lp.price_end_time IS NULL OR u.usage_end_time < lp.price_end_time)
WHERE u.billing_origin_product = 'MODEL_SERVING'
AND u.usage_metadata.ai_gateway.endpoint_name IS NOT NULL
AND u.identity_metadata.run_by IS NOT NULL
AND u.usage_unit = 'DBU'
AND lp.currency_code = 'USD'
AND u.usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY model_service_name, destination_model, run_by
ORDER BY list_cost_usd DESC;
Modelos externos
Para las solicitudes enrutadas a proveedores externos a través de servicios modelo de proveedores, Azure Databricks estima el coste en USD por el uso de tokens y los precios publicados por el proveedor, capturados en system.ai_gateway.external_model_spend. Esta consulta devuelve el mismo desglose que la consulta proporcionada por Azure Databricks para los servicios del proveedor de modelos:
SELECT
usage_metadata.endpoint_name AS model_provider_service_name,
identity_metadata.run_by AS run_by,
SUM(usage_quantity) AS estimated_provider_cost_usd
FROM system.ai_gateway.external_model_spend
WHERE identity_metadata.run_by IS NOT NULL
AND usage_start_time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY run_by, model_provider_service_name
ORDER BY estimated_provider_cost_usd DESC;
Paso 2: Configurar el seguimiento del uso y del gasto por equipo o proyecto
El gasto por usuario te dice quién, pero no qué equipo o proyecto. Para atribuir el uso de tokens a un equipo o proyecto, etiqueta tu tráfico según cómo los servicios de tu modelo se corresponden a equipos o proyectos:
- Etiquetas de servicio (endpoint): cuando cada equipo o proyecto tiene su propio modelo de servicio. La etiqueta se aplica a cada solicitud enrutada a través de ese servicio modelo, así que la configuras una vez.
- Etiquetas de solicitud: cuando muchos equipos o proyectos comparten el mismo modelo de servicio. El llamante establece la etiqueta por solicitud, así que tú atribuis el uso dentro de un servicio compartido.
Etiquetas de servicio
Añade una etiqueta como team o project al servicio modelo. Cada solicitud que pasa por él hereda la etiqueta.
- En la interfaz del espacio de trabajo, ve a AI Gateway y abre el servicio de modelos.
- En la página de Resumen del servicio modelo, en la sección de Etiquetas , añade una etiqueta como
team=ml-platform.
Las etiquetas de servicio aparecen en el endpoint_tags campo en system.ai_gateway.usage y se propagan al custom_tags campo en system.billing.usage. Para detalles sobre cómo crear y configurar servicios modelo, consulte Crear y gestionar APIs de modelo (servicios modelo).
Etiquetas de la solicitud
Adjunta una etiqueta como project a peticiones individuales con el Databricks-Ai-Gateway-Request-Tags encabezado HTTP, un objeto JSON que mapea claves de cadena a valores de cadena:
Databricks-Ai-Gateway-Request-Tags: {"project": "chatbot", "team": "ml-platform"}
Las etiquetas de solicitud aparecen en el request_tags campo de system.ai_gateway.usage. Para ejemplos que establecen el encabezado con el SDK OpenAI, Anthropic SDK y la API REST, véase Solicitudes de etiquetas para seguimiento de uso.
Note
Qué etiqueta usar para la atribución de costes depende del modelo:
-
Modelos proporcionados por Azure Databricks: use etiquetas de servicio. Solo las etiquetas de servicio se propagan a
system.billing.usage. -
Modelos de proveedores externos: usar etiquetas de servicio o solicitud. Ambos se propagan a
system.ai_gateway.external_model_spend, que captura estimaciones de gasto en modelos externos.
Paso 3: Analizar el uso por equipo o proyecto
Tip
Genie Code (modo agente) puede hacerlo automáticamente. Pruebe esta indicación de ejemplo:
Query system.ai_gateway.usage for the past 30 days to show request count and total tokens by the 'team' service tag in endpoint_tags, model service, and destination model. Sort by total tokens, highest first.
Una vez colocadas las etiquetas, agrega los datos de uso en system.ai_gateway.usage, que captura métricas de solicitudes y tokens para cada solicitud enrutada a modelos proporcionados por Azure Databricks y modelos de proveedores externos. Agrupar por endpoint_tags['team'] para las etiquetas de servicio, o por request_tags['project'] para las etiquetas de solicitud:
Etiquetas de servicio
SELECT
endpoint_tags['team'] AS team,
endpoint_name,
destination_model,
COUNT(*) AS request_count,
SUM(total_tokens) AS total_tokens
FROM system.ai_gateway.usage
WHERE endpoint_tags['team'] IS NOT NULL
GROUP BY endpoint_tags['team'], endpoint_name, destination_model
ORDER BY total_tokens DESC;
Etiquetas de la solicitud
SELECT
request_tags['project'] AS project,
endpoint_name,
destination_model,
COUNT(*) AS request_count,
SUM(total_tokens) AS total_tokens
FROM system.ai_gateway.usage
WHERE request_tags['project'] IS NOT NULL
GROUP BY request_tags['project'], endpoint_name, destination_model
ORDER BY total_tokens DESC;
Para explorar cualquiera de estos desgloses sin SQL, utiliza los filtros de etiquetas en la página Análisis de costos.
Paso 4: Analizar el gasto de dólares por equipo o proyecto
Tip
Genie Code (modo agente) puede hacerlo automáticamente. Pruebe esta indicación de ejemplo:
Query system.billing.usage for MODEL_SERVING records from the past 30 days where usage_metadata.ai_gateway.endpoint_name is set. Convert DBUs to list-price USD using system.billing.list_prices at the price effective for each record, group by the 'team' service tag in custom_tags, and sort by cost.
Con las etiquetas puestas, atribui el gasto en USD a un equipo o proyecto. Para agrupar costes por etiqueta sin escribir SQL, ve a AI Gateway > Govern > Usage Dashboard >Cost Analysis y utiliza la sección Análisis de costes basado en etiquetas. Filtra por etiqueta de endpoint o etiqueta de solicitud para ver Coste por Grupos de Etiquetas de Endpoint y Coste Estimado por Grupos de Etiquetas de Solicitud.
Para atribuir gasto con SQL, la tabla que consultas depende del tipo de modelo:
Modelos proporcionados por Databricks
Las etiquetas de servicio se propagan al campo custom_tags en system.billing.usage, por lo que puedes atribuir el gasto a precio de lista en USD a un equipo de la misma manera que clasificaste los usuarios en el Paso 1. Únete a system.billing.list_prices para convertir el uso de DBU a dólares:
SELECT
u.custom_tags['team'] AS team,
SUM(u.usage_quantity * lp.pricing.effective_list.default) AS list_cost_usd
FROM system.billing.usage u
JOIN system.billing.list_prices lp
ON u.sku_name = lp.sku_name
AND u.cloud = lp.cloud
AND u.usage_unit = lp.usage_unit
AND u.usage_end_time >= lp.price_start_time
AND (lp.price_end_time IS NULL OR u.usage_end_time < lp.price_end_time)
WHERE u.billing_origin_product = 'MODEL_SERVING'
AND u.usage_metadata.ai_gateway.endpoint_name IS NOT NULL
AND u.custom_tags['team'] IS NOT NULL
AND u.usage_unit = 'DBU'
AND lp.currency_code = 'USD'
AND u.usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY team
ORDER BY list_cost_usd DESC;
Modelos externos
Para modelos externos, system.ai_gateway.external_model_spend ya registra el coste estimado en USD e incluye tanto las etiquetas de servicio como las de solicitud en custom_tags, así que puedes agrupar por custom_tags.request_tags grupo para atribuir gastos entre servicios por proyecto o equipo:
SELECT
custom_tags.request_tags['team'] AS team,
SUM(usage_quantity) AS estimated_provider_cost_usd
FROM system.ai_gateway.external_model_spend
WHERE custom_tags.request_tags['team'] IS NOT NULL
AND usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY team
ORDER BY estimated_provider_cost_usd DESC;
Paso 5: Analizar el coste por token por equipo o proyecto
Tip
Genie Code (modo agente) puede hacerlo automáticamente. Pruebe esta indicación de ejemplo:
Query system.billing.usage and system.ai_gateway.usage for the past 30 days to show list-price USD per million tokens by model service, destination model, and the 'team' service tag. Convert DBUs to dollars using system.billing.list_prices at the price effective for each record, and join the two tables on usage date.
El gasto total te indica a dónde fue el presupuesto, pero no si pagas una tarifa justa por él. Rastrear el gasto por inferencia como coste por token de 1 millón te permite comparar modelos de destino, detectar regresiones tras un cambio de enrutamiento o justificar el traslado del tráfico a un modelo más barato. Une la tabla de costes a system.ai_gateway.usage según el servicio de modelo, el modelo de destino y el equipo. Ambas pestañas se agrupan por la team etiqueta de servicio, por lo que los resultados coinciden con el Paso 3:
Modelos proporcionados por Databricks
Agrega el gasto y los tokens a precio de lista durante toda la ventana, luego únete al servicio modelo, modelo de destino y equipo. Únete a system.billing.list_prices para convertir el uso de DBU a dólares:
WITH cost AS (
SELECT
u.usage_metadata.ai_gateway.endpoint_name AS endpoint_name,
u.usage_metadata.ai_gateway.destination_model AS destination_model,
u.custom_tags['team'] AS team,
SUM(u.usage_quantity * lp.pricing.effective_list.default) AS list_cost_usd
FROM system.billing.usage u
JOIN system.billing.list_prices lp
ON u.sku_name = lp.sku_name
AND u.cloud = lp.cloud
AND u.usage_unit = lp.usage_unit
AND u.usage_end_time >= lp.price_start_time
AND (lp.price_end_time IS NULL OR u.usage_end_time < lp.price_end_time)
WHERE u.billing_origin_product = 'MODEL_SERVING'
AND u.usage_metadata.ai_gateway.endpoint_name IS NOT NULL
AND u.custom_tags['team'] IS NOT NULL
AND u.usage_unit = 'DBU'
AND lp.currency_code = 'USD'
AND u.usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY ALL
),
tokens AS (
SELECT
endpoint_name,
destination_model,
endpoint_tags['team'] AS team,
SUM(total_tokens) AS total_tokens
FROM system.ai_gateway.usage
WHERE endpoint_tags['team'] IS NOT NULL
AND endpoint_name IS NOT NULL
AND event_time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY ALL
)
SELECT
c.endpoint_name,
c.destination_model,
c.team,
c.list_cost_usd,
t.total_tokens,
1000000 * c.list_cost_usd / NULLIF(t.total_tokens, 0) AS list_cost_usd_per_1m_tokens
FROM cost c
JOIN tokens t
ON c.endpoint_name = t.endpoint_name
AND c.destination_model = t.destination_model
AND c.team = t.team
ORDER BY list_cost_usd_per_1m_tokens DESC;
Modelos externos
Agrega gastos y tokens a lo largo de toda la ventana, luego únete al modelo de proveedor de servicio, modelo de destino y equipo. Ambas tablas cubren las mismas solicitudes, por lo que un total a nivel de periodo no necesita una clave de tiempo en la unión:
WITH spend AS (
SELECT
usage_metadata.endpoint_name AS endpoint_name,
usage_metadata.model AS destination_model,
custom_tags.endpoint_tags['team'] AS team,
SUM(usage_quantity) AS estimated_provider_cost_usd
FROM system.ai_gateway.external_model_spend
WHERE custom_tags.endpoint_tags['team'] IS NOT NULL
AND usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY ALL
),
tokens AS (
SELECT
endpoint_name,
destination_model,
endpoint_tags['team'] AS team,
SUM(total_tokens) AS total_tokens
FROM system.ai_gateway.usage
WHERE endpoint_tags['team'] IS NOT NULL
AND destination_model IS NOT NULL
AND event_time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY ALL
)
SELECT
s.endpoint_name,
s.destination_model,
s.team,
s.estimated_provider_cost_usd,
t.total_tokens,
1000000 * s.estimated_provider_cost_usd / NULLIF(t.total_tokens, 0) AS estimated_cost_usd_per_1m_tokens
FROM spend s
JOIN tokens t
ON s.endpoint_name = t.endpoint_name
AND s.destination_model = t.destination_model
AND s.team = t.team
ORDER BY estimated_cost_usd_per_1m_tokens DESC;
Si usas etiquetas de solicitud para la atribución del equipo, sustituye custom_tags.endpoint_tags['team'] por custom_tags.request_tags['team'], y endpoint_tags['team'] por request_tags['team'] en el rollup de tokens.
Note
Unity AI Gateway no registra el uso de tokens para respuestas no streaming ni embedding mayores a 1 MiB, por lo que el coste por token puede ser alto donde esas respuestas son comunes. Compara las tarifas dentro de una carga de trabajo en lugar de entre otras no relacionadas.