0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何从notebook实验过渡到云中部署

Tensorflowers 来源:TensorFlow 作者:TensorFlow 2022-07-10 15:47 次阅读

当您开始研究一个新的机器学习问题时,我猜您首先会使用的环境便是 notebook。也许您喜欢在本地环境中运行 Jupyter、使用 Kaggle Kernel,或者我个人比较喜欢使用的 Colab。有了这些工具,创建并进行机器学习实验变得越来越便利。尽管在 notebooks 中进行实验时一切顺利,但在您将实验提升到生产环境时,很容易碰壁。突然间,您的关注点不再只是追求准确度上的高分。

如果您有长时间运行的作业,如进行分布式训练或是托管一个在线预测模型,这时该怎么办?亦或您的用例需要有关安全性和数据隐私的更细粒度的权限,您的数据在使用期间会是怎样的?您将如何处理代码更改,或者如何随着时间推移监控模型的表现?

要打造生产级应用或训练大型模型,您需要额外的工具来帮您实现扩缩,而不仅仅是在 notebook 中编写代码。使用云服务提供商可以帮助解决这个问题,但这一过程可能会让人感到有点望而生畏。如果浏览一下 Google Cloud 产品的完整列表,您可能完全不知道该从何入手。

因此,为了让您的旅程更轻松,我将向您介绍从实验性 notebook 代码到云中部署模型的快速路径。

2e559454-f609-11ec-ba43-dac502259ad0.png

您可以在此处获取本示例中使用的代码。此 notebook 在 TF Flowers 数据集上训练了一个图像分类模型。您将看到如何在云中部署该模型,并通过 REST 端点获取对新花卉图像的预测。

请注意,为了遵循此教程进行实验,您需要有一个启用计费功能的 Google Cloud 项目。如果您以前从未使用过 Google Cloud,可以按照此处的说明设置一个项目,并免费获得 300 美元赠金以进行实验。

以下是您需要采取的 5 个步骤:

1.创建一个 Vertex AI Workbench 代管式 notebook

2.上传 .ipynb 文件

3.启动 notebook 执行

4.部署模型

5.获取预测

创建一个 Vertex AI Workbench 代管 notebook

要训练和部署该模型,您将使用 Google Cloud 的代管式机器学习平台 Vertex AI。Vertex AI 包含许多不同的产品,可以在 ML 工作流的整个生命周期中为您提供帮助。今天,您将使用其中的一些产品,让我们先从代管式 notebook 产品 Workbench 开始。

在 Cloud Console 的“Vertex AI”部分下,选择“Workbench”。请注意,如果这是您首次在项目中使用 Vertex AI,系统将提示您启用 Vertex API 和 Notebooks API。因此,请务必点击界面中的按钮来执行此操作。

2e93bc2a-f609-11ec-ba43-dac502259ad0.png

接下来,选择“MANAGED NOTEBOOKS”,然后选择“NEW NOTEBOOK”

2ea0e102-f609-11ec-ba43-dac502259ad0.png

Advanced Settings”下,您可以通过指定机器类型和位置、添加 GPU、提供自定义容器以及启用终端访问来自定义 notebook。目前,请保留默认设置,只需为 notebook 命名即可。然后点击“CREATE”。

2ebd2150-f609-11ec-ba43-dac502259ad0.png

OPEN JUPYTERLAB 文本变为蓝色时,表示您的 notebook 已准备就绪。首次打开 notebook 时,系统会提示您进行身份验证,您可以按照界面中的步骤操作。

2edd8792-f609-11ec-ba43-dac502259ad0.png

打开 JupyterLab 实例后,您会看到几种不同的 notebook 选项。Vertex AI Workbench 提供了不同的内核(TensorFlow、R、XGBoost 等),这些内核是预安装了通用数据科学库的代管式环境。如果您需要向内核中添加其他库,和在 Colab 中一样,您可以在 notebook 单元中使用 pip install。

2eeb2ee2-f609-11ec-ba43-dac502259ad0.png

第 1 步已完成!您已经创建了代管式 JupyterLab 环境。

上传 .ipynb 文件

现在,将 TensorFlow 代码放入 Google Cloud 中。如果您一直在使用不同的环境(Colab、本地等),则可以将任何需要的代码工件上传到您的 Vertex AI Workbench 代管式 notebook,甚至可以与 GitHub 集成。在未来,您可以直接在 Workbench 中完成所有的开发工作,但现在让我们假设您一直在使用 Colab。

Colab notebooks 可以导出为 .ipynb 文件。

2f27988c-f609-11ec-ba43-dac502259ad0.png

您可以点击“上传文件”图标,将文件上传到 Workbench。

