“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境

1. TensorFlow.NET介绍

TensorFlow.NET (TF.NET) 是 SciSharp STACK 在这里插入图片描述开源社区团队的贡献,它为TensorFlow提供了.NET Standard binding,旨在以C#实现完整的Tensorflow API,允许.NET开发人员使用跨平台的.NET Standard框架开发、训练和部署机器学习模型。TF.NET的使命是打造一个完全属于.NET开发者自己的机器学习平台,特别对于C#开发人员来说,是一个“0”学习成本的机器学习平台,该平台集成了大量API和底层封装,力图使TensorFlow的Python代码风格和编程习惯可以无缝移植到.NET平台,下图是同样TF任务的Python实现和C#实现的语法相似度对比,从中读者基本可以略窥一二。

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第1张图片

SciSharp STACK的机器学习工具库和微软官方的库最大的区别是:里面所有库的语法都最大限度的按照python生态的习惯。有了SciSharp, 相当于有了typed-python (强类型python),这样做的目的,也是为了.NET开发者花最小的成本去学习并运用上机器学习。SciSharp STACK 目前包含几个流行项目: BotSharp(AI机器人平台框架),NumSharp(数值计算库),TensorFlow.NET (深度学习库),Pandas.NET (数据处理库),SharpCV(图形图像处理库),可以完全脱离Python环境使用,目前已经被微软ML.NET官方的底层算法集成,并被谷歌写入TensorFlow官网教程推荐给全球开发者。

  • SciSharp 产品结构

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第2张图片

  • 微软 ML.NET底层集成算法

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第3张图片

  • 谷歌官方推荐.NET开发者使用

    URL: https://www.tensorflow.org/versions/r2.0/api_docs

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第4张图片

2. “只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境

你是否踩过GPU环境部署中Cuda和cuDNN的坑,是否为如何进行深度学习GPU训练软件的移植和快速应用而烦恼,那么本文就是为了解决这些问题而制作的,一键部署GPU,最大化体现.NET优势,彻底解决GPU环境配置的繁琐问题,让你专注于深度学习算法和模型的开发

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第5张图片

本文主要适用于下述情况:

  • 一键部署深度学习训练软件,无需安装复制的Cuda、cuDNN和配置环境变量等;
  • 希望将GPU加速的训练软件整体打包、移植使用,软件安装绿色简便化;
  • GPU训练版本软件开发完交付客户,避免因客户PC配置差异导致的软件无法正常使用;
  • 简单地复制粘贴,即可一键完成GPU训练环境部署,确保GPU环境安装“0”差错;
  • 需要在一台机器上 同时 跑多个版本TF和多个版本Cuda的开发环境

原理说明:

利用.net的封装优势,将 tensorflow.dll、TensorFlow.NET.dll 及 NVIDIA GPU 相关必要的 DLL 全部提取,拷贝至应用程序相同目录下,伴随可执行文件打包、移植使用,实现 GPU 环境跟随主程序版本打包应用的效果。

下面开始进行实测说明:

第一步,NVIDIA GPU驱动安装

在NVIDIA官网下载最新的显卡驱动 [https://www.geforce.cn/drivers],例如我的GeForce RTX 2080,,操作系统请按照你自己的情况选择Windows 7 64-bit 或者 Windows10 64-bit。

注意事项:TensorFlow 2 需要的 CUDA 10.1 ,需要 NVIDIA® GPU 驱动程序 418.x 或更高版本。

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第6张图片

找到后点击下载:

在这里插入图片描述

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第7张图片

下载完成后,进行安装(这是RTX2080显卡对应的驱动程序,读者的硬件和驱动有可能不同):

在这里插入图片描述

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第8张图片

安装完成后,重启计算机:

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第9张图片

第二步,新建项目,安装和引用 TensorFlow.NET GPU

创建解决方案,通过 NuGet 安装 TF.NET GPU,安装指令如下:

Install-Package TensorFlow.NET

Install-Package SciSharp.TensorFlow.Redist-Windows-GPU

第三步,拷贝NVIDIA GPU加速的必要DLL至程序运行目录

主要是这一步,拷贝NVIDIA GPU加速的依赖的类库至程序运行目录下,读者的依赖类库可能略有差异,具体查询和下载的方法后面会单独介绍,本文使用的硬件(RTX2080)和系统环境(Win7 64bit)对应的7个依赖类库如下:

  • cublas64_100.dll
  • cudart64_100.dll
  • cudnn64_7.dll
  • cufft64_100.dll
  • curand64_100.dll
  • cusolver64_100.dll
  • cusparse64_100.dll

具体的文件明细如下:

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第10张图片

第四步,拷贝完成后即可进行GPU加速的深度学习代码开发

拷贝完成后即可直接进行GPU加速的TensorFlow深度学习代码的开发,开发完成的程序可以直接打包,转移至新的GPU环境的计算机中,直接进行GPU加速的TensorFlow.NET的模型训练(显卡驱动需要预先正确安装)。

完整的TensorFlow.NET带GPU环境的类库清单如下:

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第11张图片

附录:利用 Dependency Walker 软件查询 TF.NET 依赖的 GPU 类库

什么是 Dependency Walker ?Dependency Walker 是 Microsoft Visual C++ 中提供的非常有用的 PE 模块依赖性分析工具。主要功能如下:

  • 查看 PE 模块的导入模块;
  • 查看 PE 模块的导入和导出函数;
  • 动态剖析 PE 模块的模块依赖性;
  • 解析 C++ 函数名称;

本文主要利用 Dependency Walker 查看模块依赖性,通俗地讲,就是利用 Dependency Walker 软件找到 tensorflow.dll 这个核心库的GPU版本正常运行,所需要配套的那些必要的DLL文件

首先,我们打开 Dependency Walker 软件,将 tensorflow.dll 拖入主界面(或者点击手动载入文件),载入后,软件会自动分析并给出缺失的DLL文件清单,如下所示:

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第12张图片

然后,根据缺少的文件信息,直接从NVIDIA官网下载,或者从另一台已经配置完成GPU环境的PC中拷贝,拷贝路径同样可以利用 Dependency Walker 进行自动查询,方法同上,也是在已经配置完成GPU环境的PC上,将 tensorflow.dll 拖入 Dependency Walker 主界面,该软件会自动找到匹配的DLL文件的详细目录信息(读者的目录不一定相同,一般从程序运行目录或者环境变量PATH的目录中自动查找),如下所示:

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第13张图片

拷贝完成后,重新运行 Dependency Walker 软件,重复上述流程,即可发现所有DLL均已正常被引用,接下来,就可以愉快地专注于深度学习算法的开发和模型的搭建了,正常引用的DLL如下所示:

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第14张图片

以上,就是零基础部署GPU加速的TensorFlow.NET深度学习训练环境的全部过程,只需复制粘贴,即可完成GPU环境的安装,非常地简单便捷。

Contact

GitHub

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

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

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

Tencent TIM group

“只需复制粘贴” 零基础部署GPU加速的TensorFlow.NET深度学习训练环境_第15张图片

你可能感兴趣的:(.NET深度学习及前沿技术,tensorflow,c#,.net,深度学习)