简体   繁体   English

bazel构建tensorflow与本地下载的tensorflow一起使用

[英]bazel build tensorflow serving using with local downloaded tensorflow

the tensorflow serving build denpend on large tensorflow; 张量流服务构建依赖于大张量流; but i already build tensorflow successfully. 但我已经成功建立了tensorflow。 so i want to use it. 所以我想用它。 I do these things: I change the tensorflow serving WORKSPACE(org: https://github.com/tensorflow/serving/blob/master/WORKSPACE ) 我做这些事情:我更改了服务WORKSPACE的tensorflow(org: https : //github.com/tensorflow/serving/blob/master/WORKSPACE

workspace(name = "tf_serving")

# To update TensorFlow to a new revision.
# 1. Update the 'git_commit' args below to include the new git hash.
# 2. Get the sha256 hash of the archive with a command such as...
#    curl -L https://github.com/tensorflow/tensorflow/archive/<git hash>.tar.gz | sha256sum
#    and update the 'sha256' arg with the result.
# 3. Request the new archive to be mirrored on mirror.bazel.build for more
#    reliable downloads.
#load("//tensorflow_serving:repo.bzl", "tensorflow_http_archive")

#tensorflow_http_archive(
#    name = "org_tensorflow",
#    sha256 = "0f4b8375de30c54cc3233bc40e04742dab0ffe007acf8391651c6adb62be89f8",
#    git_commit = "2ea398b12ed18b6c51e09f363021c6aa306c5179",
#)

local_repository(
    name = "org_tensorflow",
    path = "/vagrant/tf/tensorflow/",
)


# TensorFlow depends on "io_bazel_rules_closure" so we need this here.
# Needs to be kept in sync with the same target in TensorFlow's WORKSPACE file.
http_archive(
    name = "io_bazel_rules_closure",
    sha256 = "a38539c5b5c358548e75b44141b4ab637bba7c4dc02b46b1f62a96d6433f56ae",
    strip_prefix = "rules_closure-dbb96841cc0a5fb2664c37822803b06dab20c7d1",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz",
        "https://github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz",  # 2018-04-13
    ],
)

# Please add all new TensorFlow Serving dependencies in workspace.bzl.
load("//tensorflow_serving:workspace.bzl", "tf_serving_workspace")

tf_serving_workspace()

# Specify the minimum required bazel version.
load("@org_tensorflow//tensorflow:version_check.bzl", "check_bazel_version_at_least")

check_bazel_version_at_least("0.15.0")

But I build with this command error: 但是我用以下命令错误构建:

[root@localhost serving]# tools/bazel_in_docker.sh bazel build --config=nativeopt tensorflow_serving/...
== Pulling docker image: tensorflow/serving:nightly-devel
Trying to pull repository docker.io/tensorflow/serving ...
nightly-devel: Pulling from docker.io/tensorflow/serving
Digest: sha256:f500ae4ab367cbabfd474487175bb357d73c01466a80c699db90ba3f0ba7b5a8
Status: Image is up to date for docker.io/tensorflow/serving:nightly-devel
== Running cmd: sh -c 'cd /root/serving; TEST_TMPDIR=.cache bazel build --config=nativeopt tensorflow_serving/...'
usermod: no changes
$TEST_TMPDIR defined: output root default is '/root/serving/.cache' and max_idle_secs default is '15'.
Starting local Bazel server and connecting to it...
.............
ERROR: error loading package '': Encountered error while reading extension file 'tensorflow/workspace.bzl': no such package '@org_tensorflow//tensorflow': /root/serving/.cache/_bazel_root/01a289b7faaf5ec651fb0e4e35f862a1/external/org_tensorflow must be an existing directory
ERROR: error loading package '': Encountered error while reading extension file 'tensorflow/workspace.bzl': no such package '@org_tensorflow//tensorflow': /root/serving/.cache/_bazel_root/01a289b7faaf5ec651fb0e4e35f862a1/external/org_tensorflow must be an existing directory
INFO: Elapsed time: 0.460s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)

what shoud id do buil serving with locally tensorflow successfully? buil如何成功地与本地tensorflow一起服务? thank you! 谢谢!

You should raise docker build ressource CPU and memory. 您应该提高docker build资源CPU和内存。 I did a 4 vcpu and 4 Gig ram upgrade to docker on my laptop and but you need to cap Bazzel C compiler to 2048 Meg memory with this option when building tensorflow serving image 我在笔记本电脑上将4 vcpu和4 Gig ram升级到docker,但是在构建tensorflow服务映像时需要使用此选项将Bazzel C编译器的最大内存限制为2048 Meg

https://www.tensorflow.org/serving/docker https://www.tensorflow.org/serving/docker

 docker build --pull --build-arg TF_SERVING_BUILD_OPTIONS="--copt=-mavx \\ --cxxopt=-D_GLIBCXX_USE_CXX11_ABI=0 --local_resources 2048,.5,1.0" -t \\ $USER/tensorflow-serving-devel -f Dockerfile.devel . 

Also need to upgrade version of Bazel to 20 for build to work. 还需要将Bazel的版本升级到20,才能进行构建。 in your docker file 在您的docker文件中

