返回
RSS Snowflake Engineering (Medium) AI 逐段翻译 发布 2026-09-18 01:35 收录于 09-19

Snowflake AI 服务成本解析与治理指南

DataHot 速览

本文系统梳理 Snowflake 上 Cortex AI 服务的成本构成与治理方式,涵盖 Cortex AI Functions、Cortex Agents、Cortex Search、CoCo 等组件的定价、计量与监控。Snowflake 引入独立于 Platform Credits 的 AI Credits 计费单位,所有版本客户按同一费率付费,跨区域路由方式可影响约 9% 的成本。文章说明 AI_COMPLETE() 这类调用会同时产生 AI Credits(大模型 token 处理)与 Platform Credits(仓库计算)两项费用,并给出用量视图、监控查询与支出护栏的实践方法。

为什么值得关注:直接面向在 Snowflake 上落地 AI 能力的数据团队,讲清了 AI Credits 计费口径、token 成本驱动因素与成本可观测性方案,是把 AI 负载纳入数据平台成本治理的实用参考。

本文目录 38 节
  1. Cortex AI 服务定价模型、用量视图、监控模式与成本治理全面指南
  2. 1. AI 信用点定价模型
  3. AI 信用点与平台信用点
  4. 2. 每项 AI 服务的成本驱动因素
  5. 基于 token 的服务
  6. 基于服务的定价
  7. 媒体 token 当量
  8. 隐藏的成本倍增因素
  9. 3. 用量视图架构
  10. 视图层级
  11. 避免重复计数
  12. 延迟预期
  13. 账户级与组织级
  14. 4. 实用监控查询
  15. 4.1 按服务类型统计的 AI 总支出(过去 30 天)
  16. 4.2 按模型统计的 AI 函数成本
  17. 4.3 按 AI 支出排名的顶级用户(Cortex Agents)
  18. 4.4 每日 AI 支出趋势
  19. 4.5 组织范围的 AI 支出
  20. 5. 按查询的成本归因
  21. 执行前估算成本
  22. 6. 成本治理:预算、配额和警报
  23. 按功能划分的预算支持
  24. 资源预算
  25. 共享资源预算
  26. 按用户配额
  27. 执行时机
  28. 对成本异常发出警报
  29. 7. 最佳实践和优化
  30. 为模型选择合适的规模
  31. 优化 token 使用
  32. 为 AI 工作负载选择仓库规模
  33. 控制 Cortex Search 成本
  34. 启用跨区域路由
  35. 构建成本仪表板
  36. 建立审查节奏
  37. 快速参考:规范使用视图
  38. 关于我:

译文

AI 逐段翻译

Cortex AI 服务定价模型、用量视图、监控模式与成本治理全面指南

随着组织在 Snowflake 中越来越多地采用 AI 驱动的功能,理解这些服务如何定价、计量和治理变得至关重要。Snowflake 的 AI 生态系统——涵盖 Cortex AI Functions、Cortex Agents、Cortex Search、CoCo 等——采用基于消费的模型,成本随用量直接增长。若缺乏适当的可观测性,AI 工作负载可能会悄无声息地累积大量支出。

本指南将带你走完整个成本生命周期:AI 服务如何定价、在哪里查找用量数据、如何编写监控查询,以及如何实施支出防护措施。

1. AI 信用点定价模型

Snowflake 引入了 AI 信用点 作为独立于平台信用点的计费单位。这种分离创建了一致且与版本无关的定价层——Standard、Enterprise、Business Critical 和 VPS 客户均支付相同的 AI 信用点费率。

按路由类型定价:

路由类型由 CORTEX_ENABLED_CROSS_REGION 账户参数控制。如果数据驻留不是问题,全球路由可在每个 AI 信用点上节省约 9%。

AI 信用点与平台信用点

这是一个关键区别。调用 AI_COMPLETE() 的 SQL 查询会产生 两项独立费用

  • AI 信用点 用于 LLM 的 token 处理
  • 平台信用点 用于运行该 SQL 查询的仓库计算时间

