Azure云工作站上做Machine Learning模型开发 - 全流程演示

目录

    • 本文内容
    • 先决条件
    • 从“笔记本”开始
    • 设置用于原型制作的新环境(可选)
    • 创建笔记本
    • 开发训练脚本
    • 迭代
    • 检查结果

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文内容

了解如何在 Azure 机器学习云工作站上使用笔记本开发训练脚本。 本教程涵盖入门所需的基础知识:

  • 设置和配置云工作站。 云工作站由 Azure 机器学习计算实例提供支持,该实例预配置了环境以支持各种模型开发需求。
  • 使用基于云的开发环境。
  • 使用 MLflow 跟踪模型指标,所有都是在笔记本中完成的。

先决条件

若要使用 Azure 机器学习,你首先需要一个工作区。 如果没有工作区,请完成“创建开始使用所需的资源”以创建工作区并详细了解如何使用它。

从“笔记本”开始

工作区中的“笔记本”部分是开始了解 Azure 机器学习及其功能的好地方。 在这里,可以连接到计算资源、使用终端,以及编辑和运行 Jupyter Notebook 和脚本。

  1. 登录到 Azure 机器学习工作室。
  2. 选择你的工作区(如果它尚未打开)。
  3. 在左侧导航中,选择“笔记本”。
  4. 如果没有计算实例,屏幕中间会显示“创建计算”。 选择“创建计算”并填写表单。 可以使用所有默认值。 (如果已有计算实例,则会在该位置看到“终端”。本教程稍后会使用“终端”。)

file

设置用于原型制作的新环境(可选)

为使脚本运行,需要在配置了代码所需的依赖项和库的环境中工作。 本部分可帮助你创建适合代码的环境。 若要创建笔记本连接到的新 Jupyter 内核,请使用定义依赖项的 YAML 文件。

- 上传文件

上传的文件存储在 Azure 文件共享中,这些文件将装载到每个计算实例并在工作区中共享。

1. 使用右上角的 下载原始文件 按钮,将此 conda 环境文件 [workstation_env.yml](github.com) 下载到计算机。
1. 选择“添加文件”,然后选择“上传文件”,将其上传到工作区。

file

2. 选择“浏览并选择文件”。
3. 选择下载的 workstation_env.yml 文件。
4. 选择“上传”。

你将在“文件”选项卡的用户名文件夹下看到 workstation_env.yml 文件。请选择此文件以预览它,并查看它指定的依赖项。 你将看到如下所示的内容:

name: workstation_env
dependencies:- python=3.8- pip=21.2.4- scikit-learn=0.24.2- scipy=1.7.1- pandas>=1.1,<1.2- pip:- mlflow==2.4.1 - azureml-mlflow==1.51.0- psutil>=5.8,<5.9- ipykernel~=6.0- matplotlib

- 创建内核

现在,使用 Azure 机器学习终端基于 workstation_env.yml 文件创建新的 Jupyter 内核。

1. 选择“终端”以打开终端窗口。 还可以从左侧命令栏打开终端:

file

2. 如果计算实例已停止,请选择“启动计算”,并等待它运行。

file

3. 计算运行后,终端中会显示一条欢迎消息,可以开始键入命令。
4. 查看当前的 conda 环境。 活动环境标有 *。conda env list5. 如果为本教程创建了子文件夹,请立即运行 `cd` 转到该文件夹。
6. 根据提供的 conda 文件创建环境。 构建此环境需要几分钟时间。conda env create -f workstation_env.yml7. 激活新环境。conda activate workstation_env8. 验证正确的环境是否处于活动状态,再次查找标有 * 的环境。conda env list9. 基于活动环境创建新的 Jupyter 内核。python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 10. 关闭终端窗口。

创建笔记本

  1. 选择“添加文件”,然后选择“创建新文件”。
    file

  2. 将新笔记本命名为 develop-tutorial.ipynb(或输入首选名称)。

  3. 如果计算实例已停止,请选择“启动计算”,并等待它运行。
    file

  4. 你将在右上角看到笔记本已连接到默认内核。 如果创建了内核,请切换到使用 Tutorial Workstation Env 内核。

开发训练脚本

在本部分中,你将使用 UCI 数据集中准备好的测试和训练数据集开发一个 Python 训练脚本,用于预测信用卡默认付款。

此代码使用 sklearn 进行训练,使用 MLflow 来记录指标。

  1. 从可导入将在训练脚本中使用的包和库的代码开始。

    import os
    import argparse
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.metrics import classification_report
    from sklearn.model_selection import train_test_split
    
  2. 接下来,加载并处理此试验的数据。 在本教程中,将从 Internet 上的一个文件读取数据。

    # load the data
    credit_df = pd.read_csv("https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv",header=1,index_col=0,
    )train_df, test_df = train_test_split(credit_df,test_size=0.25,
    )
    
  3. 准备好数据进行训练:

    # Extracting the label column
    y_train = train_df.pop("default payment next month")# convert the dataframe values to array
    X_train = train_df.values# Extracting the label column
    y_test = test_df.pop("default payment next month")# convert the dataframe values to array
    X_test = test_df.values
    
  4. 添加代码以使用 MLflow 开始自动记录,以便可以跟踪指标和结果。 MLflow 具有模型开发的迭代性质,可帮助你记录模型参数和结果。 请回顾这些运行,比较并了解模型的性能。 这些日志还为你准备好从 Azure 机器学习中工作流的开发阶段转到训练阶段提供上下文。

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
    
  5. 训练模型。

    # Train Gradient Boosting Classifier
    print(f"Training with data of shape {X_train.shape}")mlflow.start_run()
    clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
    clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print(classification_report(y_test, y_pred))
    # Stop logging for this model
    mlflow.end_run()
    

注意

可以忽略 mlflow 警告。 你仍将获得需要跟踪的所有结果。

迭代

现在你已经有了模型结果,可能需要更改某些内容,然后重试。 例如,请尝试其他分类器技术:

# Train  AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifierprint(f"Training with data of shape {X_train.shape}")mlflow.start_run()
ada = AdaBoostClassifier()ada.fit(X_train, y_train)y_pred = ada.predict(X_test)print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()

注意
可以忽略 mlflow 警告。 你仍将获得需要跟踪的所有结果。

检查结果

现在,你已尝试两个不同的模型,请使用 MLflow 跟踪的结果来确定哪个模型更好。 可以引用准确性等指标,或者引用对方案最重要的其他指标。 可以通过查看 MLflow 创建的作业来更详细地了解这些结果。

  1. 在左侧导航栏中,选择“作业”。
    file

  2. 选择“在云上开发教程”的链接。

  3. 显示了两个不同的作业,每个已尝试的模型对应一个。 这些名称是自动生成的。 将鼠标悬停在某个名称上时,如果要重命名该名称,请使用名称旁边的铅笔工具。

  4. 选择第一个作业的链接。 名称显示在顶部。 还可以在此处使用铅笔工具重命名它。

  5. 该页显示作业的详细信息,例如属性、输出、标记和参数。 在“标记”下,你将看到 estimator_name,其描述模型的类型。

  6. 选择“指标”选项卡以查看 MLflow 记录的指标。 (预期结果会有所不同,因为训练集不同。)
    file

  7. 选择“图像”选项卡以查看 MLflow 生成的图像。
    file

  8. 返回并查看其他模型的指标和图像。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dataworks API:调取 MC 项目下所有表单

文章目录 前言Dataworks API 文档解读GetMetaDBTableList 接口文档 API 调试在线调试本地调试运行环境账密问题请求数据进一步处理 小结 前言 最近&#xff0c;我需要对公司的数据资产进行梳理&#xff0c;这其中便包括了Dataworks各个项目下的表单。这些表单&#xff0c;作为…

【CSS】伪类和伪元素

伪类 :hover&#xff1a;悬停active&#xff1a;激活focus&#xff1a;获取焦点:link&#xff1a;未访问&#xff08;链接&#xff09;:checked&#xff1a;勾选&#xff08;表单&#xff09;first-child&#xff1a;第一个子元素nth-child()&#xff1a;指定索引的子元素&…

『力扣刷题本』:移除链表元素

一、题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入&a…

MacOS系统电脑怎么彻底清理系统垃圾注册表App Cleaner可以深度清理吗

App Cleaner & Uninstaller 是一款适用于 Mac 操作系统的软件应用程序&#xff0c;允许用户轻松卸载不需要的应用程序、删除剩余文件和文件夹以及管理启动项。该应用程序会分析与您要删除的应用程序关联的文件&#xff0c;并帮助识别其所有组件&#xff0c;以便您可以一次将…

如何在Node.js中使用环境变量或命令行参数来设置HTTP爬虫ip?

首先&#xff0c;定义问题&#xff1a;在 Node.js 应用程序中&#xff0c;我们可以通过环境变量或命令行参数来设置HTTP爬虫ip&#xff0c;以便在发送请求时使用这些HTTP爬虫ip。 亲身经验&#xff1a;我曾经需要为一个项目设置HTTP爬虫ip&#xff0c;以便在发送请求时使用这些…

Controller接收Postman的raw参数时,属性值全部为空

Controller接收Postman的raw参数时&#xff0c;属性值全部为空 情景再现 在进行业务代码的编写过程中&#xff0c;使用Postman等工具调用Controller接口时&#xff0c;发现属性值全部为空后端代码如下&#xff1a; Requset对象为&#xff1a; public class QuerySkuRequest …

XMLHttpRequest拦截请求和响应

环境&#xff1a; angular 实现&#xff1a; 拦截请求 向请求信息增加字段 拦截响应 过滤返回值 响应拦截&#xff1a; 根据angular使用的XMLHttpRequest 将对原本的请求转移到另一个将监听返回事件挂载到另一个世纪发送请求的xml上 使用get set 将客户端获取的res…

