前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Edge2AI之CDSW 实验和模型

Edge2AI之CDSW 实验和模型

作者头像
大数据杂货铺
发布2022-04-27 17:03:07
1.6K2
发布2022-04-27 17:03:07
举报
文章被收录于专栏:大数据杂货铺大数据杂货铺

尽管本次实验不涉及 CDF 组件,但我们已将其用于解释其他实验中使用的 CDSW 模型端点是如何实现的。

在本次实验中,您将在 CDSW 中运行实验,选择产生最佳实验结果的模型并将该模型部署到生产环境中。

实验总结

  • 实验 1 - CDSW:训练模型。
  • 实验 2 - 部署模型。

实验 1 - CDSW:训练模型

在本实验和接下来的实验中,您将戴上数据科学家的帽子。您将编写模型代码,对其进行多次训练,最后将模型部署到生产环境。整个实验全部在30分钟内完成!

第 1 步:配置 CDSW

  1. 打开 CDSW Web UI 并以 身份登录admin,如果您还没有这样做的话(第一次登陆,请创建admin用户)。
  1. 导航到 CDSW Site Administration页面以微调环境:
  2. Runtime/Engines选项卡中,在Resource Profiles中添加一个具有 2 个 vCPU 和 4 GB RAM 的新引擎(docker 映像),同时删除默认引擎。
  1. 检查环境变量下是否已存在以下变量。如果没有,请添加:
代码语言:javascript
复制
HADOOP_CONF_DIR=/etc/hadoop/conf/

第 2 步:创建项目

  1. 返回主页并单击New Project,使用此 GitHub 项目作为源:https://github.com/cloudera-labs/edge2ai-workshop
  1. 现在您的项目已经创建,单击Open Workbench并启动 Python3 会话:

修改Docker的PIP安装默认源路径,在CDSW Project的页面打开_Terminal Access:

在Terminal中执行下面的命令:

代码语言:javascript
复制
cat > ~/.pip/pip.conf <<EOF
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
EOF

然后再执行pip的安装等,速度就快了很多。执行完之后就可以关掉该终端了。

在/home/cdsw下做的修改,都会持久化存储和使用。

  1. 引擎准备就绪后,运行以下命令来安装一些必需的库:
代码语言:javascript
复制
!pip3 install --upgrade pip scikit-learn pandas
  1. 该项目带有一个历史数据集。将此数据集复制到 HDFS:
代码语言:javascript
复制
!hdfs dfs -put -f data/historical_iot.txt /user/$HADOOP_USER_NAME
  1. 您现在已准备好运行实验以根据您的历史数据训练模型。
  2. 此时您可以停止引擎。
  3. 修改cdsw_build.sh文件,在pip安装中增加pandas,然后保存。
代码语言:javascript
复制
pip3 install --upgrade pip scikit-learn pandas

第 3 步:检查cdsw.iot_exp.py

打开文件cdsw.iot_exp.py。这是一个 python 程序,它构建一个模型来预测机器故障(这台机器发生故障的可能性)。hdfs 上有一个包含客户数据的数据集,包括故障指示器字段。

该程序将使用随机森林算法构建故障预测模型。随机森林是决策树的集合。随机森林是用于分类和回归的最成功的机器学习模型之一。它们结合了许多决策树以降低过度拟合的风险。与决策树一样,随机森林处理分类特征,扩展到多类分类设置,不需要特征缩放,并且能够捕获非线性和特征交互。

spark.mllib支持随机森林进行二元和多类分类以及回归,同时使用连续和分类特征。spark.mllib使用现有的决策树实现来实现随机森林。有关树的更多信息,请参阅决策树指南。

随机森林算法需要几个参数:

  • numTrees:森林中的树木数量。

增加树的数量将减少预测的方差,提高模型的测试时间准确性。训练时间在树的数量上大致呈线性增长。

  • maxDepth:森林中每棵树的最大深度。

增加深度使模型更具表现力和功能。然而,深度树需要更长的时间来训练,也更容易过度拟合。一般来说,与使用单个决策树相比,使用随机森林训练更深的树是可以接受的。一棵树比随机森林更容易过度拟合(因为对森林中的多棵树进行平均会降低方差)。

在cdsw.iot_exp.py程序中,这些参数可以在运行时传递给程序,传递给这些python变量:

代码语言:javascript
复制
param_numTrees = int(sys.argv[1])
param_maxDepth = int(sys.argv[2])

另请注意,随机森林模型的质量指标被写回到 Data Science Workbench 存储库:

代码语言:javascript
复制
cdsw.track_metric("auroc", auroc)
cdsw.track_metric("ap", ap)

这些指标稍后将显示在“Experiments”仪表盘中。

第 4 步:第一次运行实验

  1. 现在,使用以下参数运行实验:
代码语言:javascript
复制
nnumTrees = 20 numDepth = 20
  1. 从菜单中选择Run → Run Experiments…。现在,在后台,Data Science Workbench 环境将启动一个新的 docker 容器,该程序将在其中运行。
  1. 返回 CDSW 中的Projects页面,然后点击Experiments按钮。
  1. 如果状态指示Running,您必须等待运行完成。如果状态为Build Failed或Failed ,请检查日志信息。这可以通过单击Experiments的运行编号来访问。在那里您可以找到会话日志以及构建信息。
  1. 如果您的状态显示为Success,您应该能够看到auroc(曲线下面积)模型质量指示器。CDSW 用户界面可能隐藏了此值。在这种情况下,单击“3 metrics”链接,然后选择 auroc 字段。可能需要取消选择其他一些字段,因为界面只能同时显示 3 个指标。
  1. 在这个例子中,~0.8415。不错,但也许有更好的参数值可用。

第 5 步:重新运行实验几次

  1. 返回 Workbench 并再运行 2 次实验,并为 NumTrees 和 NumDepth 尝试不同的值。尝试以下值:
代码语言:javascript
复制
NumTrees NumDepth
15       25
25       20
  1. 当所有运行都成功完成后,检查哪些参数具有最佳质量(最佳预测值)。这由曲线下的最高面积表示:auroc指标。

第 6 步:将最佳模型保存到您的环境中

  1. 选择具有最佳预测值的运行编号(在上面的示例中,实验3)。
  2. 在实验的概览屏幕中,您可以看到Pickle 格式 (.pkl )的模型,捕获到iot_model.pkl文件中。选择此文件并点击添加到项目按钮。这会将模型复制到您的项目目录中。

实验 2 - CDSW:部署模型

第 1 步:检查程序cdsw.iot_model.py

  1. 打开您在上一个实验中创建的项目并在 Workbench 中检查该文件。这个 PySpark 程序使用该pickle.load机制来部署模型。模型是从iot_modelf.pkl文件中加载的,该文件保存在上一个实验中,来自具有最佳预测模型的实验。

该程序还包含predict定义,它是调用模型的函数,将特征作为参数传递,并将返回结果变量。

  1. 在部署模型之前,在 Workbench 中进行尝试:启动 Python3 引擎(如果之前的session没有关掉,可以从Sessions进入)并运行文件中的代码cdsw.iot_model.py。然后从提示中调用该predict()方法:
代码语言:javascript
复制
predict({"feature": "0, 65, 0, 137, 21.95, 83, 19.42, 111, 9.4, 6, 3.43, 4"})
  1. 函数成功返回,所以我们知道我们现在可以部署模型了。您现在可以停止引擎。

第 2 步:部署模型

  1. 从项目的主页中,选择“模型”按钮。选择新模型并指定以下配置:
代码语言:javascript
复制
Name:          IoT Prediction Model
Description:   IoT Prediction Model
File:          cdsw.iot_model.py
Function:      predict
Example Input: {"feature": "0, 65, 0, 137, 21.95, 83, 19.42, 111, 9.4, 6, 3.43, 4"}
Kernel:        Python 3
Engine:        1 vCPU / 4 GB Memory
Replicas:      1
  1. 设置完所有参数后,单击“Deploy Model”按钮。等到模型部署完毕。这可能需要几分钟。

第 3 步:测试部署的模型

  1. 当您的模型状态更改为Deployed时,单击模型名称链接以转到模型的概览页面。在该页面上,单击“测试”按钮以检查模型是否正常工作。

因为模型启用了API Key认证,因此上述执行会报错。

  1. 点击左上角的Cloudera Data Science Workbench图标,进入主页,然后点击左侧的User Settings按钮,进入用户设置页面,再点击API Keys菜单,进入API Key设置页面。找到下面的API Key区域,点击Create API Key

将生成的API Key和KeyID复制保存,用于后续使用。待退出该页面后,API Key将无法再获取。

  1. 将复制的API Key粘贴到模型的API Key区域,然后再进行Test
  1. 带有状态的绿色圆圈success表示我们对模型的 REST 调用正在运行。1响应中的表示{"result": 1}收集这些温度读数的机器不太可能出现故障。
  1. 现在,让我们更改输入参数并再次调用预测函数。在输入字段中输入以下值:
代码语言:javascript
复制
{
"feature": "0, 95, 0, 88, 26.62, 75, 21.05, 115, 8.65, 5, 3.32, 3"
}
  1. 有了这些输入参数,模型返回0,这意味着机器很可能会坏掉。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验总结
  • 实验 1 - CDSW:训练模型
    • 第 1 步:配置 CDSW
      • 第 2 步:创建项目
        • 第 3 步:检查cdsw.iot_exp.py
          • 第 4 步:第一次运行实验
            • 第 5 步:重新运行实验几次
              • 第 6 步:将最佳模型保存到您的环境中
              • 实验 2 - CDSW:部署模型
                • 第 2 步:部署模型
                  • 第 3 步:测试部署的模型
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档