Optimize tensorflow_serving workflow
This commit is contained in:
		
							parent
							
								
									d19ff1a8be
								
							
						
					
					
						commit
						ed3641a66a
					
				
							
								
								
									
										41
									
								
								.github/workflows/build_and_push_ci_image.yml
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										41
									
								
								.github/workflows/build_and_push_ci_image.yml
									
									
									
									
										vendored
									
									
								
							| @ -11,7 +11,7 @@ on: | |||||||
|   workflow_dispatch: |   workflow_dispatch: | ||||||
|     inputs: |     inputs: | ||||||
|       image_name: |       image_name: | ||||||
|         description: 'image name (must choose from <grpc, gvisor_test, openvino, python>)' |         description: 'image name (must choose from <grpc, gvisor_test, openvino, python, tf_serving>)' | ||||||
|         required: true |         required: true | ||||||
|         default: 'grpc' |         default: 'grpc' | ||||||
|       tag: |       tag: | ||||||
| @ -175,3 +175,42 @@ jobs: | |||||||
|         build-args: OCCLUM_VERSION=${{ env.OCCLUM_VERSION }} |         build-args: OCCLUM_VERSION=${{ env.OCCLUM_VERSION }} | ||||||
|         push: true |         push: true | ||||||
|         tags: occlumbackup/occlum:${{ github.event.inputs.tag }}-ubuntu18.04-python |         tags: occlumbackup/occlum:${{ github.event.inputs.tag }}-ubuntu18.04-python | ||||||
|  | 
 | ||||||
|  |   Build_tf_serving_image: | ||||||
|  |     runs-on: ubuntu-18.04 | ||||||
|  |     if: github.event.inputs.image_name == 'tf_serving' | ||||||
|  | 
 | ||||||
|  |     steps: | ||||||
|  |     - name: Checkout code | ||||||
|  |       uses: actions/checkout@v2 | ||||||
|  | 
 | ||||||
|  |     - name: Get occlum version | ||||||
|  |       run: echo "OCCLUM_VERSION=$(grep 'Version =' src/pal/include/occlum_version.h | awk '{print $4}')" >> $GITHUB_ENV; | ||||||
|  | 
 | ||||||
|  |     # Because "Build and push" step `context` field can't be subdir, | ||||||
|  |     # we need to copy files needed by dockerfile to root dir of the project | ||||||
|  |     - name: Copy context for docker build | ||||||
|  |       run: | | ||||||
|  |         cp -r tools/docker . | ||||||
|  |          | ||||||
|  |     - name: Set up QEMU | ||||||
|  |       uses: docker/setup-qemu-action@v1 | ||||||
|  | 
 | ||||||
|  |     - name: Set up Docker Buildx | ||||||
|  |       uses: docker/setup-buildx-action@v1 | ||||||
|  | 
 | ||||||
|  |     - name: Login to DockerHub | ||||||
|  |       uses: docker/login-action@v1 | ||||||
|  |       with: | ||||||
|  |         username: ${{ secrets.DOCKER_USERNAME }} | ||||||
|  |         password: ${{ secrets.DOCKER_PASSWORD }} | ||||||
|  |      | ||||||
|  |     - name: Build and push | ||||||
|  |       uses: docker/build-push-action@v2 | ||||||
|  |       with: | ||||||
|  |         context: . | ||||||
|  |         file: ./tools/docker/ci/Dockerfile.tf_serving | ||||||
|  |         platforms: linux/amd64 | ||||||
|  |         build-args: OCCLUM_VERSION=${{ env.OCCLUM_VERSION }} | ||||||
|  |         push: true | ||||||
|  |         tags: occlumbackup/occlum:${{ github.event.inputs.tag }}-ubuntu18.04-tf_serving | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										17
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							| @ -692,23 +692,15 @@ jobs: | |||||||
|     - name: Run Bash test |     - name: Run Bash test | ||||||
|       run: docker exec bash_test bash -c "cd /root/occlum/demos/bash && SGX_MODE=SIM ./run_bash_demo.sh" |       run: docker exec bash_test bash -c "cd /root/occlum/demos/bash && SGX_MODE=SIM ./run_bash_demo.sh" | ||||||
| 
 | 
 | ||||||
|   Tensorflow_serving_test: |   # Tensorflow_serving requires binary tensorflow_serving PIC, here we compile tensorflow_model_server before workflow | ||||||
|  |   tensorflow_serving_test: | ||||||
|     runs-on: ubuntu-18.04 |     runs-on: ubuntu-18.04 | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v1 |     - uses: actions/checkout@v1 | ||||||
|       with: |       with: | ||||||
|         submodules: true |         submodules: true | ||||||
| 
 |  | ||||||
|     - name: Get occlum version |  | ||||||
|       run: echo "OCCLUM_VERSION=$(grep "Version =" src/pal/include/occlum_version.h |  awk '{print $4}')" >> $GITHUB_ENV |  | ||||||
| 
 |  | ||||||