kali搭建docker

kali搭建docker 更新kali源 sudo apt update出错 更新一下密钥 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6安装docker sudo apt install docker.io -y #安装docker docker -v #docker版本 sudo systemctl status docker #查看docker…

深入理解Java中的转义字符

最近在学习《两周自制脚本语言》这本书&#xff0c;在词法分析的一些复杂的正则中用到了大量的转义字符’\&#xff0c;比如正则字符串中包含了这个部分\\\\\"你知道它是匹配什么的么&#xff1f; 反斜杠在字符串和正则表达式中都有特殊作用。今天让我们来深入理解一下Ja…

自监督学习应用

1 自监督学习 自监督学习主要是利用辅助任务&#xff08;pretext&#xff09;从大规模的无监督数据中挖掘自身的监督信息&#xff0c;通过这种构造的监督信息对网络进行训练&#xff0c;从而可以学习到对下游任务有价值的表征。&#xff08;也就是说自监督学习的监督信息不是人…

Linux中shell的执行流控制

目录 一、for语句 1、for语句的基本格式 2、示例 二、条件语句 1、while…do语句 2、until…do语句 3、if …then语句 4、示例 三、case语句 四、expect应答语句 1、固定答案 2、将expect与bash环境结合 3、示例 五、终止语句 一、for语句 作用&#xff1a;为…

高可用系统架构——关于语雀宕机的思考

语雀系统崩溃了&#xff0c;并且经过8个多小时才恢复&#xff0c;估计语雀的小伙伴们已经哭晕在厕所里了。 本次稳定性故障再次给架构师敲响警钟&#xff1a;系统高可用一直是架构的重点&#xff0c;它涉及到系统的方方面面&#xff0c;并且是一件持续性的长期工作。 故障起因…

我们在 Linux 环境中用 C 编程时,如果对文件读写,Linux 会自动给文件加锁嘛?以及怎么加文件锁?

task1: 验证Linux不会自动给文件加锁 先说结论&#xff0c;结论是不会 我写了一个这样的程序 #include <stdio.h> #include <unistd.h>int main() {const char* pathname "your_file_pathname.txt";FILE* file NULL;int count 100;if(access(pathn…

数据可视化报表分享:区域管理驾驶舱

在零售数据分析中&#xff0c;区域管理驾驶舱报表是用来分析企业运营数据&#xff0c;以制定销售策略和提高利润。因此这张报表需要整合大量数据&#xff0c;数据整合、分析、指标计算的工作量极大&#xff0c;在讲究高效率、高度及时性的大数据时代&#xff0c;BI数据可视化分…

Linux--安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学

一&#xff0c;操作系统介绍 1.1.什么是操作系统 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;是一种系统软件&#xff0c;它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源&#xff0c;为应用程序提供接口和服务&#xff0c;并协调…

9、定义错误页

在layouts目录下新建error.vue&#xff0c;可以通过layout函数使用布局文件&#xff0c;通过props: [“error”]能拿到错误信息对象。 <template><div>{{ error.statusCode }}: {{ error.message }}</div> </template><script> export default {…

vue3 源码解析(2)— ref、toRef、toRefs、shallowRef 响应式的实现

前言 vue3 源码解析&#xff08;1&#xff09;— reactive 响应式实现 介绍完 reactive 之后还有另一个很重要的响应式API&#xff0c;其中包括 ref、toRef、toRefs 和 shallowRef。这些API在vue3中起着至关重要的作用&#xff0c;它们帮助我们更好地管理和跟踪响应式数据的变…

漏洞复现-dedecms文件上传(CVE-2019-8933)

dedecms文件上传_CVE-2019-8933 漏洞信息 Desdev DedeCMS 5.7SP2版本中存在安全漏洞CVE-2019-8933文件上传漏洞 描述 ​ Desdev DedeCMS&#xff08;织梦内容管理系统&#xff09;是中国卓卓网络&#xff08;Desdev&#xff09;公司的一套基于PHP的开源内容管理系统&#x…

【面试经典150 | 链表】合并两个有序链表

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 Tag 【递归】【迭代】【链表】 题目来源 21. 合并两个有序链表 题目解读 合并两个有序链表。 解题思路 一种朴素的想法是将两个链表中的值存入到数组中&#xff0c;然后对数组…

轻量级仿 Spring Boot=嵌入式 Tomcat+Spring MVC

啥&#xff1f;Spring Boot 不用&#xff1f;——对。就只是使用 Spring MVC Embedded Tomcat&#xff0c;而不用 Boot。为啥&#xff1f;——因为 Boot 太重了&#xff1a;&#xff09; 那是反智吗&#xff1f;Spring Boot 好好的就只是因为太重就不用&#xff1f;——稍安勿…