首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pytorch java加载异常

Pytorch java加载异常
EN

Stack Overflow用户
提问于 2021-12-09 20:36:47
回答 1查看 305关注 0票数 0

我在独立部署模式下运行一个Flink作业,该作业使用Java来加载pytorch模型。模型成功加载,我可以通过Flink Rest取消作业。但是,当我再次启动flink作业的时候,它会抛出,

代码语言:javascript
复制
UnsatisfiedLink Error:<pytorch>.so already loaded in another classloader

它需要重新启动独立部署才能再次加载。是否可以在关闭作业请求的同时关闭进程,以便在不重新启动的情况下再次加载?

EN

回答 1

Stack Overflow用户

发布于 2021-12-17 18:23:38

每个JVM只能加载一次本机库。在DJL中,当初始化Engine类时,将加载pytorch本机库,如果本机库已经加载到另一个类加载器中,则引擎类将无法初始化。

解决方法之一是在系统ClassLoader中加载可由子类加载器共享的本机库。DJL允许注入一个NativeHelper类来加载本机库,您需要确保您的NativeHelper位于系统类路径中:

代码语言:javascript
复制
System.setProperty("ai.djl.pytorch.native_helper", "org.examples.MyNativeHelper");

您可以找到NativeHelper 这里的测试代码。

有关更多细节,请参见此链接

MyNativeHelper类中,只需添加以下内容:

代码语言:javascript
复制
    public static void load(String path) {
        System.load(path);
    }

在运行时,DJL将调用load(String path)函数在ClassLoader中加载本机库。

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

https://stackoverflow.com/questions/70296408

复制
相关文章

相似问题

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