- 
      
 - 
        
Save olegakbarov/4ff97c06065a913db8c5aa6d18af3ef1 to your computer and use it in GitHub Desktop.  
    Installing TensorFlow on EC2
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # This is mostly based on this excellent blog post: | |
| # http://tleyden.github.io/blog/2014/10/25/cuda-6-dot-5-on-aws-gpu-instance-running-ubuntu-14-dot-04/ | |
| # Install various packages | |
| sudo apt-get update | |
| sudo apt-get upgrade -y # choose “install package maintainers version” | |
| sudo apt-get install -y build-essential python-pip python-dev git python-numpy swig python-dev default-jdk zip zlib1g-dev | |
| # Blacklist Noveau which has some kind of conflict with the nvidia driver | |
| echo -e "blacklist nouveau\nblacklist lbm-nouveau\noptions nouveau modeset=0\nalias nouveau off\nalias lbm-nouveau off\n" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf | |
| echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf | |
| sudo update-initramfs -u | |
| sudo reboot # Reboot (annoying you have to do this in 2015!) | |
| # Some other annoying thing we have to do | |
| sudo apt-get install -y linux-image-extra-virtual | |
| sudo reboot # Not sure why this is needed | |
| # Install latest Linux headers | |
| sudo apt-get install -y linux-source linux-headers-`uname -r` | |
| # Install CUDA 7.0 | |
| wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run | |
| chmod +x cuda_7.0.28_linux.run | |
| ./cuda_7.0.28_linux.run -extract=`pwd`/nvidia_installers | |
| cd nvidia_installers | |
| sudo ./NVIDIA-Linux-x86_64-346.46.run | |
| sudo modprobe nvidia | |
| sudo ./cuda-linux64-rel-7.0.28-19326674.run | |
| cd | |
| # Install cudnn (YOU NEED TO SCP THIS ONE FROM SOMEWHERE ELSE) | |
| tar -xzf cudnn-6.5-linux-x64-v2.tgz | |
| sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64 | |
| sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include/ | |
| # At this point the root mount is getting a bit full | |
| sudo mkdir /mnt/tmp | |
| sudo chmod 777 /mnt/tmp | |
| sudo rm -rf /tmp | |
| sudo ln -s /mnt/tmp /tmp | |
| # Note that /mnt is not saved when building an AMI, so don't put anything crucial on it | |
| # Install Bazel | |
| cd /mnt/tmp | |
| git clone https://github.com/bazelbuild/bazel.git | |
| cd bazel | |
| git checkout tags/0.1.0 | |
| ./compile.sh | |
| sudo cp output/bazel /usr/bin | |
| # Install TensorFlow | |
| cd /mnt/tmp | |
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64" | |
| export CUDA_HOME=/usr/local/cuda | |
| git clone --recurse-submodules https://github.com/tensorflow/tensorflow | |
| cd tensorflow | |
| # Patch to support older K520 devices on AWS | |
| wget "https://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e/raw/5e01e5b2b1f7afd3def83810f8373fbcf6e47e02/cuda_30.patch" | |
| git apply cuda_30.patch | |
| ./configure | |
| bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer | |
| # Build Python package | |
| # Note: you ahve to specify --config=cuda here - this is not mentioned in the official docs | |
| # https://github.com/tensorflow/tensorflow/issues/25#issuecomment-156173717 | |
| bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package | |
| bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg | |
| sudo pip install /tmp/tensorflow_pkg/tensorflow-0.5.0-cp27-none-linux_x86_64.whl | |
| # Test it! | |
| cd tensorflow/models/image/cifar10/ | |
| python cifar10_multi_gpu_train.py | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment