build_trtis.sh 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. ##
  3. # Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved.
  4. #
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions are met:
  7. # # Redistributions of source code must retain the above copyright
  8. # notice, this list of conditions and the following disclaimer.
  9. # # Redistributions in binary form must reproduce the above copyright
  10. # notice, this list of conditions and the following disclaimer in the
  11. # documentation and/or other materials provided with the distribution.
  12. # # Neither the name of the NVIDIA CORPORATION nor the
  13. # names of its contributors may be used to endorse or promote products
  14. # derived from this software without specific prior written permission.
  15. #
  16. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  17. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  18. # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  19. # DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY
  20. # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  21. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  22. # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  23. # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  24. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  25. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26. #
  27. NVIDIA_VISIBLE_DEVICES="${NVIDIA_VISIBLE_DEVICES:-all}"
  28. IMAGE_NAME="trt-tacotron2-waveglow.trtis"
  29. CONTAINER_NAME="trt-tacotron2-waveglow.trtis.container"
  30. die() {
  31. echo "ERROR: ${@}" 1>&2
  32. exit 1
  33. }
  34. if [[ $# != 4 && $# != 3 ]]; then
  35. echo "Unexpected number of arguments: $#"
  36. echo "USAGE:"
  37. echo "\t${0} <tacotron2 model> <waveglow model> <denoiser model> [use amp 0/1]"
  38. exit 1
  39. fi
  40. # remove container if it exists
  41. if [[ "$(docker ps -f "name=${CONTAINER_NAME}" -qa | wc -l)" != "0" ]]; then
  42. docker rm "${CONTAINER_NAME}"
  43. fi
  44. TACOTRON2_MODEL="${1}"
  45. WAVEGLOW_MODEL="${2}"
  46. DENOISER_MODEL="${3}"
  47. AMP="${4:-1}"
  48. # copy models to build context
  49. mkdir -p tmp/
  50. cp -v "${TACOTRON2_MODEL}" tmp/tacotron2.json && TACOTRON2_MODEL="tmp/tacotron2.json" || die "Failed to copy ${TACOTRON2_MODEL}"
  51. cp -v "${WAVEGLOW_MODEL}" tmp/waveglow.onnx && WAVEGLOW_MODEL="tmp/waveglow.onnx" || die "Failed to copy ${WAVEGLOW_MODEL}"
  52. cp -v "${DENOISER_MODEL}" tmp/denoiser.json && DENOISER_MODEL="tmp/denoiser.json" || die "Failed to copy ${DENOISER_MODEL}"
  53. docker build \
  54. --build-arg TACOTRON2_MODEL="${TACOTRON2_MODEL}" \
  55. --build-arg WAVEGLOW_MODEL="${WAVEGLOW_MODEL}" \
  56. --build-arg DENOISER_MODEL="${DENOISER_MODEL}" \
  57. -f Dockerfile.trtis . -t "${IMAGE_NAME}" || die "Failed to build docker container."
  58. nvidia-docker run \
  59. -e "NVIDIA_VISIBLE_DEVICES=${NVIDIA_VISIBLE_DEVICES}" \
  60. --name "${CONTAINER_NAME}" \
  61. "${IMAGE_NAME}" "./scripts/build_engines.sh" "${AMP}" || die "Failed to build engines."
  62. docker commit "${CONTAINER_NAME}" "${IMAGE_NAME}" || die "Failed commit changes."
  63. docker rm "${CONTAINER_NAME}"