baa88bede82a19f72f271c07bc243c2442983164
[platform/core/ml/nnfw.git] / compiler / one-cmds / one-prepare-venv
1 #!/bin/bash
2
3 # Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #    http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 set -e
18
19 DRIVER_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
20
21 VENV_ACTIVATE=${DRIVER_PATH}/venv/bin/activate
22 # NOTE please use venv's python instead of python after `source activation`.
23 # This script is called by debian maintainer script, i.e. `postinst`.
24 # Since debian maintainer script is called with sudo, `source activation` is ignored.
25 VENV_PYTHON=${DRIVER_PATH}/venv/bin/python
26
27 if [ ! -f ${VENV_ACTIVATE} ]; then
28   # Create python virtual enviornment
29   python3.8 -m venv "${DRIVER_PATH}/venv"
30 fi
31
32 # NOTE version
33 # - https://github.com/onnx/onnx/blob/master/docs/Versioning.md
34 # - https://github.com/onnx/onnx-tensorflow/blob/master/Versioning.md
35
36 VER_TENSORFLOW=2.8.0
37 VER_ONNX=1.11.0
38 VER_ONNXRUNTIME=1.11.0
39 VER_ONNX_TF=1.10.0
40 VER_PYDOT=1.4.2
41
42 # Install tensorflow
43
44 PIP_TRUSTED_HOST="--trusted-host pypi.org "
45 PIP_TRUSTED_HOST+="--trusted-host pypi.python.org "
46 PIP_TRUSTED_HOST+="--trusted-host files.pythonhosted.org "
47 PIP_TRUSTED_HOST+="--trusted-host download.pytorch.org "
48
49 PIP_TIMEOUT="--default-timeout=1000 "
50
51 PIP_OPTIONS="${PIP_TIMEOUT} ${PIP_TRUSTED_HOST}"
52
53 # NOTE $ONE_PREPVENV_PIP_OPTION is to provide additional PIP options
54 # such as ceritificate file behind firewall
55 # ex) ONE_PREPVENV_PIP_OPTION="--cert SomePrivateCetificate.crt" ./one-prepare-venv
56 if [[ ! -z "$ONE_PREPVENV_PIP_OPTION" ]]; then
57   PIP_OPTIONS+=" ${ONE_PREPVENV_PIP_OPTION} "
58 fi
59
60 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install --upgrade pip setuptools
61 if [ -n "${EXT_TENSORFLOW_WHL}" ]; then
62   ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install ${EXT_TENSORFLOW_WHL}
63 else
64   ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install tensorflow-cpu==${VER_TENSORFLOW}
65 fi
66 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install Pillow
67 # TODO remove version fix, https://github.com/Samsung/ONE/issues/9240
68 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install tensorflow_probability==0.16.0
69 # TODO remove version fix, https://github.com/Samsung/ONE/issues/10481
70 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install tensorflow_addons==0.16.1
71
72 # Install PyTorch and ONNX related
73 # NOTE set ONE_PREPVENV_TORCH_STABLE to override 'torch_stable.html' URL.
74 #      torch_stable.html points to download URL of torch wheel file(s)
75 #      but sometimes the server gets unstable, especially from in-house CI.
76 TORCH_STABLE_URL="https://download.pytorch.org/whl/torch_stable.html"
77 if [[ ! -z "$ONE_PREPVENV_TORCH_STABLE" ]]; then
78   TORCH_STABLE_URL="${ONE_PREPVENV_TORCH_STABLE}"
79 fi
80 # TODO remove torch message
81 echo "Torch from '${ONE_PREPVENV_TORCH_STABLE}' -> '${TORCH_STABLE_URL}'"
82 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install torch==1.11.0+cpu -f ${TORCH_STABLE_URL}
83
84 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install onnx==${VER_ONNX}
85
86 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install onnxruntime==${VER_ONNXRUNTIME}
87
88 # Provide install of custom onnx-tf
89 if [ -n "${EXT_ONNX_TF_WHL}" ]; then
90   ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install ${EXT_ONNX_TF_WHL}
91 else
92   ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install onnx-tf==${VER_ONNX_TF}
93 fi
94
95 # NOTE refer https://github.com/protocolbuffers/protobuf/issues/10051
96 # TODO remove this when issue is resolved
97 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install --upgrade protobuf==3.20.1
98
99 # Install pydot for visq
100 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install pydot==${VER_PYDOT}