平台信用点定价因版本和区域而异。AI 信用点定价则不会。它们在账单中作为单独的行项出现。

哪些服务使用 AI 信用点:

注意: 当 Cortex Analyst 通过 Cortex Agents 调用时(推荐路径),它遵循与 Cortex Agents 相同的基于 token 的 AI 信用点模型。

2. 每项 AI 服务的成本驱动因素

大多数 Snowflake AI 服务的首要成本驱动因素是 token 消耗。token 是文本处理的最小单位——大约 4 个字符,但具体因模型而异。

基于 token 的服务

AI Functions(AI_COMPLETE、AI_CLASSIFY、AI_EXTRACT、AI_EMBED、AI_FILTER、AI_TRANSLATE)按每百万 token 计费,费率因模型而异。对于生成式函数,输入和输出 token 均可计费。嵌入函数(AI_EMBED、AI_SIMILARITY)仅对输入 token 计费。

Cortex Agents 编排多步骤工作流。其成本对其调用的每个工具而言都是 累加的。一个调用 Cortex Search、然后 AI_COMPLETE、然后 Cortex Analyst 的单个智能体请求会累积每个步骤的费用——外加编排层本身也消耗 token。

Cortex REST API 提供直接的模型推理,按 token 计费。它支持 提示缓存,其中缓存读取的费率相比标准输入 token 有所降低。

基于服务的定价

Cortex Search 有两个计费组成部分:

  • 服务计算: 每 GB 每月索引数据的信用点,在服务处于活跃状态时持续运行
  • 嵌入计算: 按 token 计费,在插入或更新数据时收取

AI Parse Document 按每处理 1,000 页计费,费率因解析模式而异。

媒体 token 当量

隐藏的成本倍增因素

像 AI_CLASSIFY、AI_FILTER、AI_SENTIMENT 和 AI_SUMMARIZE_AGG 这类任务特定函数会向你输入的文本追加系统提示。计费的 token 数量将 高于你提供的文本中的 token 数。

更重要的是:AI_CLASSIFY 的标签、描述和示例按输入 token 计入 针对处理的每一条记录,而不是每次调用一次。如果你传入 10 个带描述的分类标签并处理 100,000 行,那些标签 token 会被计费 100,000 次。对于大批量分类作业而言,这是一个显著的成本倍增因素。

3. 用量视图架构

Snowflake 在 SNOWFLAKE.ACCOUNT_USAGE 和 SNOWFLAKE.ORGANIZATION_USAGE 中提供了分层视图系统,用于追踪 AI 消耗。理解这一层级结构对于避免重复计数至关重要。

视图层级

METERING_HISTORY / METERING_DAILY_HISTORY  (authoritative billing totals)
│
├── SERVICE_TYPE = 'AI_SERVICES'           (legacy umbrella)
│   ├── CORTEX_AI_FUNCTIONS_USAGE_HISTORY    ← canonical for AI functions
│   ├── CORTEX_ANALYST_USAGE_HISTORY
│   ├── CORTEX_SEARCH_SERVING_USAGE_HISTORY
│   ├── CORTEX_DOCUMENT_PROCESSING_USAGE_HISTORY
│   └── CORTEX_FINE_TUNING_USAGE_HISTORY
│
├── SERVICE_TYPE = 'CORTEX_AGENTS'
│   └── CORTEX_AGENT_USAGE_HISTORY
│
├── SERVICE_TYPE = 'CORTEX_CODE_CLI'
│   └── CORTEX_CODE_CLI_USAGE_HISTORY
│
├── SERVICE_TYPE = 'CORTEX_CODE_SNOWSIGHT'
│   └── CORTEX_CODE_SNOWSIGHT_USAGE_HISTORY
│
├── SERVICE_TYPE = 'SNOWFLAKE_INTELLIGENCE'
│   └──SNOWFLAKE_COWORK_USAGE_HISTORY
│
├── SERVICE_TYPE = 'AI_INFERENCE'
│   └── CORTEX_REST_API_USAGE_HISTORY        (tokens only; billed in $)
│
└── SERVICE_TYPE = 'CORTEX_AI_GUARDRAILS'
    └── CORTEX_AI_GUARDRAILS_USAGE_HISTORY

