用于进程内 Triton Server API 的 Java 绑定#
Triton 推理服务器使用 Java CPP 创建围绕 Tritonserver 的绑定,以创建 Java API。
该 API 记录在 tritonserver.java 中。或者,用户可以参考从 tritonserver.java
生成的网络版本 API 文档。注意:目前,tritonserver.java
包含 进程内 C-API
的绑定和 C-API Wrapper
的绑定。有关 developer_tools/server C-API wrapper 的更多信息,请参阅 developer_tools 仓库。
一个使用 Java API 的简单示例可以在 Samples 文件夹中找到,其中包括类似于 simple.cc
的 Simple.java
。请参考 示例用法文档,了解如何构建和运行 Simple.java
。
在 QA 文件夹中,以 L0_java 开头的文件夹包含 Java API 测试。这些可以作为入门的有用参考,例如 ResNet50 测试。
Java API 设置说明#
要使用 Tritonserver Java API,您需要在您的环境中安装 Tritonserver 库和依赖项。有两种方法可以做到这一点
使用带有 Tritonserver docker 容器
.jar
Java 绑定到 C API(推荐)maven 并自行构建绑定
从您的环境中构建 Triton,无需 Docker(不推荐)
运行 Tritonserver 容器并安装依赖项#
要使用 Triton Java API 设置您的环境,请按照以下步骤操作
首先运行 Docker 容器
$ docker run -it --gpus=all -v ${pwd}:/workspace nvcr.io/nvidia/tritonserver:<your container version>-py3 bash
安装
jdk
$ apt update && apt install -y openjdk-11-jdk
安装
maven
(仅当您想自行构建绑定时)
$ cd /opt/tritonserver
$ wget https://archive.apache.org/dist/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
$ tar zxvf apache-maven-3.8.4-bin.tar.gz
$ export PATH=/opt/tritonserver/apache-maven-3.8.4/bin:$PATH
使用 Java 绑定 Jar 运行 Java 程序#
在确保 Tritonserver 和依赖项已安装后,您可以使用以下步骤使用 Java 绑定运行您的 Java 程序
将 Java 绑定放入您的环境。您可以通过以下两种方式执行此操作:
a. 使用提供的构建脚本构建 Java API 绑定
# Clone Triton client repo. Recommended client repo tag is: main $ git clone --single-branch --depth=1 -b <client repo tag> https://github.com/triton-inference-server/client.git clientrepo # Run build script ## For In-Process C-API Java Bindings $ source clientrepo/src/java-api-bindings/scripts/install_dependencies_and_build.sh ## For C-API Wrapper (Triton with C++ bindings) Java Bindings $ source clientrepo/src/java-api-bindings/scripts/install_dependencies_and_build.sh --enable-developer-tools-server
这会将 Java 绑定安装到
/workspace/install/java-api-bindings/tritonserver-java-bindings.jar
或
b. 从 Triton SDK 容器复制“Uber Jar”到您的环境
$ id=$(docker run -dit nvcr.io/nvidia/tritonserver:<triton container version>-py3-sdk bash) $ docker cp ${id}:/workspace/install/java-api-bindings/tritonserver-java-bindings.jar <Uber Jar directory>/tritonserver-java-bindings.jar $ docker stop ${id}
注意:
tritonserver-java-bindings.jar
仅包含进程内 Java Bindings
。要使用C-API Wrapper Java Bindings
,请使用构建脚本。使用包含 Java 绑定的已构建“Uber Jar”
$ java -cp <Uber Jar directory>/tritonserver-java-bindings.jar <your Java program>
构建 Java 绑定并使用 Maven 运行 Java 程序#
如果您想更改 Java 绑定,则可以使用 Maven 自行构建。您可以参考 使用 Java 绑定 Jar 运行 Java 程序 的第 1.a 部分,也可以自行构建 jar,而无需对 JavaCPP-presets 中的 Tritonserver 绑定进行任何修改。您可以使用以下步骤执行此操作
使用
javacpp-presets/tritonserver
在您的本地仓库 (/root/.m2/repository
) 中创建 JNI 二进制文件。对于 C-API Wrapper Java 绑定(带有 C++ 绑定的 Triton),您需要安装一些构建特定的依赖项,包括 cmake 和 rapidjson。有关您需要安装的依赖项以及您需要对容器进行的修改,请参阅 java 安装脚本。安装依赖项后,您可以在 javacpp-presets 上构建 tritonserver 项目
$ git clone https://github.com/bytedeco/javacpp-presets.git
$ cd javacpp-presets
$ mvn clean install --projects .,tritonserver
$ mvn clean install -f platform --projects ../tritonserver/platform -Djavacpp.platform=linux-x86_64
为 Maven 创建您的自定义
*.pom
文件。请参考 samples/simple/pom.xml 作为如何创建 pom 文件的参考。创建
pom.xml
文件后,您可以使用以下命令构建您的应用程序
$ mvn compile exec:java -Djavacpp.platform=linux-x86_64 -Dexec.args="<your input args>"