在阿里 PPU 环境中使用 onnxruntime-gpu 的 Java 库
本文最后更新于 109 天前,其中的信息可能已经有所发展或是发生改变。

核心思路就是利用环境变量让 Java 应用加载 pixi 中安装的 onnxruntime 的 so。

使用 pixi 配置阿里 PPU 环境请参阅 https://sgpublic.xyz/archives/2026/04/p593/

我这里项目使用的是 Gradle,在项目根目录的 build.gradle.kts 中添加如下内容:

subprojects {
    val pixiEnvs = File(rootDir, "torrenkt-tslm-model/.pixi/envs")
    if (!pixiEnvs.exists()) {
        logger.error("please run 'pixi install' in ./torrenkt-tslm-model")
        return@subprojects
    }
    val env = when (providers.gradleProperty("torch.gpu.env").getOrElse("cpu")) {
        "ppu" -> "ppu"
        "cuda" -> "default"
        else -> "cpu"
    }
    val path = File(pixiEnvs, "$env/bin").canonicalPath
    val libs = File(pixiEnvs, "$env/lib").canonicalPath
    val onnxruntime = File(libs, "./python3.12/site-packages/onnxruntime/capi").canonicalPath // 注意 python 版本换成你实际使用的版本
    tasks.withType
<JavaExec>().configureEach {
        environment("PATH", "$path:${environment["PATH"]}")
        environment("LD_LIBRARY_PATH", "$libs:$onnxruntime:${environment["LD_LIBRARY_PATH"]}")
    }
}

然后在 ~/.gradle/gradle.properties 中添加内容:

torch.gpu.env=ppu

这样不仅能让 ppu 环境使用 python 包提供的 onnxruntime.so,其他环境也能加载 pixi 中的 cuda-toolkit

打包后的成品运行直接添加环境变量再运行即可,这里不再赘述。

上一篇
下一篇