Open horato opened 1 year ago
DJL doesn't support training on Android. You need build MXNet android binary for latest version. You can following this demo if you want to build MXNet 1.8.0 for android: https://github.com/deepjavalibrary/djl-demo/tree/master/android/mxnet-android
Doesn't seem to work even with the sample application.
dlopen failed: library "libdl.so.2" not found: needed by /data/data/ai.djl.examples.mxnet_android_template/files/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so in namespace classloader-namespace
I used the precompiled libmxnet.so for x86_64
Process: ai.djl.examples.mxnet_android_template, PID: 4523
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$4.done(AsyncTask.java:415)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Caused by: ai.djl.engine.EngineException: Failed to load MXNet native library
at ai.djl.mxnet.engine.MxEngine.newInstance(MxEngine.java:78)
at ai.djl.mxnet.engine.MxEngineProvider.getEngine(MxEngineProvider.java:40)
at ai.djl.engine.Engine.getEngine(Engine.java:186)
at ai.djl.Model.newInstance(Model.java:99)
at ai.djl.repository.zoo.BaseModelLoader.createModel(BaseModelLoader.java:189)
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:152)
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:168)
at ai.djl.repository.zoo.ModelZoo.loadModel(ModelZoo.java:141)
at ai.djl.examples.MainActivity$LoadModel.doInBackground(MainActivity.java:94)
at ai.djl.examples.MainActivity$LoadModel.doInBackground(MainActivity.java:76)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Caused by: java.lang.NoClassDefFoundError: ai.djl.mxnet.jna.JnaUtils
at ai.djl.mxnet.jna.JnaUtils.getAllOpNames(JnaUtils.java:90)
at ai.djl.mxnet.engine.MxEngine.newInstance(MxEngine.java:54)
at ai.djl.mxnet.engine.MxEngineProvider.getEngine(MxEngineProvider.java:40)
at ai.djl.engine.Engine.getEngine(Engine.java:186)
at ai.djl.Model.newInstance(Model.java:99)
at ai.djl.repository.zoo.BaseModelLoader.createModel(BaseModelLoader.java:189)
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:152)
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:168)
at ai.djl.repository.zoo.ModelZoo.loadModel(ModelZoo.java:141)
at ai.djl.examples.MainActivity$LoadModel.doInBackground(MainActivity.java:94)
at ai.djl.examples.MainActivity$LoadModel.doInBackground(MainActivity.java:76)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Caused by: java.lang.UnsatisfiedLinkError: Unable to load library '/data/user/0/ai.djl.examples.mxnet_android_template/files/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so':
dlopen failed: library "libdl.so.2" not found: needed by /data/data/ai.djl.examples.mxnet_android_template/files/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so in namespace classloader-namespace
dlopen failed: library "libdl.so.2" not found: needed by /data/data/ai.djl.examples.mxnet_android_template/files/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so in namespace classloader-namespace
Directory separator should not appear in library name: /data/user/0/ai.djl.examples.mxnet_android_template/files/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so
Native library (data/user/0/ai.djl.examples.mxnet_android_template/files/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so) not found in resource path (.)
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 ai.djl.mxnet.jna.LibUtils.loadLibrary(LibUtils.java:74)
at ai.djl.mxnet.jna.JnaUtils.<clinit>(JnaUtils.java:71)
at ai.djl.mxnet.jna.JnaUtils.getAllOpNames(JnaUtils.java:90)
at ai.djl.mxnet.engine.MxEngine.newInstance(MxEngine.java:54)
at ai.djl.mxnet.engine.MxEngineProvider.getEngine(MxEngineProvider.java:40)
at ai.djl.engine.Engine.getEngine(Engine.java:186)
at ai.djl.Model.newInstance(Model.java:99)
at ai.djl.repository.zoo.BaseModelLoader.createModel(BaseModelLoader.java:189)
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:152)
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:168)
at ai.djl.repository.zoo.ModelZoo.loadModel(ModelZoo.java:141)
at ai.djl.examples.MainActivity.onCreate(MainActivity.java:57)
at android.app.Activity.performCreate(Activity.java:8051)
at android.app.Activity.performCreate(Activity.java:8031)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)```
Currently we don't have a training framework setup on Android device, way too heavy to operate there. Just inference support. If you plan to run training, you could cross compile MXNet on ARM that meets your arch and use DJL to run training job
Hi, Is there any engine available that can process Q-Learning algo on android? PyTorch doesn't seem to work. Is MXNet a viable choice?
Thanks