2f471f7c-f609-11ec-ba43-dac502259ad0.png

当您在 Workbench 中打开此 notebook 时,系统会提示您选择内核,即 notebook 的运行环境。有几种不同的内核可供选择,但由于此代码示例使用 TensorFlow,因此需要选择 TensorFlow 2 内核。

2f63bff6-f609-11ec-ba43-dac502259ad0.png

选择内核后,在 notebook 中执行的任何单元都将在此代管式 TensorFlow 环境中运行。例如,如果执行导入单元,则可以导入 TensorFlow、TensorFlow Datasets 和 NumPy。这是因为所有这些库都包含在 Vertex AI Workbench TensorFlow 2 内核中。当然,由于 XGBoost 内核中没有安装 TensorFlow,如果您尝试在该内核中执行相同的 notebook 单元,则会看到一条错误消息。

启动 notebook 执行

虽然我们可以手动运行其余的 notebook 单元,但对于需要长时间训练的模型而言,notebook 并不总是最方便的选择。如果使用 ML 构建应用,通常来说您需要对模型进行多次训练。随着时间的推移,您会想要重新训练模型,以确保其保持实时更新,并不断产生有价值的结果。

如果您要开始处理一个新的机器学习问题,手动执行 notebook 单元可能是不错的选择。但是,如果您想要大规模进行自动化实验,或者为生产应用重新训练模型,代管式 ML 训练选项将大大简化您的工作。

启动训练作业最快的方法是使用 notebook 执行功能,该功能将在 Vertex AI 代管式训练服务上逐个运行 notebook 单元。

notebook 执行功能

启动训练作业后,它将在作业完成后您无法访问的机器上运行。因此,您不希望将 TensorFlow 模型工件保存到本地路径。您想要将其保存到 Google Cloud 的对象存储空间 Cloud Storage 中,以便您可在其中存储图像、csv 文件、txt 文件和保存的模型工件。几乎包括任何类型的内容。

Cloud Storage 涉及“存储分区”的概念,它用于存放数据。您可以通过界面创建存储分区。Cloud Storage 中存储的所有内容都必须包含在存储分区中。在存储分区中,您可以创建文件夹来组织数据。

通过界面创建存储分区

Cloud Storage 中的每个文件都有一个路径,就像本地文件系统上的文件一样,只是 Cloud Storage 路径始终以gs:// 开头

您需要更新训练代码,以便将内容保存到 Cloud Storage 存储分区而非本地路径中。