|     - name: Compile the tensorflow_serving with PIC |  | ||||||
|       run: | |  | ||||||
|         cd $GITHUB_WORKSPACE/demos/tensorflow/tensorflow_serving; |  | ||||||
|         ./build_occlum_tf_serving.sh |  | ||||||
| 
 |  | ||||||
|     - name: Create container |     - name: Create container | ||||||
|       run: docker run -itd --name=tf_serving_test -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu18.04 |       run: docker run -itd --name=tf_serving_test -v $GITHUB_WORKSPACE:/root/occlum occlumbackup/occlum:latest-ubuntu18.04-tf_serving | ||||||
| 
 | 
 | ||||||
|     - name: Build dependencies |     - name: Build dependencies | ||||||
|       run: docker exec tf_serving_test bash -c "cd /root/occlum; make submodule" |       run: docker exec tf_serving_test bash -c "cd /root/occlum; make submodule" | ||||||
| @ -716,6 +708,9 @@ jobs: | |||||||
|     - name: Make install |     - name: Make install | ||||||
|       run: docker exec tf_serving_test bash -c "source /opt/intel/sgxsdk/environment; cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" |       run: docker exec tf_serving_test bash -c "source /opt/intel/sgxsdk/environment; cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" | ||||||
|      |      | ||||||
|  |     - name: Move tensorflow_model_server | ||||||
|  |       run: docker exec tf_serving_test bash -c "mv /root/tensorflow_model_server /root/occlum/demos/tensorflow/tensorflow_serving" | ||||||
|  | 
 | ||||||
|     - name: Set up environment |     - name: Set up environment | ||||||
|       run: docker exec tf_serving_test bash -c "cd /root/occlum/demos/tensorflow/tensorflow_serving; ./prepare_model_and_env.sh" |       run: docker exec tf_serving_test bash -c "cd /root/occlum/demos/tensorflow/tensorflow_serving; ./prepare_model_and_env.sh" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -26,8 +26,9 @@ This set of demos shows how real-world apps can be easily run inside SGX enclave | |||||||
| * [redis](redis/): A demo of [Redis](https://redis.io). | * [redis](redis/): A demo of [Redis](https://redis.io). | ||||||
| * [sofaboot](sofaboot/): A demo of [SOFABoot](https://github.com/sofastack/sofa-boot), an open source Java development framework based on Spring Boot. | * [sofaboot](sofaboot/): A demo of [SOFABoot](https://github.com/sofastack/sofa-boot), an open source Java development framework based on Spring Boot. | ||||||
| * [sqlite](sqlite/) A demo of [SQLite](https://www.sqlite.org) SQL database engine. | * [sqlite](sqlite/) A demo of [SQLite](https://www.sqlite.org) SQL database engine. | ||||||
| * [tensorflow](tensorflow/): A demo of [TensorFlow](https://www.tensorflow.org/) MNIST classification training. | * [tensorflow](tensorflow/tensorflow_training): A demo of [TensorFlow](https://www.tensorflow.org/) MNIST classification training. | ||||||
| * [tensorflow_lite](tensorflow_lite/): A demo and benchmark of [TensorFlow Lite](https://www.tensorflow.org/lite) inference engine. | * [tensorflow_lite](tensorflow_lite/): A demo and benchmark of [TensorFlow Lite](https://www.tensorflow.org/lite) inference engine. | ||||||
|  | * [tensorflow_serving](tensorflow/tensorflow_serving): A demo of [TensorFlow Serving](https://github.com/tensorflow/serving)  | ||||||
| * [vault](golang/vault/): A demo of [HashiCorp Vault](https://github.com/hashicorp/vault). | * [vault](golang/vault/): A demo of [HashiCorp Vault](https://github.com/hashicorp/vault). | ||||||
| * [xgboost](xgboost/): A demo of [XGBoost](https://xgboost.readthedocs.io/en/latest). | * [xgboost](xgboost/): A demo of [XGBoost](https://xgboost.readthedocs.io/en/latest). | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										40
									
								
								tools/docker/ci/Dockerfile.tf_serving
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										40
									
								
								tools/docker/ci/Dockerfile.tf_serving
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | |||||||
|  | ARG OCCLUM_VERSION | ||||||
|  | 
 | ||||||
|  | FROM tensorflow/serving:latest-devel as binary_build | ||||||
|  | WORKDIR /tensorflow-serving | ||||||
|  | # 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 -j 8 --color=yes --curses=yes \ | ||||||
|  |     ${TF_SERVING_BAZEL_OPTIONS} \ | ||||||
|  |     --verbose_failures \ | ||||||
|  |     --force_pic \ | ||||||
|  |     --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 -j 8 --color=yes --curses=yes \ | ||||||
|  |     ${TF_SERVING_BAZEL_OPTIONS} \ | ||||||
|  |     --force_pic \ | ||||||
|  |     --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 occlum/occlum:$OCCLUM_VERSION-ubuntu18.04 as base | ||||||
|  | LABEL maintainer="Zehuan Li <lizehuan.lzh@antgroup.com>" | ||||||
|  | 
 | ||||||
|  | WORKDIR /root | ||||||
|  | COPY --from=binary_build /usr/local/bin/tensorflow_model_server /root/tensorflow_model_server | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user