gpt4 book ai didi

java - 构建 Tensorflow Java Maven 依赖项以在内部 repo 中上传

转载 作者:行者123 更新时间:2023-11-30 10:16:42 25 4
gpt4 key购买 nike

我正在内部构建带有 CPU 优化(AVXx、SSE4.x 等)的 Tensorflow,因此我可以在 Java 微服务中使用它,到目前为止是成功的,但我必须手动复制文件。我想生成一个 Maven Artifact ,它将上传到我们的内部 Maven 存储库。我正在尝试编译这些脚本(ci_build)和文档(mavenjava)的一些内容,但我想知道是否有更少的 hack-ish 方式?到目前为止,能够构建 Maven 依赖项,仅包含 Java API jar:

git/tensorflow/tensorflow/java/maven$ mvn install:install-file \
-Dfile=../../../bazel-bin/tensorflow/java/libtensorflow.jar \
-DpomFile=../../../bazel-bin/tensorflow/java/pom.xml

题中的mvn命令是用bazel构建后执行的:bazel build -c opt//tensorflow/java:tensorflow//tensorflow/java:libtensorflow_jni

很遗憾 *.so 文件丢失了。我可以在执行 mvn install 之前手动将它们复制到 tensorflow/tensorflow/java/maven/...,但我不想这样做。 :)

最佳答案

从我的 Docker 镜像中提取用于构建 Tensorflow。构建 TF 后生成一个 Maven Artifact :

构建 Java API 的 jar 和 src jar 以及 native *.so 二进制文件的 tar 存档

    RUN bazel build -s -c opt $TF_GCC_FLAGS \
//tensorflow/java:libtensorflow.jar \
//tensorflow/java:libtensorflow-src.jar \
//tensorflow/tools/lib_package:libtensorflow_jni.tar.gz

WORKDIR /tf/tensorflow-${TENSORFLOW_VERSION}/tensorflow/java/maven

将二进制文件复制到 maven 文件夹,以便 Maven 可以构建 Artifact

ENV NATIVE_DIR="/tf/tensorflow-${TENSORFLOW_VERSION}/tensorflow/java/maven/libtensorflow_jni/src/main/resources/org/tensorflow/native/linux-x86_64"
RUN mkdir -p "${NATIVE_DIR}" && \
tar -zxvf ${TF_ROOT}/bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C ${NATIVE_DIR} && \
cd libtensorflow && \
jar -xvf ${TF_ROOT}/bazel-bin/tensorflow/java/libtensorflow-src.jar && \
rm -rf META-INF

似乎需要更新时间戳才能让 Maven 获取文件。

跳过二进制文件的 PGP 签名,因为我们没有 PGP key 。

RUN touch ${NATIVE_DIR}/* && \
mvn versions:set -DnewVersion="${TENSORFLOW_VERSION}-cpu-optimized" && \
mvn package -Dgpg.skip=true

CMD mvn install -Dgpg.skip=true

关于java - 构建 Tensorflow Java Maven 依赖项以在内部 repo 中上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49941039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com