Skip to content

PyTorch DJL ARM 64 Error #3848

Description

@kshitijgarg2609

Using board = Khadas Vim3
OS = Armbian Latest (Debian Trixie)
Architecture = aarch64 (arm8)

Using PyTorch code for yolo11n from djl model zoo works in windows and linux with architecture amd64 but fails with aarch64

Code

package com.kgprojects.pretrained.ultralytics.yolo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.file.Paths;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.SystemUtils;

import ai.djl.Application;
import ai.djl.inference.Predictor;
import ai.djl.modality.cv.Image;
import ai.djl.modality.cv.ImageFactory;
import ai.djl.modality.cv.output.DetectedObjects;
import ai.djl.modality.cv.translator.YoloV8TranslatorFactory;
import ai.djl.repository.zoo.Criteria;
import ai.djl.repository.zoo.ZooModel;
import ai.djl.training.util.ProgressBar;

public class UltralyticsYoloModelDefault11
{
	public static void main(String[] args)throws Exception
	{
		Criteria<Image, DetectedObjects> criteria = Criteria.builder()
        .setTypes(Image.class, DetectedObjects.class)
        .optApplication(Application.CV.OBJECT_DETECTION)
        .optModelUrls("djl://ai.djl.pytorch/yolo11n")
        .optTranslatorFactory(new YoloV8TranslatorFactory())
        .optProgress(new ProgressBar())
        .build();
		ZooModel<Image, DetectedObjects> model = criteria.loadModel();
		Predictor<Image, DetectedObjects> predictor = model.newPredictor();
		File output = Paths.get(SystemUtils.USER_DIR, "output").toFile();
		for(File content : output.listFiles())
		{
			FileUtils.delete(content);
		}
		
		for(File imgFile : Paths.get(SystemUtils.USER_DIR, "input","yolo11objectdetection")
				.toFile().listFiles())
		{
			System.out.println(imgFile.getAbsolutePath());
			Image image = ImageFactory.getInstance().fromFile(imgFile.toPath());
			DetectedObjects result = predictor.predict(image);
			System.out.println(result);
			image.drawBoundingBoxes(result);
			OutputStream os = new FileOutputStream(new File(output,imgFile.getName()));
			image.save(os, "png");
			os.close();
		}
	}
}

output

SLF4J(W): No SLF4J providers were found.
SLF4J(W): Defaulting to no-operation (NOP) logger implementation
SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
Loading:     100% |████████████████████████████████████████|
[WARNING]
ai.djl.engine.EngineException: Failed to load PyTorch native library
    at ai.djl.pytorch.engine.PtEngine.newInstance (PtEngine.java:90)
    at ai.djl.pytorch.engine.PtEngineProvider.getEngine (PtEngineProvider.java:41)
    at ai.djl.engine.Engine.getEngine (Engine.java:195)
    at ai.djl.Model.newInstance (Model.java:99)
    at ai.djl.repository.zoo.BaseModelLoader.createModel (BaseModelLoader.java:218)
    at ai.djl.repository.zoo.BaseModelLoader.loadModel (BaseModelLoader.java:169)
    at ai.djl.repository.zoo.Criteria.loadModel (Criteria.java:151)
    at com.kgprojects.pretrained.ultralytics.yolo.UltralyticsYoloModelDefault11.main (UltralyticsYoloModelDefault11.java:32)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.mojo.exec.AbstractExecJavaBase.executeMainMethod (AbstractExecJavaBase.java:402)
    at org.codehaus.mojo.exec.ExecJavaMojo.executeMainMethod (ExecJavaMojo.java:142)
    at org.codehaus.mojo.exec.AbstractExecJavaBase.doExecClassLoader (AbstractExecJavaBase.java:377)
    at org.codehaus.mojo.exec.AbstractExecJavaBase.lambda$execute$0 (AbstractExecJavaBase.java:287)
    at java.lang.Thread.run (Thread.java:1583)
Caused by: java.lang.UnsatisfiedLinkError: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so)
    at jdk.internal.loader.NativeLibraries.load (Native Method)
    at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open (NativeLibraries.java:331)
    at jdk.internal.loader.NativeLibraries.loadLibrary (NativeLibraries.java:197)
    at jdk.internal.loader.NativeLibraries.loadLibrary (NativeLibraries.java:139)
    at java.lang.ClassLoader.loadLibrary (ClassLoader.java:2418)
    at java.lang.Runtime.load0 (Runtime.java:852)
    at java.lang.System.load (System.java:2025)
    at ai.djl.pytorch.jni.LibUtils.loadNativeLibrary (LibUtils.java:380)
    at ai.djl.pytorch.jni.LibUtils.loadLibrary (LibUtils.java:86)
    at ai.djl.pytorch.engine.PtEngine.newInstance (PtEngine.java:53)
    at ai.djl.pytorch.engine.PtEngineProvider.getEngine (PtEngineProvider.java:41)
    at ai.djl.engine.Engine.getEngine (Engine.java:195)
    at ai.djl.Model.newInstance (Model.java:99)
    at ai.djl.repository.zoo.BaseModelLoader.createModel (BaseModelLoader.java:218)
    at ai.djl.repository.zoo.BaseModelLoader.loadModel (BaseModelLoader.java:169)
    at ai.djl.repository.zoo.Criteria.loadModel (Criteria.java:151)
    at com.kgprojects.pretrained.ultralytics.yolo.UltralyticsYoloModelDefault11.main (UltralyticsYoloModelDefault11.java:32)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.mojo.exec.AbstractExecJavaBase.executeMainMethod (AbstractExecJavaBase.java:402)
    at org.codehaus.mojo.exec.ExecJavaMojo.executeMainMethod (ExecJavaMojo.java:142)
    at org.codehaus.mojo.exec.AbstractExecJavaBase.doExecClassLoader (AbstractExecJavaBase.java:377)
    at org.codehaus.mojo.exec.AbstractExecJavaBase.lambda$execute$0 (AbstractExecJavaBase.java:287)
    at java.lang.Thread.run (Thread.java:1583)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.575 s
[INFO] Finished at: 2026-03-28T02:11:51+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.6.3:java (default-cli) on project deep-learning-java: An exception occurred while executing the Java class. Failed to load PyTorch native library: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
root@khadas-vim3:/installed/lab/deep-learning-java#

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions