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

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

准备工作

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

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

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

一. 从数据采集与整理开始

这个与编程语言无关的内容,但是也是非常重要的内容,数据是最重要的部分。通过 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. 从本地上传数据

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

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

二. 训练

每个人会把数据训练看成非常重要的一环。在 .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. input:对应的是输入的数据,可以对应在 Azure ML 设定的数据,你可以选择文件夹和文件类型

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

  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 的扩展支持,这是必须的。具体你可以点击该地址 https://learn.microsoft.com/en-us/cli/azure/install-azure-cli 了解更多), 在本机环境中执行如下步骤

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

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

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

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

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

三. 模型测试

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

四. 模型部署

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

  1. 模型注册

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

选择你所需要的训练

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

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

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

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

2. 在 Endpoints 中生成服务

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

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

总结

你可以看到在 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 账号申请 Create Your Azure Free Account Today | Microsoft Azure
  2. 学生免费 Azure 账号申请 面向学生的 Azure - 免费帐户额度 | Microsoft Azure
  3. 了解 Azure ML What is Azure Machine Learning? - Azure Machine Learning | Microsoft Learn
  4. 安装 Azure CLI How to install the Azure CLI | Microsoft Learn
  5. 安装 Azure ML SDK v2 Install and set up the CLI (v2) - Azure Machine Learning | Microsoft Learn
  6. 了解 ML.NET ML.NET | Machine Learning made for .NET
  7. 了解 Tensorflow.NET GitHub - SciSharp/TensorFlow.NET: .NET Standard bindings for Google's TensorFlow for developing, training and deploying Machine Learning models in C# and F#.
  8. 学习 Tensorflow.NET 的相关案例 GitHub - SciSharp/SciSharp-Stack-Examples: Practical examples written in SciSharp's machine learning libraries

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

  1. CA周记 - 在 Azure ML 上用 .NET 跑机器学习

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. Azure ML 机器学习: 创建 Workspace 以及获得 Workspace 的多种方法

    Azure ML: 创建 Workspace 以及获得当前 Workspace 的多种方法 记录三种创建Azure Machine Learning Workspace的方法:Azure Portal ...

  9. 使用C# 探索 ML.NET 中的不同机器学习任务

    什么是 ML.NET? ML.NET 是 Microsoft 开源的针对 .NET 应用程序的 跨平台机器学习库,允许您使用 C#.F# 或任何其他 .NET 语言执行机器学习任务.此外,ML.NET ...

最新文章

  1. vs2017 +CUDA 9.0配置
  2. leetcode算法题--二叉树的锯齿型层次遍历
  3. android p新功能_android 11今天发布这是新功能
  4. linq php,C#开始使用 LINQ (上)
  5. 8. Python 数据类型
  6. springdata和mysql_Spring Boot使用Spring Data JPA访问MySQL数据库
  7. angularjs绑定属性_AngularJS隔离范围绑定表达式教程
  8. HTML - 调用腾讯 QQ 进行客服在线聊天(PC)
  9. 对象赋值-深拷贝-浅拷贝
  10. manjaro配置输入法
  11. 汇编:动态画出一棵七彩圣诞树
  12. 完美解决“未能装载Office文档控件。请使用Internet Explorer(6.0+)浏览器并检查浏览器的安全设置。”的方案
  13. 微泡排气除污装置有哪几种叫法吗?
  14. BetaFlight飞控AOCODARC-F7MINI固件编译
  15. Java比较日期时间大小
  16. 基于MaxCompute+开放搜索的电商、零售行业搜索开发实践
  17. pptp和l2tp有什么区别
  18. 5月编程排行榜出炉,最佳编程语言是谁?
  19. 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方法详解
  20. RS485/RS232/RS422接口定义

热门文章

  1. win10远程桌面连接凭据怎么设置_win10远程桌面怎么保存密码?win10让远程桌面记住密码的方法...
  2. 电脑的锁屏密码忘记了怎么办?
  3. 晚上不能入睡有什么办法改善?这些助眠好物你要知道
  4. 【驻油点】一辆重型卡车欲穿过1000公里的沙漠,卡车耗油为1升/公里,卡车总载油能力为500公升。显然卡车一次是过不了沙漠的。因此司机必须设法在沿途建立几个贮油点,使卡车能顺利穿越沙漠,试问司机如何建
  5. ECharts-中国省市地图
  6. 基于单片机的负离子空气净化系统设计
  7. Excel之用Sumifs完成多条件多列的求和
  8. ros执行catkin_make显示 /opt/ros/noetic/share/catkin/cmake/safe_execute_process.cmake:11 (message):`错误
  9. 外国小伙发现乌云是黑色的……
  10. Linux从头学09:x86 处理器如何进行-层层的内存保护?