写点什么

GPULlama3.java 发布,将 GPU 加速的 LLM 推理能力带到了 Java 平台

  • 2025-06-25
    北京
  • 本文字数:1319 字

    阅读完需:约 4 分钟

大小:1.94K时长:00:00
GPULlama3.java发布,将GPU加速的LLM推理能力带到了Java平台

曼彻斯特大学蜂巢实验室发布 GPULlama3.java,首个支持 GPU 加速的 Java 原生 Llama3 实现。该项目利用 TornadoVM,让开发者无需编写 CUDA 或原生代码即可实现 GPU 加速的大语言模型推理,这可能会彻底改变 Java 开发者在企业环境中开发 AI 应用的方式。


GPULlama3.java 的核心是 TornadoVM,一个创新的异构编程框架,扩展了 OpenJDK 和 GraalVM,能够自动将 Java 程序加速运行在 GPU、FPGA 和多核 CPU 上。与传统的 GPU 编程方法不同,传统方法要求开发者手动将代码重写为 CUDA 或 OpenCL 等低级语言,而 TornadoVM 能够在保持所有代码为纯 Java 的情况下实现 GPU 加速。


TornadoVM 的文档提到,该系统扩展了 Graal JIT 编译器,添加了专门的后端,这些后端在运行时将 Java 字节码转换为 GPU 兼容的代码。当使用注解(如 @Parallel)标记一个方法时,TornadoVM 的编译管道会将标准 Java 字节码通过 Graal 中间表示进行转换,应用 GPU 特定的优化,并生成特定的目标代码,无论是用于跨平台兼容的 OpenCL C、用于 NVIDIA GPU 的 PTX 汇编代码,还是用于 Intel 图形的 SPIR-V 二进制代码。


// TornadoVM Task-Graph API example from documentation
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 运行时会自动处理所有特定于设备的优化、内存管理和数据传输等问题。


从 GPULlama3.java 代码库可以看到,该项目支持三种主要后端,能够在不同硬件上执行:

  • NVIDIA GPU:通过 OpenCL 和 PTX 后端提供全面支持;

  • Intel GPU:包括 Arc 独立显卡和集成 HD Graphics,通过 OpenCL 后端提供支持;

  • Apple Silicon:通过 OpenCL 支持 M1/M2/M3(尽管 Apple 已经弃用了 OpenCL,转而支持 Metal)。


代码库指出,配置是通过命令行标志来处理的:

# Run with GPU acceleration (from project README)
./llama-tornado --gpu --verbose-init --opencl --model beehive-llama-3.2-1b-instruct-fp16.gguf --prompt "Explain the benefits of GPU acceleration."
复制代码


GPULlama3.java 实现利用了现代 Java 特性,如文档中所述:

  • 需要 Java 21+:支持 Vector API 和 Foreign Memory API;

  • 支持 GGUF 格式:用于单文件模型部署;

  • 支持量化:支持 Q4_0 和 Q8_0 格式,以减少对内存的需求。


该项目基于 Mukel 的原始 Llama3.java,通过集成 TornadoVM 添加了 GPU 加速功能。

GPULlama3.java 加入了其他 Java LLM 项目,包括:

  • JLama:一个具有分布式能力的现代 Java LLM 推理引擎;

  • Llama3.java:原始的纯 Java 实现,专注于 CPU 优化。


该项目是开源的,并且可以在 GitHub 上访问,它附带了文档和示例,对于有兴趣探索 Java GPU 加速 LLM 推理的开发者来说,这是一个不错的入门资源。


原文链接

https://www.infoq.com/news/2025/06/gpullama3-java-gpu-llm/

2025-06-25 11:008640

评论

发布
暂无评论

数据标注,优化模型辅助标注、Label 库管理|ModelWhale 版本更新

ModelWhale

云计算 编程 模型 数据标注 数据门户

华为阅读联手20余家头部内容平台,共建数字化阅读

最新动态

12秒内AI在手机上完成作画!谷歌提出扩散模型推理加速新方法

Openlab_cosmoplat

人工智能 机器学习 AI绘画

轻量级协作任务管理看板

顿顿顿

敏捷开发 任务管理 敏捷开发管理工具 看板工具 scrum工具

Go 语言中没有枚举类型,但是我们可以这样做

陈明勇

Go golang 枚举 Enum 三周年连更

Django笔记十八之save函数的继承操作和指定字段更新等实例方法

Hunter熊

Python django save auto_increment primary key

音视频八股文(7)-- 音频aac adts

福大大架构师每日一题

音视频 流媒体

在oracle apex中的Dialog的做法(第一部门):

back_wang

oracle dialog oracle ebs ebs

挑战 30 天学完 Python:Day13 列表推导式和Lambda

MegaQi

挑战30天学完Python 三周年连更

ChatGPT-4!又双叒叕写了一本量化交易的书(附下载)

量化投资与机器学习

机器学习 量化投资 ChatGPT4 对冲基金 Quant

ZincSearch 一款 Elasticsearch 的轻量级替代品

宇宙之一粟

Go 三周年连更 ZincSearch

iOS MachineLearning 系列(8)—— 图片热区分析

珲少

场景篇-ChatGPT帮我搭建博客网站并自动写博客!

码文

博客 ChatGPT

2022-04-27:用go语言重写ffmpeg的remuxing.c示例。

福大大架构师每日一题

golang ffmpeg

性能大PK count(*)、count(1)和count(列)

架构精进之路

MySQL 数据库 后端 innodb 三周年连更

NCCL源码解析③:机器内拓扑分析

OneFlow

如何在 Linux 中查看正在运行的进程?这三个命令轻松实现!

wljslmz

Linux 三周年连更

副业做得好,搞钱没烦恼:盘点那些靠谱的程序员副业!

禅道项目管理

程序员 副业 技术博客

人工智能训练数据集:误区、挑战与应对方法

数据堂

eBPF的发展演进---从石器时代到成为神(四)

统信软件

操作系统 Linux Kenel

龙蜥开发者说:亲历从基础设施构建到系统质量保障,龙蜥未来可期 | 第 19 期

OpenAnolis小助手

Linux 开源 sig 龙蜥开发者说 联通数科

《爱在黎明破晓前 | 我有话要说》

后台技术汇

三周年连更

Go的内存模型:如何保证并发读写的顺序性?

Jack

【源码分析】【seata】at 模式分布式事务 -xid隐式传递

如果晴天

源码分析 分布式事务 seata spring-cloud Seata框架

Apache Doris 1.2.4 Release 版本正式发布|版本通告

SelectDB

数据库 大数据 数据分析 Doris 联邦查询和分析

ChatGPT 在 Python WEB 的Prompt项目分享

码文

Python 开发 ChatGPT

和ChatGPT结对完成VS CODE插件项目分享

码文

vscode 插件 插件开发 ChatGPT

场景篇-ChatGPT帮我实现发送公众号推文

码文

微信公众号 代码生成 ChatGPT

2023 年要避免的 17 个致命的网站设计错误

海拥(haiyong.site)

三周年连更

中国厨房更净一步:一场科技“下凡”带来的方太式浪漫

脑极体

GPULlama3.java发布,将GPU加速的LLM推理能力带到了Java平台_编程语言_A N M Bazlur Rahman_InfoQ精选文章