问题描述
我已经建立了机器学习模型,现在下一步,我希望将其公开。该计划是:
- 使用Streamlit构建UI。
- 要使用Docker映像打包应用程序。
- 要将Docker映像部署到Google Cloud Run环境中。
- 要在Google Cloud Run环境中启动Docker容器。
但是问题是我无法估计在Google Cloud Run中启动和运行容器时的成本(我仍然是初学者)。如何估算最坏的情况,即应该产生的最大成本是多少? Google Cloud Run pricing table中有CPU,内存,请求和网络属性,但是:
- 我如何确切知道我的应用程序将占用多少资源?
- 是否有可能,如果该应用程序是公开可用的,并且请求超出了免费限制配额,我会得到一笔天文数字的账单。
- 我可以为我的账单设置一些限制吗?
解决方法
计费非常简单:您需要支付分配的CPU时间和内存时间(以及少量的请求数)。
当前最坏的情况是:(每秒每实例NbCpu +每秒钟每实例NbCpu)* 3600 * 24 * 30 * 1000。
- 3600将在一小时内转化为秒
- 24改变一天中的小时
- 30转化为每月的一天
- 1000个默认的“最大实例数”参数
如果您想限制费用,请limit the max instance parameter。但是,您还将限制应用程序的可伸缩性。但这妨碍了您获得天文账单,这是一个权衡问题。
关于帐单,您也可以set an alert in the budget of your project
您关于应用程序使用的资源量的最后一个问题。很难说!但是,您必须了解您的应用程序。指标图可以帮助您提供一些输入。
但是,Cloud Run能够process up to 80 concurrent requests。因此,一次仅处理1个请求时,您的指标可以随着80个请求而发生巨大变化!尤其是在内存消耗方面!
您还可以使用此并发参数来限制一个实例的大小。但是是否要减少它,请不要将max instance参数设置得太低,否则将无法满足某些请求。
权衡问题