首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DJL无法找到MXNet引擎,故障排除无助于我

DJL无法找到MXNet引擎,故障排除无助于我
EN

Stack Overflow用户
提问于 2020-05-31 00:21:39
回答 1查看 1.4K关注 0票数 0

我现在花了太多的时间试图自己解决这个问题,但我似乎无法独自解决这个问题。我想试一试DJL,看看一些例子和教程,并对它感到非常兴奋,因为它似乎是一个非常现代、简单和通用的库。然而,我遇到了一个我无法解决的问题。

DJL建议在本教程中使用它的MXNet引擎作为默认引擎。它是通过maven依赖项ai.djl.mxnet:mxnet-engine:0.5.0包含的。在运行本教程中的示例代码时,我会遇到以下错误消息:

代码语言:javascript
复制
[main] WARN ai.djl.mxnet.engine.MxEngine - Failed to load MXNet native library
java.lang.UnsatisfiedLinkError: Unable to load library 'mxnet':
Das angegebene Modul wurde nicht gefunden.

Das angegebene Modul wurde nicht gefunden.

Das angegebene Modul wurde nicht gefunden.

Native library (win32-x86-64/mxnet.dll) not found in resource path (D:\dev\DJL Test\target\classes;D:\maven\repo\ai\djl\api\0.5.0\api-0.5.0.jar;D:\maven\repo\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;D:\maven\repo\org\apache\commons\commons-compress\1.20\commons-compress-1.20.jar;D:\maven\repo\ai\djl\basicdataset\0.5.0\basicdataset-0.5.0.jar;D:\maven\repo\ai\djl\model-zoo\0.5.0\model-zoo-0.5.0.jar;D:\maven\repo\ai\djl\mxnet\mxnet-engine\0.5.0\mxnet-engine-0.5.0.jar;D:\maven\repo\net\java\dev\jna\jna\5.3.0\jna-5.3.0.jar;D:\maven\repo\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;D:\maven\repo\org\slf4j\slf4j-simple\1.7.22\slf4j-simple-1.7.22.jar)
    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:302)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:455)
    at com.sun.jna.Library$Handler.<init>(Library.java:192)
    at com.sun.jna.Native.load(Native.java:596)
    at com.sun.jna.Native.load(Native.java:570)
    at ai.djl.mxnet.jna.LibUtils.loadLibrary(LibUtils.java:68)
    at ai.djl.mxnet.jna.JnaUtils.<clinit>(JnaUtils.java:69)
    at ai.djl.mxnet.engine.MxEngine.newInstance(MxEngine.java:45)
    at ai.djl.mxnet.engine.MxEngineProvider.<clinit>(MxEngineProvider.java:21)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:779)
    at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:721)
    at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1394)
    at ai.djl.engine.Engine.initEngine(Engine.java:45)
    at ai.djl.engine.Engine.<clinit>(Engine.java:40)
    at ai.djl.basicdataset.Mnist$Builder.<init>(Mnist.java:175)
    at ai.djl.basicdataset.Mnist.builder(Mnist.java:66)
    at Main.main(Main.java:28)
    Suppressed: java.lang.UnsatisfiedLinkError: Das angegebene Modul wurde nicht gefunden.

        at com.sun.jna.Native.open(Native Method)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:191)
        ... 20 more
    Suppressed: java.lang.UnsatisfiedLinkError: Das angegebene Modul wurde nicht gefunden.

        at com.sun.jna.Native.open(Native Method)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:204)
        ... 20 more
    Suppressed: java.lang.UnsatisfiedLinkError: Das angegebene Modul wurde nicht gefunden.

        at com.sun.jna.Native.open(Native Method)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:265)
        ... 20 more
    Suppressed: java.io.IOException: Native library (win32-x86-64/mxnet.dll) not found in resource path (D:\dev\DJL Test\target\classes;D:\maven\repo\ai\djl\api\0.5.0\api-0.5.0.jar;D:\maven\repo\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;D:\maven\repo\org\apache\commons\commons-compress\1.20\commons-compress-1.20.jar;D:\maven\repo\ai\djl\basicdataset\0.5.0\basicdataset-0.5.0.jar;D:\maven\repo\ai\djl\model-zoo\0.5.0\model-zoo-0.5.0.jar;D:\maven\repo\ai\djl\mxnet\mxnet-engine\0.5.0\mxnet-engine-0.5.0.jar;D:\maven\repo\net\java\dev\jna\jna\5.3.0\jna-5.3.0.jar;D:\maven\repo\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;D:\maven\repo\org\slf4j\slf4j-simple\1.7.22\slf4j-simple-1.7.22.jar)
        at com.sun.jna.Native.extractFromResourcePath(Native.java:1095)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:276)
        ... 20 more