Set up Bazel augmenter version 20 pour compiler tensorflow 设置Bazel增强器版本20倾倒编译器TensorFlow

 Set up Bazel augmenter version 20 pour compiler tensorflow # Need >= 0.15.0 so bazel compiles work with docker bind mounts. ENV BAZEL_VERSION 0.20.0 WORKDIR / RUN mkdir /bazel && \\ cd /bazel && \\ curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \\ curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -o /bazel/LICENSE.txt https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE && \\ chmod +x bazel-*.sh && \\ ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \\ cd / && \\ rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh 

Here the whole docker file named dockerbuild.txt and the docker build command 这里是名为dockerbuild.txt的整个docker文件和docker build命令

docker build --pull --build-arg TF_SERVING_BUILD_OPTIONS="--copt=-mavx --cxxopt=-D_GLIBCXX_USE_CXX11_ABI=0 --local_resources 2048,.5,1.0" -f dockerbuild.txt . docker build --pull --build-arg TF_SERVING_BUILD_OPTIONS =“-copt = -mavx --cxxopt = -D_GLIBCXX_USE_CXX11_ABI = 0 --local_resources 2048,.5,1.0” -f dockerbuild.txt。

 # Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. FROM ubuntu:18.04 as base_build ARG TF_SERVING_VERSION_GIT_BRANCH=master ARG TF_SERVING_VERSION_GIT_COMMIT=head LABEL maintainer=gvasudevan@google.com LABEL tensorflow_serving_github_branchtag=${TF_SERVING_VERSION_GIT_BRANCH} LABEL tensorflow_serving_github_commit=${TF_SERVING_VERSION_GIT_COMMIT} RUN apt-get update && apt-get install -y --no-install-recommends \\ automake \\ build-essential \\ ca-certificates \\ curl \\ git \\ libcurl3-dev \\ libfreetype6-dev \\ libpng-dev \\ libtool \\ libzmq3-dev \\ mlocate \\ openjdk-8-jdk\\ openjdk-8-jre-headless \\ pkg-config \\ python-dev \\ software-properties-common \\ swig \\ unzip \\ wget \\ zip \\ zlib1g-dev \\ && \\ apt-get clean && \\ rm -rf /var/lib/apt/lists/* RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \\ python get-pip.py && \\ rm get-pip.py RUN pip --no-cache-dir install \\ grpcio \\ h5py \\ keras_applications \\ keras_preprocessing \\ mock \\ numpy \\ six \\ Pillow \\ matplotlib \\ opencv-python \\ pandas \\ requests # Set up Bazel augmenter version 20 pour compiler tensorflow # Need >= 0.15.0 so bazel compiles work with docker bind mounts. ENV BAZEL_VERSION 0.20.0 WORKDIR / RUN mkdir /bazel && \\ cd /bazel && \\ curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \\ curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -o /bazel/LICENSE.txt https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE && \\ chmod +x bazel-*.sh && \\ ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \\ cd / && \\ rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh # Download TF Serving sources (optionally at specific commit). WORKDIR /tensorflow-serving RUN git clone --branch=${TF_SERVING_VERSION_GIT_BRANCH} https://github.com/tensorflow/serving . && \\ git remote add upstream https://github.com/tensorflow/serving.git && \\ if [ "${TF_SERVING_VERSION_GIT_COMMIT}" != "head" ]; then git checkout ${TF_SERVING_VERSION_GIT_COMMIT} ; fi FROM base_build as binary_build # Build, and install TensorFlow Serving ARG TF_SERVING_BUILD_OPTIONS="--config=nativeopt" RUN echo "Building with build options: ${TF_SERVING_BUILD_OPTIONS}" ARG TF_SERVING_BAZEL_OPTIONS="" RUN echo "Building with Bazel options: ${TF_SERVING_BAZEL_OPTIONS}" RUN bazel build --color=yes --curses=yes \\ ${TF_SERVING_BAZEL_OPTIONS} \\ --verbose_failures \\ --output_filter=DONT_MATCH_ANYTHING \\ ${TF_SERVING_BUILD_OPTIONS} \\ tensorflow_serving/model_servers:tensorflow_model_server && \\ cp bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server \\ /usr/local/bin/ # Build and install TensorFlow Serving API RUN bazel build --color=yes --curses=yes \\ ${TF_SERVING_BAZEL_OPTIONS} \\ --verbose_failures \\ --output_filter=DONT_MATCH_ANYTHING \\ ${TF_SERVING_BUILD_OPTIONS} \\ tensorflow_serving/tools/pip_package:build_pip_package && \\ bazel-bin/tensorflow_serving/tools/pip_package/build_pip_package \\ /tmp/pip && \\ pip --no-cache-dir install --upgrade \\ /tmp/pip/tensorflow_serving_api-*.whl && \\ rm -rf /tmp/pip FROM binary_build as clean_build # Clean up Bazel cache when done. RUN bazel clean --expunge --color=yes && \\ rm -rf /root/.cache CMD ["/bin/bash"] 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM