.NET 是一个跨平台,全场景应用的开源技术。你有在用 .NET 做机器学习/深度学习的应用吗?如果从框架角度,ML.NET / Tensorflow.NET / 不断在进步的 TorchSharp 通过几年的发展已经开始稳定,但如果在一些大型项目上,特别现在与云端环境的对接上都是非常重要的,毕竟云端可以帮助机器学习每一步的流程进行优化,从数据管理,到训练,再到测试,以及部署都是非常重要的。

Azure ML 是非常优秀的机器学习/深度学习平台,涵盖整个机器学习/深度学习的所有流程。那这个时候有人会问 Azure ML 能跑传统的机器学习/深度学习项目都是基于 Python,但能否可以跑 .NET 的机器学习呢?是否可以让 .NET 的机器学习项目和云端结合在一起。今天我就来给大家展示一下,我是如何使用 .NET 结合 Azure ML 跑图像分类的。

0

准备工作

从 Azure Portal 上构建一个 Azure 机器学习服务环境,因为你需要用 GPU,所以区域记得选择 “West US2”

创建成功后,你可以进入相关资源组,并记录下刚才创建的 Resource Group 和 Azure ML Service Name

你可以通过点击 Studio Web URL 进入 Azure Machine Learning Studio

1

从数据采集与整理开始

这个与编程语言无关的内容,但是也是非常重要的内容,数据是最重要的部分。通过 Azure ML 你可以对数据进行管理,这就包括数据存储,版本管理,以及数据特征提取等工作。我们可以从 Azure ML 门户的数据选项上,进行不同数据的管理。

1.选择左菜单栏的 Assets ,选择 Data,选择 Data assets 进行添加

2. 创建数据,给名字和对应的格式,这里的数据你可以通过该链接 https://github.com/kinfey/HandsOnLab/tree/main/MLNetLab/tfnetcode/TF_DEEP_WIN_GPU_LearnDemo/image/flower_photos 进行下载

3. 从本地上传数据

4.上传成功后,你可以看到相关信息

记录下 Named asset URI 的名字,这里是 azureml:flower_data:1

2

训练

每个人会把数据训练看成非常重要的一环。在 .NET 中你可以选用 ML.NET 或者 TensorFlow.NET / TorchSharp 进行训练,从很多文档或者你只看到了 Python 的方式。我这里分享一下用 .NET 的方式。

首先你需要在 Azure ML 上构建你的算力,点击菜单 “Compute”,再选择“Compute clusters”。通过创建,选择 GPU 选择使用 K80 (如果你需要其他算力,可以自动申请)

构建完成后,我这里需要把代码进行调整,代码我这里使用了 Tensorflow.NET 的图像分类的示例,并作了一下调整,大家可以参考我的 GitHub 获取代码

https://github.com/kinfey/dotNETMLinAzureML

这里有几点需要注意的,因为在 Azure ML 上,所有计算的算力都是基于 Linux 和 GPU ,所以在加载 Tensorflow.NET 的库的时候请使用 Tensorflow.NET Linux 的 GPU 版本。大家可以参考下

<PackageReference Include="SciSharp.TensorFlow.Redist-Linux-GPU" Version="2.5.0" />
<PackageReference Include="TensorFlow.Keras" Version="0.7.0" />
<PackageReference Include="TensorFlow.NET" Version="0.70.1" />

我们需要让 .NET 在 Azure ML 上跑,我们需要有一个容器的环境结合算了一起跑。这就好比作,你需要一个 .NET 的运行环境然后加上算力。

在 Azure ML , 你可以通过本地配置 yaml 去设定相关的内容,包括需要执行的语句,也包括数据存储相关的路径,运行环境,以及所需要的算力等。如下所示

$schema:https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command:|FILENAME=libtensorflow-gpu-linux-x86_64-2.5.0.tar.gzwget -q --no-check-certificate https://storage.googleapis.com/tensorflow/libtensorflow/${FILENAME}tar -C /usr/local -xzf ${FILENAME}ldconfig /usr/local/libcd codedotnet restoredotnet builddotnet run --dataPath ${{inputs.data_dir}} --outputPath outputs
code:.
inputs:data_dir:type:uri_folderpath:azureml:flower_data:1
experiment_name:tf-image-training
environment: build:path:.dockerfile_path:Dockerfile
compute:azureml:GPUCluster

补充说明

  1. 1.input:对应的是输入的数据,可以对应在 Azure ML 设定的数据,你可以选择文件夹和文件类型

  2. 2.command: 对应的是你要执行的文件, 因为 Tensorflow.NET 需要 libtensorflow,你必须去做相关的下载,并在运行环境中设置好

  3. 3.environment: 环境依赖,你可以直接设定容器,但我更喜欢把环境设置在 Dockerfile 上,这样你可以随时添加所需要的支持,如 ML.NET CLI 环境或者是一些包等,以下是我的 Dockerfile

FROM mcr.microsoft.com/dotnet/sdk:6.0
RUN  apt install wget

4. compute:就是对应创建的算力

本地的 yaml 环境后,就可以在本地运行对应的脚本 (你必须安装 Azure CLI 环境,还有 Azure ML SDK v2 的扩展支持,这是必须的。具体你可以点击该地址了解更多), 在本机环境中执行如下步骤

az configure --defaults group=CUDAWSGroup workspace=CUDAWS
az ml job create --file AzureTrain.yml

5.experiment_name: 你可以给训练起一个名字,这个我觉得蛮好用的,可以针对不同的项目进行归类

如果执行顺利,你就可以直接通过 Azure ML 开启你的 .NET 机器学习/深度学习训练了,下图是通过点击 job 看到的每次训练的内容

你也可以点击某次训练了解更多

这个例子并不是完美的算法,但也足矣说明问题了,当然你可以通过程序设定看看调整算法来提升精确度

3

模型测试

你可以在程序中添加测试的样例去看结果,这个会在以后的内容中和大家再说说

4

模型部署

如果你对某次模型训练比较满意,你就可以选择把该次训练产生的模型注册,并部署到 endpoint,可以选择在本地用 yaml 完成,但有些小伙伴喜欢在 Azure 门户上用一些手动化操作也可以

1.模型注册

选择 Models , 并点击 Register ,选择 From a job input

选择你所需要的训练

你就可以从 outputs 文件夹中选取对应的模型,作为部署

部署成功后你就可以看到相关的模型信息

当然你也可以不在 Azure 上部署,可以在 Jobs 把模型下载下来给不同平台使用

2. 在 Endpoints 中生成服务

或者你需要在 Azure 上直接部署服务,这个时候你只需要点击 Endpoints 和对应服务关联就可以了。或者我更喜欢用 Azure Functions 来完成该步骤,这个日后再和大家说说了

Azure 上可以支持托管部署,和 Kubernetes 部署,这就看你需要什么方式

5

总结

你可以看到在 Azure ML 上,通过 .NET 把机器学习的整个流程都完成了。这也让各位 .NET 的开发人员和团队更有信心地采用 .NET 做机器学习/深度学习的项目。现在 .NET 机器学习不仅仅只是框架,也可以通过云端进行管理,是完整的解决方案。各位小伙伴请放胆使用。也希望有更多小伙伴来做更多有趣的机器学习应用。

最后和大家剧透一下 ,全球的 .NET Conf 2022 下周就开始了,我在 .NET Conf 2022 上,我会和大家谈谈全场景的 .NET 深度学习开发,具体时间北京时间 11 月 10 日 北京时间 13:30 - 14:00 ,大家一定不要错过!(虽然是英文,但希望更位小伙伴也能上线大家)。下周约定大家不见不散

还有我们 12 月 3 日 和 12 月 4 日 的 .NET Conf 2022 中国也会开始了,有更多小伙伴们熟悉的 .NET 大神 。大家也一定不要错过。

相关资源

1.免费 Azure 账号申请

https://azure.com/free

2.学生免费 Azure 账号申请

https://aka.ms/studentgetazure

3.了解 Azure ML

https://learn.microsoft.com/en-us/azure/machine-learning/overview-what-is-azuremachine-learning

4.安装 Azure CLI

https://learn.microsoft.com/en-us/cli/azure/install-azure-cli

5.安装 Azure ML SDK v2

https://learn.microsoft.com/en-us/azure/machine-learning/how-to-configurecli?tabs=public

6.了解 ML.NET

https://dotnet.microsoft.com/en-us/apps/machinelearning-ai/ml-dotnet

7.了解 Tensorflow.NET

https://github.com/SciSharp/TensorFlow.NET

8.学习 Tensorflow.NET 的相关案例

https://github.com/SciSharp/SciSharp-Stack-Examples

CA周记往期回顾:

更多原创文章与资源共享

请关注Kinfey Techtalk