Exception in thread "main" ai.djl.engine.EngineException: No deep learning engine found.
Please refer to https://github.com/awslabs/djl/blob/master/docs/development/troubleshooting.md for more details.
    at ai.djl.engine.Engine.getInstance(Engine.java:90)
    at ai.djl.basicdataset.Mnist$Builder.<init>(Mnist.java:175)
    at ai.djl.basicdataset.Mnist.builder(Mnist.java:66)
    at Main.main(Main.java:28)

(请原谅部分德语错误消息,我认为这是因为MXNet是通过JNA加载的,本机windows代码使用的是不同的区域设置。"Das angegebene Modul wurde nicht gefunden“意为”找不到指定的模块“)。现在我确实明白了这个错误想告诉我的是什么: DJL需要一个深入学习引擎,并且尝试使用JNA加载MXNet,但是找不到DLL。错误消息提供了一个链接到DJL的疑难解答文档,它应该解决我的问题。但即使有了这个帮手我也想不出来。以下是我考虑过/尝试过的步骤:

第1步:首先,故障排除告诉我,MXNet是由DJL自动下载/安装的:

默认情况下,DJL在MXNet引擎上运行。我们在CPU机器上使用mxnet,在GPU机器上使用mxnet-cu102mkl。mkl表示启用了Intel-MKLDNN。cu102意味着启用了Nvidia CUDA工具包10.2版。您不需要分别下载和安装MXNet。当您通过运行./gradlew build命令构建DJL项目时,它会自动完成。

现在我从来没有和gradle合作过,我总是使用maven。我没有运行这个命令,因为如果我将它复制到终端,它会告诉我.不是一个有效的命令。在IntelliJ中构建和运行项目时,是否自动执行IntelliJ?

步骤2:故障排除文件提供了一些关于“无深度学习引擎发现”异常的详细信息。但是我已经走过了所有的步骤,现在我更困惑了:

  1. 该依赖项在我的pom.xml中,并且在我的外部库中也被加载和可见。
  2. 我不能像疑难解答告诉我的那样解决"IntelliJ问题“。它提供了两种选择。第一个命令告诉我导航到references-> Build Execution Deployment -> Build Tools -> Gradle并将选项Build and running using:更改为Gradle。问题是这个选项没有出现,我也没有在其他地方找到它。第二个选项是“使用项目视图导航到MXNet引擎资源文件夹”。这让我感到困惑,因为我在哪里可以访问MXNet引擎资源文件夹?至少我可以告诉你,它不包含在我的maven下载的jar中,它应该在那里吗?

第3步:疑难解答文档告诉我,我可以选择在外部安装MXNet,这是非常复杂的。但是我这样做了,并将MXNET_LIBRARY_PATH环境变量设置为指定的。但我还是犯了同样的错误。

所以在这之后,我真的不知道如何处理这个问题,所以我发这个问题是为了让那些比我更精通这个问题的人给我一些提示。

谢谢!

系统和应用程序:

  • Windows 10专业版
  • Intel Core i5-7400 CPU,所以我安装了mkl和mkl版本的mxnet (mxnet-mkl)。
  • R9 380系列,所以我没有CUDA mxnet,可悲的是
  • mkl版本2020.1
  • MXNet版本1.5.0
  • Java 11 (OpenJDK 11)
  • Maven 3.6.3
  • DJL 0.5.0
  • JNA 5.3.0 (DJL所需)
  • Slf4J api 1.7.26 (DJL所需)
  • Slf4J Simple1.7.22(DJL所需)
  • IntelliJ IDEA终极2020.1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-31 05:42:49

您需要包含MXNet本机依赖项:参见示例项目的pom.xml文件:https://github.com/awslabs/djl/blob/master/examples/pom.xml#L64-L72

有关MXNet引擎依赖性的详细信息,请参阅:https://github.com/awslabs/djl/tree/master/mxnet/mxnet-engine#installation

对于Windows,您可以使用:gradlew build in如果您正在使用CMD,/in/mac约定,如果您在Windows上使用gitbash,则应该可以工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62110190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档