首页 > 其他分享 >[教程]:使用 FastAPI 和 Docker 提供容器化 ML 模型

[教程]:使用 FastAPI 和 Docker 提供容器化 ML 模型

时间:2022-09-05 08:56:54浏览次数:94  
标签:容器 教程 FastAPI 应用程序 ML Docker Dockerfile docker 码头工人

[教程]:使用 FastAPI 和 Docker 提供容器化 ML 模型

使用 FastAPI 和 docker 提供容器化机器学习 (ML) 模型的分步教程。

Our tech stack for the tutorial

在我的 ** 以前的** 在教程中,我们通过构建端点来服务机器学习( 机器学习 ) 使用 Python 的图像分类器模型和 快速API .

在本后续教程中,我们将重点介绍在通过 FastAPI 服务时使用 docker 对模型进行容器化。

如果你关注了我的 ** 最后一个教程** 关于使用 TensorFlow Hub 提供预训练的图像分类器模型 快速API , 那么你也能 ** 直接地** __ ** 第 3 步** 本教程的⬇️。

[

[教程]:使用 FastAPI 在生产环境中提供 ML 模型

使用 FastAPI 从 TensorFlow Hub 提供(预训练的)图像分类器模型的分步教程。

媒体网

](/@ashmi_banerjee/4-step-tutorial-to-serve-an-ml-model-in-production-using-fastapi-ee62201b3db3)

集装箱化的优势

It works on my machine — a popular docker meme on the internet

容器化具有以下优势:

  1. **性能一致性
    ** DevOps 团队知道容器中的应用程序将运行相同,无论它们部署在哪里。
  2. **更高的效率
    ** 容器允许更快速地部署、修补或扩展应用程序。
  3. **更少的开销
    ** 与传统或硬件虚拟机环境相比,容器需要更少的系统资源,因为它们不包含操作系统映像。

方法

我们可以在这里使用 2 种方法来实现这一点。

  1. 实现一个 Dockerfile 这需要 建成 每次代码发生变化时手动手动执行,然后单独执行。
  2. 使用自动化上述过程 码头工人撰写

步骤 0:先决条件

  1. Python 3.6+

  2. 你有 ** 码头工人** 安装。

  3. 创建项目结构如下

    fastapi-后端
    ├── 源
    │ ├── 应用
    │ │ ├── app.py
    │ └── 预
    │ │ ├── 型号
    │ │ │ ├── tf_pred.py
    │ │ └── image_classifier.py
    │ └── 实用工具
    │ │ ├── 实用程序.py
    │ └── main.py
    ├── Dockerfile
    ├── docker-compose.yml
    └── requirements.txt

第 1 步:设置

在里面 应用程序.py 文件,执行 /预测/tf/ 终点使用 快速API .

在里面 主文件 文件,我们使用 乌维康 server,它是 Python 的 ASGI Web 服务器实现。

笔记 : 由于本教程的目标是容器化应用程序,因此上述代码片段的详细解释已在 ** 第2步** ** 以前的** __教程。

第 2 步:创建 Dockerfile

容器化应用程序的第一步是在您的项目目录中创建一个 Dockerfile (见上面的项目结构) .

Dockerfile 是一个文本文档,包含构建 docker 映像所需的所有说明。

我们定义我们的 Dockerfile 如下:

说明:

  • 1号线 : 下载指定的 Docker 镜像 ( 蟒蛇:3-破坏者 ) 来自 ** 码头中心注册表** .您可以查看可用的图像 ** 这里** .
  • 3号线 : 升级 点子 以便稍后我们可以安装 要求.txt
  • 4号线 :将工作目录设置为 /代码 .这是必需的,以便所有脚本都从一个公共父目录运行
  • 6号线 : 副本 要求.txt 文件及其内容从主机到容器
  • 7号线 : 安装内容 要求.txt 图像内部
  • 第 9–12 行 : 将各自的文件从主机复制到镜像
  • 13号线 :CMD(可执行)指令用于设置运行容器时要执行的命令。一个 Dockerfile 必须只有一个 CMD 指令,如果有多个,只有最后一个生效。该语句还将容器的默认命令设置为 蟒蛇主.py .

第 4 步:构建并运行您的应用程序

一旦我们实现了 Dockerfile,下一步就是 建造 泊坞窗图像,然后 它。

步骤 4.1。构建 图片

我们构建图像(这里 我的fastapiimage ) 如下。
您可以使用您选择的任何名称来调用它。

 docker build -t myfastapiimage 。

需要注意的要点:

  • 不要忘记 . 在图像之后

  • 如果您的 docker 镜像在更改文件后无法重建,您可以按如下方式启动强制构建:

    docker build --no-cache -t myfastapiimage 。

码头工人建造 通常使用缓存来加快速度。 --无缓存 确保它强制重建它。

步骤 4.2。运行容器

 docker run --name mycontainer -p 80:8000 myfastapiimage

解释

  • 码头运行--名称<myContainerName> : 创建一个名为 我的容器 (您可以在此处使用任何名称)。容器的名称稍后用于识别目的。
  • -p<host_port> :<container_port> 映射主机的端口( 80 ) 到集装箱的一个港口 ( 8000 )。
  • 我的fastapiimage 是从中派生容器的映像的名称。

[步骤 4 的替代方法] 使用 Docker-compose