CA周记 - 在 Azure ML 上用 .NET 跑机器学习相关推荐

  1. 在 Azure ML 上用 .NET 跑机器学习

    .NET 是一个跨平台,全场景应用的开源技术. 你有在用 .NET 做机器学习/深度学习的应用吗?如果从框架角度, ML.NET / Tensorflow.NET / 不断在进步的 TorchShar ...

  2. MLOps极致细节:15. Azure ML数据集的上传(Azure Workspace DataStore Upload)与注册(Azure Dataset Register)

    MLOps极致细节:15. Azure ML数据集的上传(Azure Workspace DataStore Upload)与注册(Azure Dataset Register) 这一章节中,我们将基 ...

  3. 如何使用Azure ML Studio开启机器学习

    文章讲的是如何使用Azure ML Studio开启机器学习,"机器学习是让计算机在不被明确编程的情况下运作的科学." --安德鲁·吴(Coursera) 机器学习正在迅速成为数据 ...

  4. azure机器学习_使用Azure ML Studio的Azure机器学习简介

    azure机器学习 介绍 (Introduction) Let us see how Azure ML studio can be used to create machine learning mo ...

  5. 在Azure ML中使用Logistic回归预测客户的贷款资格

    This article aims to provide the basics of creating Logistic Regression in Azure ML by designing a s ...

  6. MLOps极致细节:18. Azure ML Pipeline(机器学习管道),Azure Container Instances (ACI)部署模型

    MLOps极致细节:18. Azure ML Pipeline(机器学习管道),Azure Container Instances (ACI)部署模型 在之前的章节中,我们已经完成了数据预处理,机器学 ...

  7. MLOps极致细节:16. Azure ML Pipeline(机器学习管道),Azure Compute Instance搭建与使用

    MLOps极致细节:16. Azure ML Pipeline(机器学习管道),Azure Compute Instance搭建与使用 这篇博客与下篇博客,我们将介绍Azure ML Pipeline ...

  8. MLOps极致细节:17. Azure ML Pipeline(机器学习管道),模型训练,打包和注册

    MLOps极致细节:17. Azure ML Pipeline(机器学习管道),模型训练,打包和注册 这两个章节中,我们将介绍Azure ML Pipeline的使用,并且结合MLFlow一起跟踪ML ...

  9. 在 Azure 网站上使用 Memcached 改进 WordPress

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 和 Windows Azure 网站开发人员体验合作伙伴共同撰写. 您是否希望改善在 ...

最新文章

  1. 阿里技术人的成长路径是什么?
  2. 一文应用 AOP | 最全选型考量 + 边剖析经典开源库边实践,美滋滋
  3. .NET中的枚举(Enum)
  4. dedecms模版php,好织梦-专业dedecms模板,dede模板,织梦模板下载平台
  5. pixhawk篇之坐标系转化,相关转化矩阵知识,算法截取
  6. IIS服务器绑定域名问题
  7. UMEditor调整文本编辑器的组件位置的方法
  8. 黑科技DeepFake检测方法:利用心跳做信号,还能「揪出」造假模型
  9. 阅文集团副总裁傅徐军:最佳技术架构选型方法论
  10. python repair修复功能_详解Python修复遥感影像条带的两种方式
  11. apt-get 操作过程中提示无法解析域名“cn.archive.ubuntu.com” 的解决
  12. html无序列表文字换行,ppwjs之bootstrap文字排版:无序列表项不换行
  13. lammps教程:boundary命令详解
  14. 二三、A转置乘以A可逆
  15. 中国工程院院士李德毅:认知的三次革命,类脑的五条启发!
  16. Java邮件发送详解
  17. SQL基础(廿)--- 抑制重复
  18. 如何解决移动硬盘无法格式化?两招方法教会你
  19. 情人节这些智能设备可千万别送女友
  20. 【第二十四期】golang 一年经验开发 富途

热门文章

  1. Oracle Form 之 Compute Data
  2. 【Dubbo】Apache Dubbo 的毕业之旅
  3. 分享88个NET源码,总有一款适合您
  4. Android中直播视频技术探究之---基础知识大纲介绍
  5. 2022 届互联网大厂秋招时间
  6. 7-52 输出字符画:HAUT
  7. 『每周译Go』GitHub 为 Go 社区带来供应链安全功能
  8. 聚观早报 | 东方甄选与顺丰、京东合作;拼多多跨境电商平台上线
  9. ​LeetCode刷题实战216:组合总和 III
  10. php 许愿墙 阶段案例_PHP许愿墙系统