管理AI成本:分步教程设置每用户配额控制支出
DataHot 速览
本文介绍如何在Snowflake中为Cortex AI设置每用户配额,防止用户无限调用AI_COMPLETE或循环使用Agent导致信用额度快速消耗。配额为每用户设置信用上限,在达到后几分钟内阻止新请求,并按日或月周期自动重置。教程演示了在Snowsight中通过用户标签界定范围,并可在Snowflake CoCo中强制执行。这是通用指南,也可用于其他配额场景。
为什么值得关注:数据团队采用AI功能时成本失控是普遍痛点,该教程提供了具体可操作的用户级配额方案,帮助平台管理者控制AI支出。
本文目录 10 节
译文
AI 逐段翻译任何有权限访问 Cortex AI 的用户都可以对超过十亿行的表运行 AI_COMPLETE,或让代理循环运行,从而快速消耗积分。当这笔支出出现在使用量视图中时,积分已经消耗殆尽。如果你的整个工程团队都使用 AI 功能,一个积极的超级用户就能让你的月度账单飙升。
按用户配额可以解决这个问题。它为每个用户设置积分上限,并在用户消费达到上限后的几分钟内阻止其发出新的 AI 请求。限制按周期(每日或每月)计算,周期重置后,阻止会自动解除。
这是一个在 Snowsight 中为工程团队设置配额的逐步指南,通过标签定义范围,在 Snowflake CoCo 上强制执行。
注意,这只是其中一个用例,本教程也可作为设置按用户配额的通用指南。
更偏好视频?这里有一个完整的视频演示和更深入的讲解:
开始前你需要准备什么
有两样东西能让接下来的操作更顺利。
- 一个能创建配额对象的角色。配额是 Snowflake 中的一类对象,存在于数据库和 Schema 中,因此你的角色需要在目标 Schema 上拥有 CREATE SNOWFLAKE.CORE.QUOTA 权限(或使用 ACCOUNTADMIN 角色)。
- (本教程可选)用户上的标签。我通过标签来界定配额范围,所以我的工程用户带有部门标签和工程标签。如果你的用户还没有打标签,请先给他们打上标签。注意,设置配额并不强制要求有标签,标签只是为了让你能更精细地控制配额对象。
开始之前需要注意一点:以下所有操作也可以通过 SQL 使用 CREATE SNOWFLAKE.CORE.QUOTA 及其方法完成,所以如果你有 CI/CD 流程,可以将其代码化。你也可以通过 CoCo 的成本智能技能用自然语言驱动同样的设置,文章末尾有更多介绍。我在这里使用 Snowsight 界面是因为它最直观,能看到所有选项。
第 1 步:打开预算并创建新配额
在 Snowsight 中,查看左侧边栏,前往管理 » 成本管理。然后,从顶部栏中选择预算标签页。配额与预算一同位于此处,这样你就可以在一个地方管理所有消费控制。
选择右上角的+ 预算按钮,然后选择配额。在 Snowsight 界面中,配额设置弹窗有三个阶段:配额范围、基本信息,以及告警通知和执行。左侧边栏会跟踪你的进度。
第 2 步:将配额范围限定到目标用户
第一页决定配额监控的对象。你可以监控账户中的所有用户或一组用户(通过标签)。监控所有用户只需点击一下,而且会自动包含以后添加到账户的用户,但我希望这个配额只针对工程团队。
我会选择一组用户(通过标签),然后选择定义用户组的标签。我添加 department = engineering。
这将自动包含所有标记为 engineering 的用户,使其被此配额监控/
用户解析在评估时动态进行,因此当你之后更改用户标签时,配额的成员资格会自动跟随,无需重新配置。
第 3 步:选择要管理的 AI 资源
仍在范围页面上,你可以选择配额跟踪的内容。选择AI 相关功能,会看到四个领域:Cortex AI 函数、Snowflake CoCo(原 Cortex Code)、Cortex Agents 和 Snowflake CoWork(原 Snowflake Intelligence)。我目前只关注 CoCo 成本,所以我会取消选择其他所有选项。
一个配额只跟踪 AI 领域或仓库计算,不会混合。单位不同(AI 积分与仓库积分),所以如果你还想设置仓库上限,必须创建单独的配额。
你不必一次管理所有内容。展开CoCo,你可以选择一个、几个或所有接口。我希望涵盖所有 CoCo 接口,所以我会保持所有选项被选中。
我最关心的一个方面是面向未来的设计。当你包含整个领域而不是手动选择资源时,只要“自动包含未来目标”开关已打开,该领域内新出现的内容都会自动被覆盖。如果 Snowflake 在六个月后推出新的 AI 函数或接口,它会自动纳入配额管理,无需你采取任何操作。你的团队创建新的 Cortex 代理,它从创建的那一刻起就受到管理。你无需定期检查来捕捉配额遗漏的功能。
第 4 步:命名配额并设置限制
选择下一步以进入基本信息。
为配额命名。我建议使用一致的前缀,这样它们可以按顺序排列。例如,Quota_,然后加上组名:Quota_Engineering,最后加上时间段,所以是 Quota_Engineering_August。选择位置,即拥有该配额对象的数据库和 Schema。我的位置是 TEST.PUBLIC。该位置仅表示配额对象存储的位置,与配额在哪个数据库或 Schema 上执行无关。
接下来是限制。对于 AI 功能,你可以设置每月积分限制、每日积分限制,或两者都设置,至少需要设置一个。
- 每月限制在每个 UTC 日历月的第一秒重置。
- 每日限制在 UTC 时间 00:00 重置,且独立于每月限制评估。用户可能在每日限制被阻止,但仍在每月限制之内。
我强烈建议你根据观察到的行为来设置这些限制,而不是凭猜测。先观察一部分代表性的用户,了解正常消费水平。设置过低会阻碍正常的工作,设置过高则失去了成本治理的意义。
第 5 步:配置告警通知
选择下一步进入告警通知。配额服务于两类受众:你作为管理员,以及正在消费的用户。警报同时覆盖两者。
每个警报可以基于实际消费(本月的累计使用量)或预计消费(用户当前消费速度到月底可能达到的水平)触发。设置触发百分比,决定是否通知受影响用户。
我的模式是接近限额警告,大约75%(先这样设置,但你可以按需添加更多),然后是预计支出警告,也是100%,两者都会通知受影响的用户。这样,用户就能看到即将到来的阻止,而不是在任务中途毫无预警地被切断。
我们建议从实际限额的某个增量开始(如50%、75、90、100等),如果对更多信号感兴趣,可以添加“100%预计”。不过,请随意使用对你的目的和团队有意义的任何值。
第6步:启用强制执行
同一页面上有强制执行。 这个页面赋予了配额以约束力。
切换启用强制执行。启用后,Snowflake会在用户的支出达到月度或每日限额后的几分钟内阻止其发出新的AI请求。这在一个由Snowflake管理的管道中运行,因此不会消耗你账户中的积分。当阻止生效时,进行中的AI函数调用会被终止,而不仅仅是新的调用。
阻止会自动解除。当周期在UTC边界重置时,或者当你将用户的限额提高到其当前支出之上时,阻止会被清除,无需手动操作。
我还希望每当有人被阻止时向管理员发送电子邮件,所以我把我的地址添加到摘要收件人中。如果你需要自定义逻辑而不是内置阻止,例如挂起仓库、撤销角色或写入审计记录,此页面还允许你在阈值处附加存储过程。内置阻止覆盖了我这里的需求。
选择创建。配置大约需要15到25秒,之后配额开始评估范围内的每个用户。
第7步:监控配额
回到预算选项卡,新配额会显示在其他配额旁边。打开它,深入视图会提供月度与每日利用率的关键绩效指标、按计划与超预算的用户细分,以及被阻止的用户数量。右侧则展示了范围和各用户限额。
列表视图会在你查找之前标记出问题。例如,一个超额每日限额的指标,以及处于已阻止状态的用户。
通过CoCo构建相同功能
我在Snowsight用户界面中构建这个功能,因为它显示了所有选项,但CoCo可以通过其/cost-intelligence技能完成整个工作。用自然语言要求它创建和配置配额、查看每个用户的支出与利用率,或检查谁被阻止,它会将其转换为相同的配额操作。该技能适用于Snowsight中的CoCo、CoCo CLI和CoCo Desktop。因此,CoCo既是这个配额强制执行的领域,也是你可以用来构建配额的工具。
何时使用此功能
当个别用户可能自行产生大量AI支出,而你希望有一个硬性上限而不是事后查看的仪表板时,请使用按用户配额。当不同团队或层级需要不同限额时,通过标签来限定范围;依靠整个领域的选择,以便新功能和代理自动被覆盖;并根据观察到的使用情况来设置限额,而不是猜测。
查看更多文档:https://docs.snowflake.com/en/user-guide/budgets/per-user-quotas
管理AI成本:逐步教程,设置按用户配额以控制AI支出 最初发表于Snowflake Builders Blog: Data Engineers, App Developers, AI, & Data Science 在Medium上,人们通过突出显示和回应这个故事来继续讨论。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