避免重复计数

若干遗留视图与当前规范视图存在重叠:

  • CORTEX_FUNCTIONS_USAGE_HISTORY --- 不再更新。请改用 CORTEX_AI_FUNCTIONS_USAGE_HISTORY。
  • CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY --- 已弃用,计划于 2026 年 11 月移除
  • CORTEX_AISQL_USAGE_HISTORY --- 计划于 2027 年 1 月弃用

使用 CORTEX_AI_FUNCTIONS_USAGE_HISTORY 作为 AI 函数用量的规范视图。切勿对存在重叠的视图求和 --- 它们共享底层计量数据。

延迟预期

账户用量视图最多有 3 小时延迟,有时更长。当天查询可能会显示空白,之后才会补齐。这是预期行为。对于权威的计费总额,请始终使用 METERING_HISTORY 或 METERING_DAILY_HISTORY。

账户级与组织级

4. 实用监控查询

这些查询仅使用官方 SNOWFLAKE.ACCOUNT_USAGE 视图,可在任何拥有 ACCOUNTADMIN 角色(或对 SNOWFLAKE 数据库具有 IMPORTED PRIVILEGES 的角色)的 Snowflake 账户上按原样运行。

4.1 按服务类型统计的 AI 总支出(过去 30 天)

从这里开始,获得 AI 信用点流向的高层视图:

SELECT
    service_type,
    ROUND(SUM(credits_used), 2) AS total_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
WHERE service_type IN (
    'AI_SERVICES', 'CORTEX_AGENTS',
    'CORTEX_CODE_CLI', 'CORTEX_CODE_SNOWSIGHT',
    'SNOWFLAKE_INTELLIGENCE', 'CORTEX_AI_GUARDRAILS'
)
AND usage_date >= DATEADD('day', -30, CURRENT_DATE())
GROUP BY service_type
ORDER BY total_credits DESC;

4.2 按模型统计的 AI 函数成本

确定哪些 LLM 模型推动的支出最多:


WITH base AS (
    SELECT
        model_name,
        function_name,
        credits,
        metrics
    FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AI_FUNCTIONS_USAGE_HISTORY
    WHERE start_time >= DATEADD('day', -30, CURRENT_DATE())
),
-- Credits aggregated on unflattened rows (no double-counting)
credit_agg AS (
    SELECT
        model_name,
        function_name,
        COUNT(*)              AS call_count,
        ROUND(SUM(credits), 4) AS total_ai_credits
    FROM base
    GROUP BY model_name, function_name
),
-- Tokens from flattened metrics, summing input + output explicitly
token_agg AS (
    SELECT
        model_name,
        function_name,
        SUM(f.value:"value"::NUMBER) AS total_tokens
    FROM base,
         LATERAL FLATTEN(input => metrics) f
    WHERE f.value:"key":"metric"::STRING IN ('input', 'output')
    GROUP BY model_name, function_name
)
SELECT
    c.model_name,
    c.function_name,
    c.call_count,
    COALESCE(t.total_tokens, 0) AS total_tokens,
    c.total_ai_credits
FROM credit_agg c
LEFT JOIN token_agg t
    ON c.model_name = t.model_name
   AND c.function_name = t.function_name
ORDER BY total_ai_credits DESC;

4.3 按 AI 支出排名的顶级用户(Cortex Agents)

将智能体成本归因到各个用户:

