ML.NET CPU环境下LibTorchSharp DLL加载失败问题求助
解决ML.NET文本分类中LibTorchSharp加载失败的问题
问题描述
执行ML.NET文本分类代码时触发以下异常:
System.DllNotFoundException: 'Unable to load DLL 'LibTorchSharp' or one of its dependencies: The specified procedure could not be found. (0x8007007F)'
当前项目引用的NuGet包:
<PackageReference Include="libtorch-cpu-win-x64" Version="2.4.0" /> <PackageReference Include="Microsoft.ML" Version="3.0.1" /> <PackageReference Include="Microsoft.ML.TorchSharp" Version="0.21.1" />
复现问题的最小控制台代码:
using Microsoft.ML; using Microsoft.ML.TorchSharp; namespace MLTest; class TestClass { public void MakeMLModel() { MLContext mlContext = new() { FallbackToCpu = true, GpuDeviceId = null }; var data = mlContext.Data.LoadFromEnumerable(GetData()); var pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label", "Category") .Append(mlContext.MulticlassClassification.Trainers.TextClassification(sentence1ColumnName: "Text")) .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel")); var model = pipeline.Fit(data); } private class DataObject { public string Category { get; set; } public string Text { get; set; } } private IEnumerable<DataObject> GetData() { for (var i = 0; i < 50; i++) { DataObject x = new() { Category = (i % 4).ToString(), Text = "abcdefghijklmnopqrstuvwxyz"[i%26].ToString() }; yield return x; } } }
解决步骤
1. 修正包版本兼容性
Microsoft.ML.TorchSharp与libtorch、TorchSharp存在严格版本绑定,手动指定libtorch-cpu-win-x64版本容易导致冲突。直接移除手动添加的libtorch-cpu-win-x64包,让Microsoft.ML.TorchSharp自动管理依赖组件,修改后的包引用:
<PackageReference Include="Microsoft.ML" Version="3.0.1" /> <PackageReference Include="Microsoft.ML.TorchSharp" Version="0.21.1" />
2. 统一项目平台目标
- 右键项目 → 属性 → 生成 → 目标平台选择
x64(libtorch仅支持64位环境,默认Any CPU可能引发加载失败) - 确保“首选32位”选项未勾选
3. 清理重建项目
- 删除项目目录下的
bin和obj文件夹 - 执行命令:
dotnet clean→dotnet restore→dotnet build - 重新运行项目
4. 安装系统依赖库
LibTorchSharp依赖Visual C++ Redistributable for Visual Studio 2019/2022(x64版本),如果系统未安装,下载对应版本运行时安装后重试。
5. 强制指定CPU运行
调整MLContext配置,显式强制使用CPU:
MLContext mlContext = new MLContext(); mlContext.GpuDeviceId = -1; // 强制禁用GPU,仅使用CPU
内容的提问来源于stack exchange,提问作者Thomas Coleman
相关产品推荐
相关产品推荐

