【问题标题】:Cloud Run / Docker loading large files for ML predictionCloud Run / Docker 加载大文件以进行 ML 预测
【发布时间】:2020-12-30 00:21:28
【问题描述】:

我正在尝试从 Google Cloud Run 上的 Flask 驱动的 docker 容器中提供相当大的模型 (1GB)。

我正在尝试找出加载 pickle / joblib 模型文件的最佳方式 - 以减少容器启动时间。

由于包含在 github 源中不是一个选项或不需要,我现在唯一的想法是尝试使用 gsutil 将其从 Dockerfile 读入容器。

这将如何影响冷容器启动时间?有没有更简单的方法来实现这一点?

此外,在代码中调用 joblib.load(model_file_path) 似乎不是一个好主意 - 因为加载可能需要 30 秒或更长时间。

【问题讨论】:

    标签: python docker flask google-cloud-platform google-cloud-run


    【解决方案1】:

    我的建议是构建包含模型的容器。你赢得了这样的两件事:

    • 在启动时,您不必下载文件(您可以节省启动时间)
    • 您不必存储模型(有关信息,该文件存储在 /tmp 目录中,这是一个内存文件系统,因此您可以使用实例中的内存空间),从而增加所需的内存(您可以省钱,也可以保护地球!)

    wrote an article on this

    但是,加载 1Gb 模型需要一些时间。即将推出一项功能(最小实例,保持最少数量的实例温暖,以防止冷启动,但它不是免费的!)

    【讨论】:

    • 您介意添加一个 sn-p 以显示如何将模型从 GCS 复制到容器中吗?
    • 您的意思是创建一个包含模型的容器吗?像这样,在运行时,容器从已经下载的容器开始。对吗?
    • 当调用gcloud builds 时,Dockerfile 中应该有一个命令——它将模型文件从 GCS 拉到容器中,以便它可以用于服务。由于容器是通过 Github 操作构建的,因此无法从本地文件系统获得模型。
    • @dendog 您的new question 与此有关吗?
    • 确实是:)
    【解决方案2】:

    Cloud Run 有一个内存文件系统,要下载或使用 1GB 的文件,您需要确保为您的实例选择了足够的内存。尝试使用4GiB,见docs to set memory limits

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 2023-01-04
      • 2018-06-06
      • 2021-07-01
      • 2018-05-03
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2018-06-23
      相关资源
      最近更新 更多