OpenVINO™ Java API:让Java 开发者快速部署本地生成式AI
openlab_96bf3613
更新于 2天前
作者:黄明明 OpenVINO™社区开发专家
1.关于API
OpenVINO™ Java API,旨在推动 OpenVINO™在Java领域的应用。OpenVINO™ Java API 由于是基于 OpenVINO™ 开发,所支持的平台与OpenVINO™ 一致,具体信息可以参考 OpenVINO™。 目前,开发者需要自行下载该项目,将其源代码中的 src 文件夹**到自己的代码当中,以便更好地利用 OpenVINO™ Java API 所提供的丰富功能和强大特性,为 Java 开发领域注入新的活力和创新元素。

2.关于OpenVINO™ GenAI
OpenVINO™ GenAI基于OpenVINO™工具和运行时,提供C++/Python API,支持多种生成式AI模型,包括文本生成、图像生成、语音转录与翻译以及图像处理等。以下是OpenVINO™ GenAI支持的主要用例:
文本生成模型:文本摘要、重写、聊天机器人等。
图像生成模型:基于Diffuser架构。
Whisper-based语音转录与翻译。
视觉语言模型(VLMs):图像处理,如LLaVa等。

-
OpenVINO™ GenAI库https://mp.weixin.qq.com/s/1nwi3qJDqAkIXnrGQnP3Rg
-
OpenVINO™ 工具套件https://mp.weixin.qq.com/s/fORowUzzcPSVIO6AieoUKA
3.环境搭建
3.1 OpenVINO™ Java API 环境搭建
首先,你需要将项目代码从 GitHub 仓库克隆到本地环境。在终端中执行以下命令:
git clone https://github.com/Hmm466/OpenVINO-Java-API.git
使用 IDEA 打开并运行项目,克隆完成后,你可以使用 IntelliJ IDEA(以下简称 IDEA)专业版来打开该项目。具体步骤如下:
启动 IDEA,选择 File -> Open。
在弹出的文件选择对话框中,找到并选中刚才克隆下来的项目文件夹,点击 OK。
待 IDEA 完成项目的索引和加载后,你就可以运行项目了。一般而言,你可以通过点击 IDEA 工具栏上的运行按钮,或者使用快捷键(如 Shift + F10)来启动项目。
3.2 GenAI环境搭建
OpenVINO™ GenAI 支持通过 PyPI、Archive 归档包及 npm 发行版进行安装,适配 Linux、Windows 和 macOS 三大主流操作系统平台。针对 Linux 平台,PyPI 上的 GenAI、Tokenizers 及 OpenVINO™ 轮子包均经过编译优化,以适配更广泛的 Linux 发行版;而 Ubuntu 系统下的 C++ Archive 发行版则分别基于 _GLIBCXX_USE_CXX11_ABI=0 和 _GLIBCXX_USE_CXX11_ABI=1 两种应用二进制接口(ABI)编译。需要注意的是,不同 ABI 版本不可混合使用,否则会引发链接错误 —— 例如 C++ Archive 发行版中的 OpenVINO™ 库与 PyPI 渠道安装的 GenAI 组件搭配使用时,就可能因 ABI 不兼容导致此类问题。
如需获取适配的 Archive 版本库文件,可访问官方文档地址,根据自身操作系统及版本下载对应的归档包;下载完成后,将归档包解压至指定目录即可完成基础准备。若为 Linux 或 macOS 系统,需进一步参考 OpenVINO™ Java API 部署文档中的指引完成后续部署操作。
3.3 模型下载
由于Java API并不能调用模型下载的API,所以模型下载还是得通过HuggingFace Optimum进行模型下载。Optimum Intel 是 Transformers 和 Diffusers 库与 Intel 提供的各种工具和库之间的接口,用于加速 Intel 架构上的端到端流水线。
Optimum Intel 的众多用途之一是提供一个简单的接口来优化您的 Transformers 和 Diffusers 模型,将其转换为 OpenVINO™ 中间表示 (IR) 格式,并使用 OpenVINO™ Runtime 运行推理。optimum-cli 提供用于模型转换和优化的命令行界面。
通用命令格式:
optimum-cli export openvino --model <模型 ID 或路径> --task <任务> <输出目录>
其中,`task` 是要导出模型的任务。如果未指定,则将根据模型自动推断任务。您可以在 Optimum TaskManager 文档中找到任务和模型类之间的映射关系。此外,您可以使用 `--weight-format` 参数指定权重压缩格式,选项包括:fp32、fp16、int8 和 int4。对于 int8 和 int4 格式,权重压缩将使用 nncf 格式。有关模型导出的更多详细信息,请参阅 Optimum Intel 文档。
optimum-cli export openvino --model Qwen/Qwen2.5-VL-3B-Instruct Qwen2.5-VL-3B-Instruct/INT4 --weight-format int4 4.部署运行
//Dll 所在路径,Linux 或者 Mac 可以直接置空String libPath = null;OvGenAI ovGenAI = new OvGenAI(libPath);ovGenAI.init();//加载模型.模型需要通过optimum-cli 下载String modelPath = "qwen-7b-chat\\INT4_compressed_weights";ovGenAI.loadLLMModel(modelPath);ovGenAI.setTokens(1024);ovGenAI.setDevice("GPU");ovGenAI.setLLMCallback(new OvGenAILLMCallback() {@Overridepublic void generation(OvGenAIStatus ovGenAIStatus, String s) {print("Status:" + ovGenAIStatus + "," + s);}});print("output:" + ovGenAI.generation("什么是OpenVINO?",false));ovGenAI.releasePipeline();// ↑注意false 可以控制输出不从OvGenAILLMCallback 回调,直接返回,如果设置为True,则强制OvGenAILLMCallback返回,结果为NULL
5.效果展示
更多资源:
-
OpenVINO™:https://openvinotoolkit.github.io/
-
OpenVINO™-GenAI:https://openvinotoolkit.github.io/openvino.genai/
-
OpenVINO™ Java API:https://github.com/Hmm466/OpenVINO-Java-API
(注意:由于现在API设计还不完善,待完善后将推送到Github)
OpenVINO 小助手微信号: OpenVINO-China
如需咨询或交流相关信息,欢迎添加OpenVINO小助手微信,加入专属社群,与技术专家实时沟通互动。