掘金 人工智能 07月01日
告别 CUDA!GPULlama3.java 横空出世,Java 首次实现原生 GPU 跑大模型
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

GPULlama3.java是首个支持GPU自动加速的Java原生Llama3实现,基于TornadoVM框架。该项目允许Java开发者无需编写CUDA或原生代码,即可在Java中实现LLM的GPU推理,从而改变Javaer构建AI应用的方式。TornadoVM扩展了OpenJDK和GraalVM,使Java程序能在GPU、FPGA以及多核CPU上加速运行。开发者可以使用与硬件无关的API,在不同硬件平台上运行相同的Java代码,TornadoVM负责底层的加速和优化。

💡 GPULlama3.java 核心在于TornadoVM框架,它扩展了OpenJDK和GraalVM,让Java程序能自动在GPU、FPGA以及多核CPU上加速运行。开发者无需手动编写CUDA或OpenCL代码,只需使用Java编写逻辑,TornadoVM负责底层加速。

⚙️ GPULlama3.java 支持多种后端,包括NVIDIA显卡(OpenCL和PTX)、Intel显卡(OpenCL)和Apple Silicon(OpenCL,未来将转向Metal)。通过命令行参数配置,可以灵活选择不同的硬件平台进行加速。

🔑 该项目依赖Java 21及以上版本,使用了Vector API和Foreign Memory API。同时,它支持GGUF模型格式和量化格式(Q4_0和Q8_0),以降低内存占用,方便模型打包与部署。

🚀 GPULlama3.java 是基于Alfonso Peterssen 的原始LLama3.java 实现开发的,并引入了TornadoVM GPU加速功能。它属于Java LLM项目的一员,其他相关项目包括JLama和Llama3.java,共同推动Java生态系统在AI/机器学习领域的发展。

本文已收录在Github关注我,紧跟本系列专栏文章,咱们下篇再续!

0 前言

曼彻斯特大学 Beehive Lab 发布 GPULlama3.java,这是首个支持 GPU 自动加速的 Java 原生 Llama3 实现。该项目基于 TornadoVM,让开发者无需编写 CUDA 或原生代码,即可在 Java 中实现LLM的 GPU 推理。这有望彻底改变 Javaer 在企业环境中构建 AI 应用的方式。

1 GPULlama3.java 的核心

TornadoVM —— 一款创新的异构编程框架,它扩展了 OpenJDK 和 GraalVM,使 Java 程序能自动在 GPU、FPGA 以及多核 CPU 加速运行。与传统 GPU 编程方式不同,TornadoVM 无需手动重写 CUDA 或 OpenCL 代码,开发者可完全用 Java 编写逻辑,TornadoVM 负责底层加速。

根据 TornadoVM 官方文档 的介绍,该系统通过扩展 Graal JIT 编译器,添加专用后端,在运行时将 Java 字节码转换为 GPU 可执行代码。只需用 @Parallel 注解标记方法,TornadoVM 就能将普通 Java 字节码转换为 Graal 中间表示(IR),应用 GPU 优化策略,并生成目标平台代码,如 OpenCL C(跨平台)、PTX(NVIDIA)或 SPIR-V(二进制格式,支持 Intel 显卡)。

// 来自 TornadoVM 文档的 TaskGraph 示例TaskGraph taskGraph = new TaskGraph("computation")    .transferToDevice(DataTransferMode.FIRST_EXECUTION, data)    .task("process", MyClass::compute, input, output)    .transferToHost(DataTransferMode.EVERY_EXECUTION, output);TornadoExecutionPlan executor = new TornadoExecutionPlan(taskGraph.snapshot());executor.execute();

根据 TornadoVM 编程指南,开发者可用与硬件无关的 API,在不同硬件平台上运行相同的 Java 代码。TornadoVM 运行时会自动处理所有设备相关的优化、内存管理和数据传输。

2 支持后端

GPULlama3.java 支持三种主要后端,可运行在多种硬件:

项目运行时可通过命令行参数配置:

# 使用 GPU 加速运行(项目 README 示例)./llama-tornado --gpu --verbose-init --opencl --model beehive-llama-3.2-1b-instruct-fp16.gguf --prompt "Explain the benefits of GPU acceleration."

该项目依赖 Java 的现代功能,具体包括:

GPULlama3.java 基于 Alfonso Peterssen 的原始 LLama3.java 实现 开发,并在此基础引入 TornadoVM GPU 加速功能。正如 Peterssen 在 Devoxx 2024 大会 展示,他的工作首次实现无需原生依赖即可运行 Llama 模型。TornadoVM 团队进一步将其适配为异构加速架构。

3 Java LLM 项目

GPULlama3.java 的发布也使其成为 Java LLM 项目的一员,其他相关项目还包括:

正如 Quarkus 官方博客关于 Java LLM 的文章 所指出的,Java 生态系统正不断拓展其 AI/机器学习能力,使开发者能够无需离开 Java 平台就能构建 LLM 驱动的应用程序。

TornadoVM 起源于曼彻斯特大学的研究项目,自 2013 年以来持续发展,目标是让 Java 开发者更容易使用异构计算。该框架目前仍在不断增加后端支持并进行性能优化。

4 当前进度

GPULlama3.java 目前处于测试阶段,团队正在持续优化性能并收集基准测试数据。由于 Apple 弃用 OpenCL,当前在 Apple Silicon 上的性能不佳,TornadoVM 团队正在开发 Metal 后端,以提升兼容性并优化 Transformer 操作。

5 总结

总的来说,GPULlama3.java 的发布标志着 Java 生态在 GPU 加速 LLM 推理方面迈出了重要一步。得益于 TornadoVM 的加持,Java 开发者无需跳出熟悉的开发环境,就能享受到 GPU 加速的强大计算能力。尽管目前仍在开发中,但该项目已展示出 Java 在 AI 应用中无限的可能性,特别是在对安全性、可扩展性与可维护性有高要求的企业级场景下。

对想要在 Java 中尝试 GPU 加速 LLM 推理的开发者而言,该项目已经 开源发布于 GitHub,并配有文档和示例,方便快速上手。

本文由博客一文多发平台 OpenWrite 发布!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

GPULlama3.java TornadoVM Java GPU加速
相关文章