WITH request_tokens AS (
    SELECT
        h.user_name,
        h.request_id,
        h.token_credits,
        SUM(t.value:input::NUMBER)  AS input_tokens,
        SUM(t.value:output::NUMBER) AS output_tokens
    FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AGENT_USAGE_HISTORY h,
         LATERAL FLATTEN(input => h.tokens_granular) t
    WHERE h.start_time >= DATEADD('day', -30, CURRENT_DATE())
    GROUP BY h.user_name, h.request_id, h.token_credits
)
SELECT
    user_name,
    COUNT(DISTINCT request_id)      AS requests,
    SUM(input_tokens)               AS total_input_tokens,
    SUM(output_tokens)              AS total_output_tokens,
    ROUND(SUM(token_credits), 4)    AS total_ai_credits
FROM request_tokens
GROUP BY user_name
ORDER BY total_ai_credits DESC
LIMIT 20;

4.4 每日 AI 支出趋势

检测随时间变化的成本峰值和模式:

SELECT
    usage_date,
    service_type,
    SUM(credits_used) AS total_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
WHERE service_type IN (
    'CORTEX_AGENTS',
    'SNOWFLAKE_INTELLIGENCE',
    'SNOWFLAKE_COWORK',
    'CORTEX_CODE_CLI',
    'CORTEX_CODE_SNOWSIGHT',
    'SNOWFLAKE_COCO'
)
  AND usage_date >= DATEADD(MONTH, -1, CURRENT_DATE)
GROUP BY usage_date, service_type
ORDER BY usage_date;

4.5 组织范围的 AI 支出

适用于多账户组织:

SELECT
    account_name,
    service_type,
    ROUND(SUM(credits_used), 2) AS total_credits
FROM SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY
WHERE service_type IN (
    'AI_SERVICES', 'CORTEX_AGENTS',
    'CORTEX_CODE_CLI', 'CORTEX_CODE_SNOWSIGHT',
    'SNOWFLAKE_INTELLIGENCE'
)
AND usage_date >= DATEADD('day', -30, CURRENT_DATE())
GROUP BY account_name, service_type
ORDER BY total_credits DESC;

5. 按查询的成本归因

Snowflake 中 AI 查询的总成本是 AI token 信用点仓库计算信用点 之和。你可以将用量视图与 QUERY_ATTRIBUTION_HISTORY 按 query_id 连接,以获得完整图景:

SELECT
    usage.query_id,
    usage.model_name,
    usage.function_name,
    SUM(usage.credits) AS ai_credits,
    MAX(attr.credits_attributed_compute) AS warehouse_credits,
    SUM(usage.credits)
        + COALESCE(MAX(attr.credits_attributed_compute), 0)
        AS total_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AI_FUNCTIONS_USAGE_HISTORY AS usage
LEFT JOIN SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY AS attr
    ON usage.query_id = attr.query_id
WHERE usage.start_time >= DATEADD('day', -7, CURRENT_DATE())
GROUP BY usage.query_id, usage.model_name, usage.function_name
ORDER BY total_credits DESC
LIMIT 20;
对账说明: 来自细粒度用量视图的信用点总和 不会完全匹配 METERING_HISTORY 总额。用量视图仅暴露底层计量事件的一个子集。使用细粒度视图进行相对归因和趋势分析;使用 METERING_HISTORY 作为权威计费来源。

执行前估算成本

在运行昂贵的 AI 查询之前,使用 AI_COUNT_TOKENS 估算 token 用量:

SELECT AI_COUNT_TOKENS('ai_embed', 'snowflake-arctic-embed-l-v2.0', 'Summarize the quarterly revenue trends...');

AI_COUNT_TOKENS 本身仅产生仓库计算成本——没有额外的基于 token 的收费。这使得它适用于大型批处理作业的预检成本检查。

6. 成本治理:预算、配额和警报

Snowflake 提供三种机制来控制 AI 支出:资源预算按用户配额以及基于警报的监控。每种机制在粒度、执行速度和灵活性方面各有不同的优势。

按功能划分的预算支持

资源预算