码头工人撰写 是定义和运行多容器 Docker 应用程序的理想工具。在 Compose 中,我们使用 YAML 文件 ( .yml ) 来配置应用程序的服务。

使用的最大优势 码头工人撰写 就是说,使用一个命令,我们就可以从我们的配置中创建并启动所有服务。你可以阅读更多关于 码头工人撰写 这里 .

现在让我们看看我们如何定义 码头工人撰写 在我们的例子中。由于我们是单一服务应用程序,因此定义 码头工人撰写 应该相当简单。

说明:

  • 这个 docker-compose 有一个名为 应用程序 定义。
  • 应用程序 服务使用从 Dockerfile 在当前目录中。
  • 然后它将容器和主机绑定到暴露的端口, 8000
  • 它还绑定了 /src/ 从主机到容器。卷绑定是反映容器中主机上文件的任何更改所必需的。

跑步 码头工人撰写

从项目目录中,通过运行以下命令启动应用程序。

 码头工人组成 --build

访问 ** http://127.0.0.1:8000/** 从您的浏览器启动并运行应用程序。

一些方便的调试技巧

  • 如果您的图像遇到问题,您可以尝试进入容器的外壳并对其进行调试。要 bash 进入正在运行的容器,请键入以下内容:

    docker exec -t -i mycontainer /bin/bash

  • 如果您的 docker 镜像在更改文件后无法重建,您可以按如下方式启动强制构建:

    docker build --no-cache -t myfastapiimage 。

  • 有时,如果您尝试重新运行 docker 容器,您可能会得到 容器已经在使用 错误。在这种情况下,终止容器,通过 码头工人<containerName> 并重新运行您的容器。
    或者,如果您使用的是 docker-compose,您还可以从终端(在项目目录中)键入以下内容

    码头工人-撰写下来

  • 的情况下 路径错误 , 小心 容器根 您正在使用并相应地调整路径。

  • 另一个方便的 docker 命令如下:

    码头工人ps -a

它为您提供所有容器(运行和停止)的所有列表。

结论

在本教程中,我们学习了如何使用容器化我们的应用程序 码头工人 .

容器化之后的下一步是部署。
一旦我们对容器化应用程序的行为感到满意,我们就可以将其部署在任何托管/混合/本地云服务上,并将故障风险降至最低。

笔记 :本教程可以扩展到任何类型的应用程序容器化,而不仅仅是 FasAPI 应用程序。
你只需要调整
_Dockerfile_ _码头工人撰写_ 因此。其余的保持不变 .

GitHub上的源代码可以访问 ** 这里** ** _.
_** 总结了有关该主题的参考资料和进一步阅读资料 ** 这里** .

如果你喜欢这篇文章,请 ** 订阅** 得到我最新的。
要取得联系,请联系我
** 领英** 或通过 ** ashmibanerjee.com** .

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/15426/46430508

标签:容器,教程,FastAPI,应用程序,ML,Docker,Dockerfile,docker,码头工人
From: https://www.cnblogs.com/amboke/p/16656836.html

相关文章

  • 员工离职困扰?来看AI如何解决,基于人力资源分析的 ML 模型构建全方案 ⛵
    ......
  • docker的重启策略
    docker的重启策略docker容器是重启策略是在配置中的一个重要的策略。docker容器的重启都是有docker的守护进程完成的,因此与守护进程息息相关docker容器的重启策略如下:n......
  • 我的第一个 BigQuery ML 模型
    我的第一个BigQueryML模型○大查询是一个高度可扩展、无服务器、多云的数据仓库工具。反过来,BigQuery机器学习(BQML)是一项功能,可让您使用标准SQL查询在BigQ......
  • MLops:我最喜欢的数据科学项目的 Github 项目模板
    MLops:我最喜欢的数据科学项目的Github项目模板source:unsplash.com-@yancyminTLDR:在这个故事中,我将分享一个git项目结构,我经常将其用作数据科学项目的起点,并......
  • docker访问外部https数字证书问题
    一般我们构建的docker镜像使用的都是alpinelinux系统,默认是不带ca-certificates根证书的,导致无法识别外部https携带的数字证书。在访问的时候,会抛出509:certific......
  • docker的常用命令
    docker的常用命令直接敲击docker,可以看到帮助信息   1,查看docker的命令帮助信息dockersearch--help2,常用命令概要1下载镜像:dockerpullnginx:1.21.12......
  • HTML、CSS 和 JavaScript 格式的 3D 玻璃天气图标
    HTML、CSS和JavaScript格式的3D玻璃天气图标3D玻璃天气图标免费下载****在HTML、CSS和JavaScript中HTML:<divclass="weatherweather--sun"><divclass......
  • QML
    QML是一种脚本语言。qtquick是QML语言的库,暂且可以这么理解。QML用来声明UI元素,并可以做逻辑处理,可以理解为html+javascript,比如在窗体上放置一个按钮:importQtQuic......
  • Docker 部署
    部署docker1.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2.停用并禁用selinux查看:getenforce临时禁用:setenforce0查看配置文件:grep^SELI......
  • Docker 本地安装常用应用
    docker启动容器设置自启动加上配置:--restart=always比如:dockerrun-tid--name【定义容器名称】-p8081:8080--restart=always【镜像名称】如果是已经启动的容器......