例如,在这里,我从 model.save('model_ouput"). 更新了 notebook 的最后一个单元,将工件保存到我在项目中创建的名为 nikita-flower-demo-bucket 的存储分区中,而不是保存到本地。

2f976f9a-f609-11ec-ba43-dac502259ad0.png

现在,我们可以启动执行了。

选择“Execute”按钮,为您的执行命名,然后添加 GPU。在“环境”下方,选择 TensorFlow 2.7 GPU 映像。该容器预安装了 TensorFlow 和许多其他数据科学库。

2fa6c242-f609-11ec-ba43-dac502259ad0.png

然后,点击SUBMIT”

您可以在“EXECUTIONS”标签页中跟踪训练作业的状态。作业完成后,您可以在“VIEW RESULT”下查看 notebook 和每个单元的输出,它们存储在 GCS 存储分区中。这意味着,您始终可以将模型运行与执行的代码关联在一起。

2fbb0324-f609-11ec-ba43-dac502259ad0.png

训练完成后,您将能够在存储分区中看到 TensorFlow 保存的模型工件。

2fddc1d4-f609-11ec-ba43-dac502259ad0.png

部署到端点

现在,您已经了解到如何在 Google Cloud 上快速启动无服务器训练作业。但 ML 不仅仅只是用于训练。如果我们不使用模型来实际完成一些任务,那么所有这些工作有什么意义呢?

就像训练一样,我们可以通过调用 model.predict 直接从 notebook 执行预测。但是,如果我们想要获取对大量数据的预测,或在运行中获取低延迟预测,则需要比 notebook 更强大的工具。

让我们回到 Vertex AI Workbench 代管式 notebook。您可以将下面的代码粘贴到一个单元中,该单元会使用 Vertex AI Python SDK 将您刚刚训练的模型部署到 Vertex AI Prediction 服务。将模型部署到端点会将保存的模型工件与物理资源相关联,从而确保低延迟预测。

首先,导入 Vertex AI Python SDK。

Vertex AI Python SDK

然后,将您的模型上传到 Vertex AI Model Registry。您需要为模型命名,并提供一个用于传送的容器映像,这是将用于运行您的预测的环境。Vertex AI 提供了用于传送的预构建容器,在本例中,我们使用的是 TensorFlow 2.8 映像。

Vertex AI Model Registry

预构建容器

您还需要将 artifact_uri 替换为存储保存的模型工件的存储分区路径。对我来说,该路径是“nikita-flower-demo-bucket”。您还需要将 project 替换为您的项目 ID。

然后,将模型部署到端点。我目前使用的是默认值,但如果您想详细了解流量分配和自动扩缩,请务必查看相关文档。请注意,如果您的用例不需要低延迟预测,则无需将模型部署到端点,而是可以使用批量预测功能。

流量分配

自动扩缩

批量预测功能


部署完成后,您可以在控制台中看到您的模型和端点。

30070c60-f609-11ec-ba43-dac502259ad0.png

获取预测

现在,该模型已部署到端点,您可以像使用任何其他 REST 端点一样使用它。也就是说,您可以将模型集成到下游应用中并获取预测。

现在,我们直接在 Workbench 中测试该模型。

首先,打开一个新的 TensorFlow notebook。

3036fda8-f609-11ec-ba43-dac502259ad0.png

在此 notebook 中,导入 Vertex AI Python SDK。

然后,创建端点,替换 project_number 和 endpoit_id。

您可以在 Cloud Console 的“Endpoints”部分找到端点 ID。

304acba8-f609-11ec-ba43-dac502259ad0.png

您可以在控制台首页找到项目编号。注意,该编号与项目 ID 不同。

305c8c76-f609-11ec-ba43-dac502259ad0.png

当您向在线预测服务器发送请求时,HTTP 服务器会接收该请求。HTTP 服务器会从 HTTP 请求内容正文中提取预测请求。提取的预测请求会被转发到传送函数。在线预测的基本格式是数据实例列表。此类列表可以是普通的值列表,也可以是 JSON 对象成员,具体取决于您如何在训练应用中配置输入。

为了测试端点,我首先将一张花卉图像上传到 Workbench 实例。

307deeca-f609-11ec-ba43-dac502259ad0.png

下面的代码使用 PIL 打开图像并调整其大小,然后将其转换为 NumPy 数组。

接下来,我们将 NumPy 数据转换为 float32 类型和列表。我们将其转换为列表,是由于 NumPy 数据不支持 JSON 序列化,因此我们不能在请求的正文中发送这些数据。请注意,不需要将数据扩缩 255,因为该步骤已通过 tf.keras.layers.Rescaling(1./255). 包含在我们的模型架构中。为了避免调整图像的大小,可以将 tf.keras.layers.Resizing 添加到模型中,而不是将其作为 tf.data 流水线的一部分。

然后,调用 predict

所得到的结果是模型的输出,这是一个包含 5 个单元的 softmax 层。看起来索引 2 的类(郁金香)得分最高。

提示:为了节省成本,如果您不打算使用端点,请务必取消部署端点!要取消部署,转到控制台的“Endpoints”部分,选择端点,然后选择“Undeploy model form endpoint”选项。如果需要,您可以随时在未来重新部署。

30b821c6-f609-11ec-ba43-dac502259ad0.png

在更加实际的例子中,您可能希望直接将图像发送到端点,而不是先将其加载到 NumPy 中。如果您想查看相关示例,可以参阅此 notebook 。

开始您的探索吧!

现在您已了解到如何从 notebook 实验过渡到云中部署。有了这一框架,您可以开始思考如何使用 notebooks 和 Vertex AI 构建新的 ML 应用啦。

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4700

    浏览量

    128673
  • Notebook
    +关注

    关注

    0

    文章

    19

    浏览量

    8586
  • REST
    +关注

    关注

    0

    文章

    32

    浏览量

    9398

原文标题:从 notebook 到部署模型的 5 个步骤

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    瑞萨电子推出三合一电动汽车单元解决方案

    如今,电动汽车驱动器正在从传统的分布式系统过渡到集中式架构。
    的头像 发表于 10-11 11:38 324次阅读

    什么叫自动控制系统的过渡过程

    自动控制系统的过渡过程是指系统在初始状态与最终稳定状态之间所经历的一段时间内,系统输出量的变化过程。在这段时间内,系统会经历从不稳定到稳定,非线性到线性,从无序到有序的过程。过渡过程的长短、稳定性
    的头像 发表于 06-06 16:00 1669次阅读

    如何将PSoC4000部件的设计过渡到PSoC4000T部件?

    英飞凌提供哪些支持,帮助客户将现有 PSoC 设计转移到新产品中? 如何将 PSoC4000 部件的设计过渡到 PSoC4000T 部件? PSoC4000 部件仅支持 PSoC Creator
    发表于 05-29 06:35

    如何用加载分散法将软件中部分变量内部RAM转移到外部RAM?

    如何用加载分散法将软件中部分变量内部RAM转移到外部RAM, 加载分散法文件怎么设置?堆和栈需要设置吗?
    发表于 05-10 07:52

    鸿蒙实战开发-本地部署、SmartPerf 编译部署指导文档

    编译环境搭建 注意:在linux编译环境安装时以root或者其他 sudo 用户身份运行下面的命令。 node 环境安装 下载Node js安装包(windows推荐, linux跳过此步骤)
    发表于 05-09 14:23

    请问cortex-M7核单片机主要应用在哪些领域?

    看到st和nxp的M7核单片机,动不动几百兆的主频,有的还要外置DDR,还有的成本低于1刀。想知道这些单片机的目标应用场合是哪些? 单片机发展,51过渡到cortex m3,现在又要从cortex m3过渡到corte m7吗
    发表于 04-17 07:49

    【转载】英特尔开发套件“哪吒”快速部署YoloV8 on Java | 开发者实战

    部署到生产系统中。通过简化的开发工作流程,OpenVINO可赋能开发者在现实世界中部署高性能应用程序和算法。 今天我们将基于哪吒开发者套件平台来快速部署OpenVI
    的头像 发表于 03-23 08:05 470次阅读
    【转载】英特尔开发套件“哪吒”快速<b class='flag-5'>部署</b>YoloV8 on Java | 开发者实战

    DeepSleep模式过渡到活动模式时,IMO和ECO时钟在唤醒过程中是如何运行的呢?

    我正在使用 CYT2B95。 我在主动模式下使用 ECO 作为 FLL/PLL 参考时钟。 DeepSleep 模式过渡到活动模式时,IMO 和 ECO 时钟在唤醒过程中是如何运行的? 问题 1
    发表于 01-24 07:52

    解析步进电机三轴联动的快速加减速算法研究

    步进电机具有快速启停能力强、高、转速容易控制的特点。但是,步进电动机应避免转动速率的突变,而且停止到开始转动有一个较低的起动频率,随后才可以平缓地过渡到较高的转速。相应地在步进电机制动时,也应该平缓过渡
    发表于 01-19 14:55 1317次阅读
    解析步进电机三轴联动的快速加减速算法研究

    意法半导体新组织架构2月5日生效

    意法半导体(STMicroelectronics)近日宣布,其新的组织架构将于2024年2月5日起正式生效。这次组织架构的调整将把公司现有的三个产品部门过渡到两个产品部门。
    的头像 发表于 01-18 14:59 801次阅读

    kofax过渡到基于云的安全打印管理软件

    这就是问题所在:本地打印服务器需要大量的管理工作。相关成本非常高。IT面临着繁重的工作量和耗时的问题,比如及时部署更新——这可能并不总是会发生。这一失误可能会在关键硬件中留下安全漏洞。同时,驱动程序管理也很耗时。
    的头像 发表于 12-26 16:42 729次阅读

    ESP32的接口不能随便用,如何快速Arduino过渡到ESP32的新手指南-进阶篇

    进阶篇 接续如何快速Arduino过渡到ESP32的新手指南-基础篇,继续了解ESP32的各种引脚接口吧! 内容介绍 1. SPI引脚 2. I2C引脚 3. UART引脚 4. RTC引脚 5.
    的头像 发表于 12-12 15:54 2.6w次阅读
    ESP32的接口不能随便用,如何快速<b class='flag-5'>从</b>Arduino<b class='flag-5'>过渡到</b>ESP32的新手指南-进阶篇

    如何解决模型部署时出现算子不匹配问题

    结果部署到生产系统中。通过简化的开发工作流程,OpenVINO 可赋能开发者在现实世界中部署高性能应用程序和算法。
    的头像 发表于 12-08 15:30 987次阅读
    如何解决模型<b class='flag-5'>部署</b>时出现算子不匹配问题

    罗格朗在最新家用电源插座中部署InnoGaN器件

    英诺赛科透露,全球电气和数字建筑基础设施专家罗格朗正在其最新的家用电源插座中部署InnoGaN器件,以满足快速充电Type A + C和USB电源适配器等产品日益增长的电力需求。 据专家介绍,罗格朗
    的头像 发表于 11-26 16:38 1291次阅读

    英特尔未来2年内将出货超过1亿台AI PC

    格尔辛格表示近年来服务器行业相对平淡,不过随着 AI 的加速发展,AI 行业已经训练阶段过渡到部署阶段,各行各业都将会围绕着 AI 展开,促进了服务器行业的发展。
    的头像 发表于 11-23 16:13 481次阅读