概述
概述
本教程旨在帮助您学习使用 TensorFlow Extended (TFX) 和 Apache Airflow 作为编排器创建自己的机器学习管道。它在 Vertex AI Workbench 上运行,并展示了与 TFX 和 TensorBoard 的集成,以及在 Jupyter Lab 环境中与 TFX 的交互。
您将做什么?
您将学习如何使用 TFX 创建 ML 管道
- TFX 管道是一个有向无环图,或“DAG”。我们通常将管道称为 DAG。
- 当您要部署生产 ML 应用程序时,TFX 管道是合适的
- 当数据集很大或可能变得很大时,TFX 管道是合适的
- 当训练/服务一致性很重要时,TFX 管道是合适的
- 当推理的版本管理很重要时,TFX 管道是合适的
- Google 使用 TFX 管道进行生产 ML
请参阅 TFX 用户指南 以了解更多信息。
您将遵循典型的 ML 开发流程
- 摄取、理解和清理我们的数据
- 特征工程
- 训练
- 分析模型性能
- 重复
- 准备就绪
Apache Airflow 用于管道编排
TFX 编排器负责根据管道定义的依赖关系调度 TFX 管道的组件。TFX 旨在可移植到多个环境和编排框架。TFX 支持的默认编排器之一是 Apache Airflow。本实验说明了使用 Apache Airflow 进行 TFX 管道编排。Apache Airflow 是一个平台,用于以编程方式编写、调度和监控工作流。TFX 使用 Airflow 将工作流编写为任务的有向无环图 (DAG)。丰富的用户界面使您可以轻松地可视化生产中运行的管道、监控进度以及在需要时排查问题。Apache Airflow 工作流定义为代码。这使它们更易于维护、版本控制、测试和协作。Apache Airflow 适用于批处理管道。它轻巧易学。
在本示例中,我们将通过手动设置 Airflow 在实例上运行 TFX 管道。
TFX 支持的其他默认编排器是 Apache Beam 和 Kubeflow。 Apache Beam 可以在多个数据处理后端(Beam Ruunners)上运行。Cloud Dataflow 是一个这样的 Beam 运行器,可用于运行 TFX 管道。Apache Beam 可用于流式处理和批处理管道。
Kubeflow 是一个开源 ML 平台,致力于简化、可移植和可扩展地在 Kubernetes 上部署机器学习 (ML) 工作流。当需要在 Kubernetes 集群上部署 TFFX 管道时,Kubeflow 可用作编排器。此外,您还可以使用自己的 自定义编排器 来运行 TFX 管道。
阅读有关 Airflow 的更多信息 此处。
芝加哥出租车数据集
您将使用 出租车行程数据集,该数据集由芝加哥市发布。
模型目标 - 二元分类
客户的小费会超过 20% 还是低于 20%?
设置 Google Cloud 项目
在您点击“开始实验”按钮之前 请阅读这些说明。实验有时间限制,您无法暂停它们。计时器在您点击“开始实验”时开始,它显示 Google Cloud 资源可供您使用的时间长度。
本动手实验让您可以在真实的云环境中自己进行实验活动,而不是在模拟或演示环境中。它通过为您提供新的临时凭据来实现这一点,您可以使用这些凭据在实验持续期间登录并访问 Google Cloud。
您需要什么 要完成本实验,您需要
- 访问标准互联网浏览器(推荐使用 Chrome 浏览器)。
- 完成实验所需的时间。
如何启动您的实验并登录 Google Cloud Console 1. 点击开始实验按钮。如果您需要为实验付费,将弹出一个窗口供您选择付款方式。左侧是一个面板,其中包含您必须在本实验中使用的临时凭据。
- 复制用户名,然后点击打开 Google Console。实验将启动资源,然后打开另一个选项卡,显示登录页面。
提示: 在单独的窗口中并排打开选项卡。
- 在登录页面中,粘贴从左侧面板复制的用户名。然后复制并粘贴密码。
- 点击后续页面
- 接受条款和条件。
不要添加恢复选项或双重身份验证(因为这是一个临时帐户)。
不要注册免费试用。
片刻之后,Cloud Console 将在此选项卡中打开。
激活 Cloud Shell
Cloud Shell 是一款预装了开发工具的虚拟机。它提供了一个持久的 5GB 主目录,并在 Google Cloud 上运行。Cloud Shell 提供对您的 Google Cloud 资源的命令行访问。
在 Cloud Console 中,在右上角工具栏中,点击激活 Cloud Shell按钮。
点击继续。
准备和连接到环境需要几分钟。连接后,您已经过身份验证,并且项目已设置为您的 _PROJECTID。例如
gcloud
是 Google Cloud 的命令行工具。它预装在 Cloud Shell 上,并支持选项卡补全。
您可以使用以下命令列出活动帐户名称
gcloud auth list
(输出)
ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net 要设置活动帐户,请运行:$ gcloud config set account
ACCOUNT
您可以使用以下命令列出项目 ID:gcloud config list project
(输出)
[core] project =
(示例输出)
[core] project = qwiklabs-gcp-44776a13dea667a6
有关 gcloud 的完整文档,请参阅gcloud 命令行工具概述。
启用 Google Cloud 服务
- 在 Cloud Shell 中,使用 gcloud 启用实验中使用的服务。
gcloud services enable notebooks.googleapis.com
部署 Vertex Notebook 实例
- 点击导航菜单并导航到Vertex AI,然后导航到工作台。
在 Notebook 实例页面上,点击新建 Notebook。
在自定义实例菜单中,选择TensorFlow Enterprise,然后选择TensorFlow Enterprise 2.x(带 LTS)>无 GPU。
在新建 Notebook 实例对话框中,点击铅笔图标以编辑实例属性。
对于实例名称,输入您的实例的名称。
对于区域,选择
us-east1
,对于区域,选择所选区域内的区域。向下滚动到机器配置,选择e2-standard-2作为机器类型。
保留其余字段的默认值,然后点击创建。
几分钟后,Vertex AI 控制台将显示您的实例名称,后跟打开 JupyterLab。
- 点击打开 JupyterLab。一个 JupyterLab 窗口将在新选项卡中打开。
设置环境
克隆实验存储库
接下来,您将在 JupyterLab 实例中克隆tfx
存储库。1. 在 JupyterLab 中,点击终端图标以打开一个新的终端。
取消
以构建推荐。
- 要克隆
tfx
Github 存储库,请键入以下命令,然后按Enter。
git clone https://github.com/tensorflow/tfx.git
- 要确认您已克隆存储库,请双击
tfx
目录并确认您可以看到其内容。
安装实验依赖项
- 运行以下命令以转到
tfx/tfx/examples/airflow_workshop/taxi/setup/
文件夹,然后运行./setup_demo.sh
以安装实验依赖项
cd ~/tfx/tfx/examples/airflow_workshop/taxi/setup/
./setup_demo.sh
以上代码将
- 安装所需的软件包。
- 在主文件夹中创建一个
airflow
文件夹。 - 将
dags
文件夹从tfx/tfx/examples/airflow_workshop/taxi/setup/
文件夹复制到~/airflow/
文件夹。 - 将 csv 文件从
tfx/tfx/examples/airflow_workshop/taxi/setup/data
复制到~/airflow/data
。
配置 Airflow 服务器
创建防火墙规则以在浏览器中访问 airflow 服务器
- 转到
<a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a>
并确保已正确选择项目名称 - 点击顶部的
创建防火墙规则
选项
在创建防火墙对话框中,按照以下步骤操作。
- 对于名称,输入
airflow-tfx
。 - 对于优先级,选择
1
。 - 对于目标,选择
网络中的所有实例
。 - 对于源 IPv4 范围,选择
0.0.0.0/0
- 对于协议和端口,点击
tcp
并在tcp
旁边的框中输入7000
- 点击
创建
。
从您的 shell 运行 airflow 服务器
在 Jupyter Lab 终端窗口中,更改到主目录,运行airflow users create
命令以创建 Airflow 的管理员用户
cd
airflow users create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin
然后运行airflow webserver
和airflow scheduler
命令来运行服务器。选择端口7000
,因为它允许通过防火墙。
nohup airflow webserver -p 7000 &> webserver.out &
nohup airflow scheduler &> scheduler.out &
获取您的外部 IP
- 在 Cloud Shell 中,使用
gcloud
获取外部 IP。
gcloud compute instances list
运行 DAG/管道
在浏览器中
打开浏览器并转到 http://
- 在登录页面中,输入您在运行
airflow users create
命令时选择的用户名(admin
)和密码(admin
)。
Airflow 从 Python 源文件加载 DAG。它获取每个文件并执行它。然后,它从该文件中加载任何 DAG 对象。所有定义 DAG 对象的.py
文件都将在 airflow 主页中列为管道。
在本教程中,Airflow 扫描~/airflow/dags/
文件夹以查找 DAG 对象。
如果您打开~/airflow/dags/taxi_pipeline.py
并滚动到底部,您会看到它创建了一个 DAG 对象并将其存储在名为DAG
的变量中。因此,它将在 airflow 主页中列为管道,如下所示
如果您点击出租车,您将被重定向到 DAG 的网格视图。您可以点击顶部的图形
选项以获取 DAG 的图形视图。
触发出租车管道
在主页上,您可以看到可用于与 DAG 交互的按钮。
在操作标题下,点击触发按钮以触发管道。
在出租车DAG页面中,使用右侧的按钮刷新 DAG 的图形视图的状态,因为管道正在运行。此外,您可以启用自动刷新以指示 Airflow 在状态更改时自动刷新图形视图。
您也可以使用终端中的Airflow CLI来启用和触发您的 DAG
# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>
# trigger
airflow trigger_dag <your DAG name>
等待管道完成
触发管道后,在 DAG 视图中,您可以观察管道运行时的进度。每个组件运行时,DAG 图中组件的轮廓颜色将更改以显示其状态。当组件完成处理时,轮廓将变为深绿色以显示它已完成。
了解组件
现在,我们将详细了解此管道的组件,并分别查看管道中每个步骤产生的输出。
在 JupyterLab 中,转到
~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/
打开notebook.ipynb.
在笔记本中继续实验,并通过点击屏幕顶部的运行(
)图标来运行每个单元格。或者,您可以使用SHIFT + ENTER执行单元格中的代码。
阅读叙述并确保您了解每个单元格中发生的事情。