资源预算为特定的 Snowflake 对象定义每月信用额度限制。它们使用基于标签的成本归因模型,并可在可配置的阈值处触发自动化存储过程。

-- Account root budget already activated; skip ACTIVATE()
-- Create a custom budget (if it doesn't already exist)
CREATE SNOWFLAKE.CORE.BUDGET IF NOT EXISTS ANALYTICS_DEV.COWORK_DEMO.AGENT_BUDGET();
-- Set a monthly spending limit
CALL ANALYTICS_DEV.COWORK_DEMO.AGENT_BUDGET!SET_SPENDING_LIMIT(500);
-- Add a Cortex Agent to the budget
CALL ANALYTICS_DEV.COWORK_DEMO.AGENT_BUDGET!ADD_SHARED_RESOURCE(
    'CORTEX AGENT',
    (SELECT SYSTEM$REFERENCE('CORTEX AGENT', 'ANALYTICS_DEV.COWORK_DEMO.RETAIL_INSIGHTS_AGENT'))
);
语法说明:预算是类实例,不是标准的 Snowflake 对象。使用 SHOW SNOWFLAKE.CORE.BUDGET INSTANCES IN ACCOUNT。

共享资源预算

共享资源预算按团队或成本中心细分跟踪信用消耗。用户通过标签进行识别,即使不同团队使用相同的底层 AI 功能,也能为其设置独立的预算。

例如,如果工程团队和财务团队都调用 AI_COMPLETE,则根据其标记的用户身份,分别通过独立的预算跟踪每个团队的信用。

按用户配额

按用户配额为单个用户设置每月和每日信用额度限制。当启用阻断执行时,Snowflake 会自动拒绝达到限制的用户的进一步 AI 请求。

-- Create a per-user AI quota
CREATE SNOWFLAKE.CORE.QUOTA IF NOT EXISTS ANALYTICS_DEV.COWORK_DEMO.AI_USER_QUOTA();

-- Set monthly per-user credit limit
CALL ANALYTICS_DEV.COWORK_DEMO.AI_USER_QUOTA!SET_PER_USER_LIMIT(300);
-- Set daily per-user credit limit
CALL ANALYTICS_DEV.COWORK_DEMO.AI_USER_QUOTA!SET_PER_USER_LIMIT(50, 'DAILY');

-- Add AI domains to the quota (covers AI functions, Cortex Agents, etc.)
CALL ANALYTICS_DEV.COWORK_DEMO.AI_USER_QUOTA!ADD_SHARED_RESOURCE('AI FUNCTION');
CALL ANALYTICS_DEV.COWORK_DEMO.AI_USER_QUOTA!ADD_SHARED_RESOURCE('CORTEX AGENT');

-- Enable block enforcement: automatically block users who hit the limit
CALL ANALYTICS_DEV.COWORK_DEMO.AI_USER_QUOTA!SET_BLOCK_ENFORCEMENT_ENABLED(TRUE);

执行时机

对于快速变化的 AI 工作负载,延迟差异是显著的。按用户配额提供近乎实时的执行,而预算更适合具有运营响应的月度治理。

对成本异常发出警报

将 Snowflake 警报与计量视图结合,实现主动监控:

CREATE OR REPLACE ALERT ANALYTICS_DEV.COWORK_DEMO.AI_SPEND_ALERT
    WAREHOUSE = COMPUTE_WH
    SCHEDULE = 'USING CRON 0 8 * * * America/Los_Angeles'
    IF (EXISTS (
        SELECT 1
        FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
        WHERE usage_date = CURRENT_DATE() - 1
          AND service_type IN ('AI_SERVICES',
              'CORTEX_AGENTS', 'SNOWFLAKE_INTELLIGENCE')
        HAVING SUM(credits_used) > 100
    ))
    THEN
        CALL SYSTEM$SEND_EMAIL(
            'ai_cost_alerts',
            '[email protected]',
            'AI Spend Alert',
            'Daily AI credit usage exceeded 100 credits yesterday.'
        );

ALTER ALERT ANALYTICS_DEV.COWORK_DEMO.AI_SPEND_ALERT RESUME;

7. 最佳实践和优化

为模型选择合适的规模

不同模型的每 token 费率差异很大。在较小的模型足够时使用大型模型可能意味着 10 倍的成本差异。将模型能力与任务复杂度相匹配:

  • 分类/情感分析:较小的模型通常以极低的成本实现相当的性能
  • 复杂推理/代码生成:较大的模型以可衡量的更好输出证明其溢价是合理的
  • 嵌入:使用专门构建的嵌入模型,而非通用 LLM

优化 token 使用

  • 保持提示简洁——每个 token 都计入计费
  • 在大型批处理运行之前使用 AI_COUNT_TOKENS() 估算成本
  • 对于 Cortex REST API,请利用提示缓存来处理重复的系统提示
  • 请注意,AI_CLASSIFY 标签和描述对每条记录都计为输入 token,而不是每次调用计一次——如有可能,请重构批处理

为 AI 工作负载选择仓库规模

Snowflake 建议在调用 Cortex AI Functions 时使用不超过 MEDIUM的仓库规模。使用更大的仓库不会提高 AI 函数性能(LLM 推理在服务器端进行),但会为闲置的仓库容量产生不必要的平台信用费用。

控制 Cortex Search 成本

  • Cortex Search 服务在服务恢复期间持续运行——在不需要时挂起服务
  • 监控索引数据量;成本随索引数据的 GB 数扩展
  • 对于一次性批处理工作负载,优先使用Cortex Batch Search(仅在作业运行时收费,而非持续收费)

启用跨区域路由

如果数据驻留不是限制条件,请设置 CORTEX_ENABLED_CROSS_REGION = 'ANY_REGION',以每 AI 信用支付 $2.00 而非 $2.20——在所有 AI 消耗上节省固定的 9%。

构建成本仪表板

将上述监控查询组合到一个计划仪表板中。需要包含的关键面板:

  • 每日 AI 信用趋势(按服务类型堆叠)
  • AI 支出前 10 名用户
  • 模型级成本细分
  • 预算利用率与限额对比
  • 周环比成本比较

建立审查节奏

  • 每日:针对阈值突破的自动化警报
  • 每周:审查顶级用户和模型分布,以捕捉失控模式
  • 每月:将计量总计与使用视图核对,审查预算利用率,调整配额

快速参考:规范使用视图

关于我:

你好!我是 Riya KhandelwalSnowflake Data Superhero,在以下领域拥有实践经验:Azure、Snowflake Databricks,我专注于设计、构建和优化 数据管道、ETL 工作流和企业级数据仓库解决方案

我持有 15+ 项超大规模云认证,涵盖 Azure、IBM、AWS 和 Snowflake,这赋予我多云视角以及架构兼具可扩展性和面向未来解决方案的能力。

除技术工作外,我喜欢分享知识并为数据工程社区简化高级概念。我经常撰写关于 Azure、Snowflake、数据仓库以及数据工程新兴趋势的文章。

Medium 上关注我,以了解 Azure 和数据工程 的最新动态,我将技术主题分解为实用的、真实世界的见解。

Riya Khandelwal - Medium

LinkedIn 上加入我,我定期向 76K+ 人撰写关于热门话题的内容。

https://www.linkedin.com/in/riyakhandelwal/

查看我关于 Snowflake 的更多文章——敬请关注更多 Snowflake 见解和真实世界用例。

理解和管控 Snowflake 上的 AI 服务成本最初发表于 Snowflake Builders Blog: Data Engineers, App Developers, AI, & Data Science 在 Medium 上,人们通过突出和回应这个故事来继续对话。

这篇内容对你有用吗?

反馈只用于改善内容筛选,不等同于收藏

分享这条资讯
分享海报
保存图片
iOS 也可以长按图片保存