mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:34:18 +08:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/16024 codemod with 'Yes to all': s/fwdproxy.any/fwdproxy/g in fbsource Reviewed By: maxgeorg Differential Revision: D13666336 fbshipit-source-id: a5a694d66efec5304a1c8c231d638441f88efe1d
155 lines
5.7 KiB
Bash
Executable File
155 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script helps developers set up the ONNX Caffe2 and PyTorch develop environment on devgpu.
|
|
# It creates an virtualenv instance, and installs all the dependencies in this environment.
|
|
# The script will creates a folder called onnx-dev folder under the $HOME directory.
|
|
# onnx, pytorch and caffe2 are installed seperately.
|
|
# Please source $HOME/onnx-dev/.onnx_env_init to initialize the development before starting developing.
|
|
|
|
|
|
# TODO: support python 3.
|
|
|
|
# Set script configuration
|
|
set -e
|
|
shopt -s expand_aliases
|
|
|
|
# Proxy setup
|
|
alias with_proxy="HTTPS_PROXY=http://fwdproxy:8080 HTTP_PROXY=http://fwdproxy:8080 FTP_PROXY=http://fwdproxy:8080 https_proxy=http://fwdproxy:8080 http_proxy=http://fwdproxy:8080 ftp_proxy=http://fwdproxy:8080 http_no_proxy='*.facebook.com|*.tfbnw.net|*.fb.com'"
|
|
|
|
# Set the variables
|
|
RED='\033[0;31m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m'
|
|
onnx_root="$HOME/local/onnx-dev" # I think hardcoding the onnx root dir is fine, just like fbsource
|
|
onnx_root_link="$HOME/onnx-dev"
|
|
venv="$onnx_root/onnxvenv"
|
|
onnx_init_file="$onnx_root_link/.onnx_env_init"
|
|
ccache_root="$onnx_root/ccache"
|
|
ccache_script="$(pwd)/ccache_install.sh"
|
|
sanity_script="$onnx_root/sanity.sh"
|
|
|
|
# Check whether default CUDA exists
|
|
# TODO check the required header and lib files
|
|
default_cuda="/usr/local/cuda"
|
|
if [[ ! -e "$default_cuda" ]]; then
|
|
echo "Default CUDA is not found at $default_cuda"
|
|
fi
|
|
|
|
# Checking to see if CuDNN is present, and install it if not exists
|
|
if [ -f /usr/local/cuda/include/cudnn.h ]; then
|
|
echo "CuDNN header already exists!!"
|
|
else
|
|
sudo cp -R /home/engshare/third-party2/cudnn/6.0.21/src/cuda/include/* /usr/local/cuda/include/
|
|
sudo cp -R /home/engshare/third-party2/cudnn/6.0.21/src/cuda/lib64/* /usr/local/cuda/lib64/
|
|
fi
|
|
|
|
# TODO set the specific version for each package
|
|
# Install the dependencies for Caffe2
|
|
sudo yum install python-virtualenv freetype-devel libpng-devel glog gflags protobuf protobuf-devel protobuf-compiler -y
|
|
rpm -q protobuf # check the version and if necessary update the value below
|
|
protoc --version # check protoc
|
|
protoc_path=$(which protoc)
|
|
if [[ "$protoc_path" != "/bin/protoc" ]]; then
|
|
echo "Warning: Non-default protoc is detected, the script may not work with non-default protobuf!!!"
|
|
echo "Please try to remove the protoc at $protoc_path and rerun this script."
|
|
exit 1
|
|
fi
|
|
|
|
# Upgrade Cmake to the right version (>3.0)
|
|
sudo yum remove cmake3 -y
|
|
sudo yum install cmake -y
|
|
|
|
# Install the dependencies for CCache
|
|
sudo yum install autoconf asciidoc -y
|
|
|
|
# Create the root folder
|
|
if [ -e "$onnx_root" ]; then
|
|
timestamp=$(date "+%Y.%m.%d-%H.%M.%S")
|
|
mv --backup=t -T "$onnx_root" "${onnx_root}.old.$timestamp"
|
|
fi
|
|
mkdir -p "$onnx_root"
|
|
if [ -e "$onnx_root_link"]; then
|
|
timestamp=$(date "+%Y.%m.%d-%H.%M.%S")
|
|
mv --backup=t -T "$onnx_root_link" "${onnx_root_link}.old.$timestamp"
|
|
fi
|
|
ln -s "$onnx_root" "$onnx_root_link"
|
|
|
|
# Set the name of virtualenv instance
|
|
with_proxy virtualenv "$venv"
|
|
|
|
# Creating a script that can be sourced in the future for the environmental variable
|
|
touch "$onnx_init_file"
|
|
{
|
|
# shellcheck disable=SC2016
|
|
echo 'if [ -z "$LD_LIBRARY_PATH" ]; then';
|
|
echo ' export LD_LIBRARY_PATH=/usr/local/cuda/lib64';
|
|
echo 'else'
|
|
# shellcheck disable=SC2016
|
|
echo ' export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH';
|
|
echo "fi"
|
|
# shellcheck disable=SC2016
|
|
echo 'export PATH='"$ccache_root"'/lib:/usr/local/cuda/bin:$PATH';
|
|
echo "source $venv/bin/activate";
|
|
echo 'alias with_proxy="HTTPS_PROXY=http://fwdproxy:8080 HTTP_PROXY=http://fwdproxy:8080 FTP_PROXY=http://fwdproxy:8080 https_proxy=http://fwdproxy:8080 http_proxy=http://fwdproxy:8080 ftp_proxy=http://fwdproxy:8080 http_no_proxy='"'"'*.facebook.com|*.tfbnw.net|*.fb.com'"'"'"'
|
|
} >> "$onnx_init_file"
|
|
chmod u+x "$onnx_init_file"
|
|
|
|
# Installing CCache
|
|
cd "$onnx_root"
|
|
if [ ! -f "$ccache_script" ]; then
|
|
ccache_script="$onnx_root/ccache_install.sh"
|
|
with_proxy wget https://raw.githubusercontent.com/pytorch/pytorch/master/scripts/fbcode-dev-setup/ccache_setup.sh -O "$ccache_script"
|
|
fi
|
|
chmod u+x "$ccache_script"
|
|
"$ccache_script" --path "$ccache_root"
|
|
|
|
# Test nvcc with CCache
|
|
own_ccache=true
|
|
if [ -f "$CUDA_NVCC_EXECUTABLE" ] && [[ "$ccache_root/cuda/nvcc" != "$CUDA_NVCC_EXECUTABLE" ]] && \
|
|
[[ "$CUDA_NVCC_EXECUTABLE" == *"ccache"* ]]; then # Heuristic rule
|
|
if $CUDA_NVCC_EXECUTABLE --version; then
|
|
own_ccache=false
|
|
fi
|
|
fi
|
|
if [ "$own_ccache" = true ]; then
|
|
echo "export CUDA_NVCC_EXECUTABLE=$ccache_root/cuda/nvcc" >> "$onnx_init_file"
|
|
fi
|
|
|
|
# Loading env vars
|
|
# shellcheck disable=SC1090
|
|
source "$onnx_init_file"
|
|
|
|
"$CUDA_NVCC_EXECUTABLE" --version
|
|
|
|
# Create a virtualenv, activate it, upgrade pip
|
|
if [ -f "$HOME/.pip/pip.conf" ]; then
|
|
echo "${RED}Warning: $HOME/.pip/pip.conf is detected, pip install may fail!${NC}"
|
|
fi
|
|
with_proxy python -m pip install -U pip setuptools
|
|
with_proxy python -m pip install future numpy "protobuf>3.2" pytest-runner pyyaml typing ipython
|
|
|
|
# Cloning repos
|
|
cd "$onnx_root"
|
|
with_proxy git clone https://github.com/onnx/onnx --recursive
|
|
with_proxy git clone https://github.com/pytorch/pytorch --recursive
|
|
|
|
# Build ONNX
|
|
cd "$onnx_root/onnx"
|
|
with_proxy python setup.py develop
|
|
|
|
# Build PyTorch and Caffe2
|
|
cd "$onnx_root/pytorch"
|
|
with_proxy pip install -r "requirements.txt"
|
|
with_proxy python setup.py build_deps develop
|
|
|
|
# Sanity checks and useful info
|
|
cd "$onnx_root"
|
|
with_proxy wget https://raw.githubusercontent.com/pytorch/pytorch/master/scripts/fbcode-dev-setup/onnx_c2_sanity_check.sh -O "$sanity_script"
|
|
chmod u+x "$sanity_script"
|
|
$sanity_script
|
|
|
|
echo "Congrats, you are ready to rock!!"
|
|
echo "################ Please run the following command before development ################"
|
|
echo -e "${CYAN}source $onnx_init_file${NC}"
|
|
echo "#####################################################################################"
|