TornadoVM 2.0 提供 Java 自动 GPU 加速和 LLM 支持

来源: InfoQ - 架构

原文

TornadoVM项目最近达到了2.0版本,这是这个开源项目的一个重要里程碑,该项目旨在为Java提供异构硬件运行时。这个版本可能会特别吸引在JVM上开发LLM解决方案的团队。

该项目可以自动加速多核CPU、GPU和FPGA上的Java程序。它不替换现有的JVM,而是增加了将Java代码卸载到后端的能力,处理Java和硬件加速器之间的内存管理,并运行计算内核。这种能力为现代云和机器学习工作负载提供了一个关键组件。

InfoQ之前在2020年和2022年报道过这个项目。

TornadoVM在运行时编译Java字节码(作为JIT编译器)到三种后端之一:OpenCL C、NVIDIA CUDA PTX和SPIR-V二进制。开发者可以根据他们的特定系统选择安装和运行哪些后端。

请注意,并非所有类型的Java计算都适合卸载到TornadoVM。例如,具有For循环且迭代之间没有依赖关系的工作负载是非常好的候选,因为它们允许并行计算。

特别是,基于矩阵的应用程序,如机器学习和深度学习是很好的候选。这种模式的其他好例子包括物理模拟(例如,N体粒子计算)、金融应用如Black-Scholes,以及计算机视觉、计算摄影、自然语言处理和信号处理等领域的一系列应用。

TornadoVM提供了两种互补的方式来表达并行性:循环并行API,它使用Java注解,如 @Parallel和@Reduce 来并行化循环,以及内核API,它使用 KernelContext 进行显式的GPU风格编程(带有线程ID、局部内存、可用的屏障等概念),类似于CUDA/OpenCL/SYCL。

循环并行API可以像添加类型注释一样简单:

public static void vectorMul(FloatArray a, FloatArray b, FloatArray result) {     for (@Parallel int i = 0; i < result.getSize(); i++) {         result.set(i, a.get(i) * b.get(i));     } }

而内核上下文风格显式地将 TaskGraph 构建为Java对象,如下所示:

var taskGraph = new TaskGraph("multiply")       .transferToDevice(DataTransferMode.FIRST_EXECUTION, a, b)       .task("vectorMul", Example::vectorMul, a, b, result)       .transferToHost(DataTransferMode.EVERY_EXECUTION, result);  var snapshot = taskGraph.snapshot(); new TornadoExecutionPlan(snapshot).execute();

团队还提供了一个完整的LLM推理库,它是用纯Java构建的,提供GPU上的LLM推理,全部用Java编写,没有外部依赖。

刚刚发布的GPULlama3.java v0.3.0版本带来了显著的性能和可用性提升。

在NVIDIA GPU上性能提升了约30%(每秒令牌数)

优化了FP16和Q8内核生成。

由于新的TornadoVM SDKs,设置更简单——无需复杂的GPU配置。

支持NVIDIA PTX、OpenCL,并支持早期的Apple Silicon。

增强了Quarkus支持

LangChain4j集成

GPULlama3.java目前支持几种FP16(16位浮点)和8位量化模型,参数范围在十亿以内:

Llama 3.2 (1B) – FP16

Llama 3.2 (3B) – FP16

Llama 3 (8B) – FP16

Mistral (7B) – FP16

Qwen3 (0.6B) – FP16

Qwen3 (1.7B) – FP16

Qwen3 (4B) – FP16

Qwen3 (8B) – FP16

Phi-3-mini-4k – FP16

Qwen2.5 (0.5B)

Qwen2.5 (1.5B)

DeepSeek-R1-Distill-Qwen (1.5B)

根据所选择的模型,将构建与相关模型体系结构相对应的不同的执行计划。

该项目由Beehive实验室领导,该实验室是曼彻斯特大学高级处理器技术组的一部分,专门从事硬件/软件解决方案的协同设计。

该团队还开发了TornadoInsight,这是一个IntelliJ IDEA插件,它增强了开发者在使用TornadoVM时的体验。

未来的路线图工作包括使TornadoVM在SDKman上可用,并将代码库中的JNI组件迁移到使用新的FFM API。

原文链接:

https://www.infoq.com/news/2025/12/tornadovm-20-gpu-llm/