本文最后更新于 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。
打包后的成品运行直接添加环境变量再运行即可,这里不再赘述。