网站广东海外建设集团有限公司,营销型网站建设设计6,成都自助建站软件,网站建设公司好哪家好前言#xff1a;本文对在Windows系统上进行LibTorch开发环境配置及相关问题解决做一个较为详细的记录#xff0c;以便后续查询使用。 使用环境版本#xff1a; Windows 11 Visual Studio 2022 CUDA 12.0 LibTorch 1.13.1_cu11.7 目录一、LibTorch简介二、LibTorch下载安装三…前言本文对在Windows系统上进行LibTorch开发环境配置及相关问题解决做一个较为详细的记录以便后续查询使用。 使用环境版本 Windows 11 Visual Studio 2022 CUDA 12.0 LibTorch 1.13.1_cu11.7 目录一、LibTorch简介二、LibTorch下载安装三、Vistual Studio环境配置四、示例程序五、Release模式或Debug模式只有一个能正常加载模型另一个模式报错一、LibTorch简介
在 Python 深度学习圈PyTorch 具有举足轻重的地位。同样的C 平台上的 LibTorch 作为 PyTorch 的纯 C 接口它遵循 PyTorch 的设计和架构旨在支持高性能、低延迟的 C 深度学习应用研究。本文基于 Windows 环境与 Visual Studio 2022 开发工具将从零开始搭建一个完整的深度学习LibTorch开发环境
二、LibTorch下载安装
安装LibTorch非常简单只需要从其官网选择相应的版本即可具体页面如下图所示。 如果需要加载PyTorch训练的模型文件安装的LibTorch需要和PyTorch的版本一致。CUDA版本最好选与本机一致的版本进行使用但是我的经验告诉我即使下载的版本和电脑安装的CUDA版本不一致但只要能兼容也可以使用。比如我下载的LIbTorch的CUDA版本是11.7但是电脑的CUDA版本是12.0也是可以正常使用的。最后将下载好的压缩包解压到本地合适位置。比如我的就解压在E:\dependency\libtorch-win-shared-with-deps-debug-1.13.1cu117\文件夹下。
三、Vistual Studio环境配置
首先在 Visual Studio 中创建一个名为 AIdemo的控制台项目。创建完成后将项目设置为 Release 模式x64 平台如下图。 在 Visual Studio 中右键点击项目AIdemo - Properties 项目属性在左侧导航栏中找到 VC Directories 选项。在右侧的Include Directories选项中将 LibTorch include 目录添加进去详细如下(我既添加了Release版又添加了Debug版)。
E:\dependency\libtorch-win-shared-with-deps-debug-1.13.1cu117\libtorch\include
E:\dependency\libtorch-win-shared-with-deps-debug-1.13.1cu117\libtorch\include\torch\csrc\api\include
E:\dependency\libtorch-win-shared-with-deps-1.13.1cu117\libtorch\include
E:\dependency\libtorch-win-shared-with-deps-1.13.1cu117\libtorch\include\torch\csrc\api\include在Library Directories选项中将LibTorch lib目录添加进去详细如下
E:\dependency\libtorch-win-shared-with-deps-debug-1.13.1cu117\libtorch\lib
E:\dependency\libtorch-win-shared-with-deps-1.13.1cu117\libtorch\lib具体如下图所示配置结果如下图注意检查窗口顶栏Configuration是否为All ConfigurationsPlatform是否为x64。 然后找到C/C±General-Additonal Include Directories选项在其中填入LibTorch Include详细如下
E:\dependency\libtorch-win-shared-with-deps-debug-1.13.1cu117\libtorch\include
E:\dependency\libtorch-win-shared-with-deps-debug-1.13.1cu117\libtorch\include\torch\csrc\api\include
E:\dependency\libtorch-win-shared-with-deps-1.13.1cu117\libtorch\include
E:\dependency\libtorch-win-shared-with-deps-1.13.1cu117\libtorch\include\torch\csrc\api\include最后找到Linker-Input-Additonal Dependencies选项在其中填入LibTorch lib路径下所有的*.lib文件的文件名详细如下。
asmjit.lib
c10.lib
c10d.lib
caffe2_nvrtc.lib
clog.lib
cpuinfo.lib
dnnl.lib
fbgemm.lib
fbjni.lib
gloo.lib
libprotobuf-lite.lib
libprotobuf.lib
libprotoc.lib
mkldnn.lib
pthreadpool.lib
pytorch_jni.lib
torch.lib
torch_cpu.lib
XNNPACK.lib以上lib文件需要自行查看LibTorch lib路径下是否具有此文件以上文件可能和LibTorch版本相关如果你使用的版本没有可以不用添加。正常到这一步你的环境已经搭建完成了但是有些可能会遇到LibTorch的CUDA不能使用的问题可以用如下命令查看是否有这种问题 //std::cout CUDA torch::cuda::is_available();//std::cout CUDNN: torch::cuda::cudnn_is_available() std::endl;//std::cout GPU(s): torch::cuda::device_count() std::endl;如果程序返回结果都为非0那证明CUDA以及CUDNN都是可用的自此环境已经搭建完成但是也有可能返回结果为0证明CUDA以及CUDNN都不可用。需要进行如下设置找到Linker-Command Line选项在其中填入如下命令
/INCLUDE:?ignore_this_library_placeholderYAHXZ 即可解决上述问题此命令适用于LibTorch1.13.1版本较早版本填入的命令可能不同。
四、示例程序
至此我们的开发环境已经搭建完成可以通过如下示例程序验证我们的配置是够正确
#include torch/torch.h
#include torch/script.hvoid main()
{std::cout 这是生成张量操作 std::endl;torch::Tensor output torch::randn({ 3,2 });std::cout output std::endl;std::cout CUDA torch::cuda::is_available() std::endl;std::cout CUDNN: torch::cuda::cudnn_is_available() std::endl;std::cout GPU(s): torch::cuda::device_count() std::endl;
}
如果显示如下结果则证明我们的环境配置成功可以进行开发工作了
五、Release模式或Debug模式只有一个能正常加载模型另一个模式报错
关于Debug模式可以正常加载模型Release模式加载错误问题的解决。在配置好环境之后Debug模式一切正常但是Release模式下加载模型失败。具体错误如下图所示
刚开始我以为是我配置属性表出了问题反复确认后没有找到问题。后来查找资料我发现由于我没有将libtorch的dll文件放到对应的exe生成目录里而是直接在环境变量里设置了dll的目录即lib的路径所以在环境变量中debug和release的lib路径顺序先后会影响debug模式或者release模式的运行比如debug环境变量放在前面debug模式就能运行release模式就不能读取模型了。 解决方案将lib文件夹下的所有dll文件分别复制粘贴到对应的输出目录里。(注意需要将Release版本的lib文件夹下的dll文件放在Release模式下的输出目录里Debug版本的lib文件夹下的dll文件同理。) 输出目录如下方式找到
项目右击-Properties-General-Output Directory路径如下图所示 PS:本人在实验中想探究一下是不是环境变量影响了Release模式下的运行结果于是将环境变量中的Release版本的lib路径移到Debug版本的前面。但是在Visual Studio 2022重新运行Release模式同样失败。嗯难道分析有误并不是重启Visual Studio即可由于之前打开Visual Studio时已经加载了之前的环境变量因此更改之后并没有对Visual Studio生效重新打开加载新的环境变量即可。 祝好运