Logo
Section 1 / 9

容器作为可复现模型的简介

数据科学中用于可复现模型的容器技术简介

导入

容器作为可复现模型的简介

数据科学中用于可复现模型的容器技术简介

容器的需求

在部署数据科学模型时,重要的是能够复现训练和服务阶段所使用的相同环境。在《第章:模型作为 Web 端点》中,我们使用了同一台机器来运行两个环境;而在《第3章:模型作为无服务器函数》中,我们通过 requirements.txt 文件确保模型服务所用的无服务器环境与开发环境一致。像 Docker 这样的容器系统提供了一种构建可复现环境的工具,并且相比虚拟机等替代方案更加轻量。

隔离的环境

容器的核心思想是创建一个隔离的环境,在其中可以配置完成特定任务所需的各种依赖。容器框架的目标是以极小的资源开销实现不同实例之间的隔离。使用容器框架时,你只需声明代码所需的依赖,框架会自动处理不同执行环境的管理工作。

  • 一些常见的容器化任务包括:
  • 执行 ETL 工作
  • 部署机器学习模型
  • 搭建 API 服务
  • 托管交互式 Web 应用
Course Image

Docker

Course Image
是容器领域的事实标准,围绕该平台已构建了大量配套工具。

弹性容器服务

弹性容器环境(如 AWS 的 Elastic Container Service,ECS)提供的功能类似于无服务器函数,其目标是将数据科学模型的托管从服务器管理中抽象出来。

  • 无服务器环境通常仅支持特定运行时,内存受限,难以运行深度学习框架,且往往绑定特定云厂商。
  • 使用 ECS 时,你需要自行配置用于服务模型的实例类型。
Course Image

使用 ECS 可以自由选择模型服务所需的语言,并可根据需要分配更多内存。尽管 ECS 本身是 AWS 的专有工具,但更新的选项如 EKS 基于开源且可移植的 Kubernetes 构建,避免了这一局限性。

容器在数据科学中的应用

以下是我在数据科学领域中观察到的一些容器使用场景:

  • 可复现的分析:容器为打包分析流程提供了理想方式,使得团队成员可以在数月甚至数年后重新运行你的工作。
  • Web 应用程序:在《第章:使用 Dash 构建交互式 Web 服务》中,我们使用 Dash 构建了一个交互式 Web 应用。容器能有效屏蔽部署过程中的托管复杂性。
  • 模型部署:若要将模型暴露为服务端点,容器可很好地将模型应用代码与模型服务基础设施解耦。

本章学习目标

本章的重点是上述最后一个应用场景。我们将从《第章:模型作为 Web 端点》中的 Web 服务出发,将其封装进一个 Docker 容器中。首先会在本地 EC2 实例上运行该容器,然后探索使用 ECS 实现可扩展、负载均衡且容错的模型部署。最后,我们将展示如何在 GCP 上借助 Kubernetes 实现类似的效果。

Course Image
云成本提醒

随着我们开始使用可扩展的计算环境,在使用 ECS 和 GKE 时需密切关注云资源成本。对于 AWS,应注意正在运行的 EC2 实例数量;而在 GCP 上,计费工具可有效追踪支出。后续关于编排的内容主要针对 AWS,所采用的方法不具备跨云平台的可移植性。如果你的模型部署不需要使用 AWS,可直接跳转至 Kubernetes 相关课程。

模型作为Web端点

Docker