1. ホーム
  2. テンソルフロー

使用Amazon AWS搭建GPU版tensorflow深度学习环境

2022-02-25 05:27:54

原文链接: http://ramhiser.com/2016/01/05/installing-tensorflow-on-an-aws-ec2-instance-with-gpu-support/

原文作者在第一段就说啦,如果想省事的话,直接用他的 AMI 就好啦~
使用AWS的好处是便宜,使用竞价性的价格每小时只要几毛钱,而且以后随时随地都可以跑程序啦~~

还不太明白的小伙伴可以参考youtube上的教程,自备梯子:
CSC321: Using TensorFlow on AWS


The following post describes how to install TensorFlow 0.6 on an Amazon EC2 Instance with GPU Support. I also created a Public AMI (ami-e191b38b) with the resulting setup. Feel free to use it.

UPDATED (28 Jan 2016) : The latest TensorFlow build requires Bazel 0.1.4. Post now reflects this. Thanks to Jim Simpson for his assistance.

UPDATED (28 Jan 2016) : The AMI provided now exports env variables in ~/.bashrc .

The following things are installed:

  • Essentials
  • Cuda Toolkit 7.0
  • cuDNN Toolkit 6.5
  • Bazel 0.1.4 (Java 8 is a dependency)
  • TensorFlow 0.6

To get going, I recommend requesting a spot instance. Can your instance go away? Sure. But 0.07 / h r i s m u c h n i c e r t h a n 0.65/hr when you are figuring things out. I launched a single g2.2xlarge instance using the Ubuntu Server 14.04 LTS AMI.

After launching your instance, install the essentials:

sudo apt-get update 


sudo apt-get upgrade

sudo apt-get install -y build-essential git python-pip libfreetype6-dev libxft-dev libncurses-dev libopenblas-dev gfortran python-matplotlib libblas-dev liblapack-dev libatlas-base-dev python-dev python-pydot linux-headers-generic linux-image-extra-virtual unzip python-numpy swig python-pandas python-sklearn unzip wget pkg-config zip g++ zlib1g-dev

sudo pip install -U pip

TensorFlow requires installing CUDA Toolkit 7.0. To do this, run:

wget 
http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1410/x86_64/cuda-repo-ubuntu1410_7.0-28_amd64.deb


sudo dpkg -i cuda-repo-ubuntu1410_7.0-28_amd64.deb

rm cuda-repo-ubuntu1410_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

At some point, you get the following message: Reboot your computer and verify that the NVIDIA graphics driver can be loaded. I mean, it’s 2016. But whatevs. We’ll reboot in a moment. Now, we need to download cuDNN from Nvidia’s site .

After filling out an annoying questionnaire, you’ll download a file named cudnn-6.5-linux-x64-v2.tgz . You need to transfer it to your EC2 instance: I did this by adding it to my Dropbox folder and using wget to upload it. Once you have uploaded it to your home directory, run the following:

tar -zxf cudnn-6.5-linux-x64-v2.tgz && rm cudnn-6.5-linux-x64-v2.tgz 


sudo cp -R cudnn-6.5-linux-x64-v2/lib* /usr/local/cuda/lib64/

sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include/

Okay, now reboot:

sudo reboot

Next up, we’ll add some environment variables. You may wish to add these to your ~/.bashrc .

export CUDA_HOME=/usr/local/cuda 


export CUDA_ROOT=/usr/local/cuda

export PATH=$PATH: $CUDA_ROOT /bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: $CUDA_ROOT /lib64

Getting closer. We need to install Bazel 0.1.4 For more details, see this comment .

Install Java 8 first.

sudo add-apt-repository -y ppa:webupd8team/java 


sudo apt-get update

# Hack to silently agree license agreement

echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections

echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections

sudo apt-get install -y oracle-java8-installer

Now for Bazel. (Thanks to Jim Simpson for this block.)

sudo apt-get install pkg-config zip g++ zlib1g-dev 


https://github.com/bazelbuild/bazel/releases/download/0.1.4/bazel-0.1.4-installer-linux-x86_64.sh

chmod +x bazel-0.1.4-installer-linux-x86_64.sh

. /bazel-0.1.4-installer-linux-x86_64.sh --user

rm bazel-0.1.4-installer-linux-x86_64.sh

さて、もう少しで完成です。TensorFlowのレポをクローンして、すべてのサブモジュールをデフォルトの設定で初期化しましょう。

git clone --recurse-submodules 
https://github.com/tensorflow/tensorflow


cd tensorflow

最後に、非公式設定によりCUDAバージョン3.0(現在AWSで必須)を使用してGPUサポートしたTensorFlowを構築します。

TF_UNOFFICIAL_SETTING=1 . /configure

次のようなメッセージが表示されたら、次のように入力します。 3.0 を使用すると、CUDAバージョン3.0を使用することができます。

Please specify a list of comma-separated Cuda compute capabilities you want to build with. 


You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus .

Please note that each additional compute capability significantly increases your build time and binary size.

[Default is: "3.5,5.2"]: 3.0

を入力し忘れた場合 3.0 というエラーになります。

<ブロッククオート

Cuda 計算能力 3.0 の gpu デバイス (デバイス: 0、名前: GRID K520、pci バス ID: 0000:00:03.0) は無視されました。最低限必要なCuda能力は3.5です。

それ以外はすべてデフォルトのオプションで行ったので、結果的に素敵なメッセージになりました。

警告: あなたはTensorFlowの非公式な設定を構成しています。いくつかの外部ライブラリは後方互換性がないため、これらの設定はほとんどテストされておらず、サポートされていません。

ププッ。とにかく、最後のステップ。これらはかなり時間がかかります(私の場合、〜24分)。

<図
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer 


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 --upgrade /tmp/tensorflow_pkg/tensorflow-0.6.0-cp27-none-linux_x86_64.whl

TensorFlowがインストールされました。この時点でPythonを起動して以下のコードを実行すると、GPUが正しくセットアップされていることを示す素敵なメッセージがたくさん表示されます。

<図
import tensorflow as tf 


tf_session = tf.Session()

x = tf.constant(1)

y = tf.constant(1)

tf_session.run(x + y)

を学習させることで、TensorFlowが動作していることを確認することもできます。 CNN を使用します。 MNISTデータセット .

python ~/tensorflow/tensorflow/models/image/mnist/convolutional.py

# 沢山の出力の後にGPU関連のものが続きます...
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:909] NUMA ノードに成功しました。 読む SysFS から負の値を取得した <スパン ( -1 <スパン ) しかし、少なくとも1つのNUMAノードが存在しなければならないので、NUMAノードゼロを返すこと
I tensorflow/core/common_runtime/gpu/gpu_init.cc:103]. プロパティを持つデバイス 0 が見つかりました。
name: GRID K520
major: 3 minor: 0 memoryClockRate ( GHz <スパン ) 0.797
pciBusID 0000:00:03.0
総メモリ量 4.00GiB
空きメモリ 3.95GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:127]. DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:137]. 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:702]. TensorFlowデバイスの作成 ( /gpu:0 <スパン ) -> ( device: 0, name: GRID K520, pci bus id: 0000:00:03.0 )
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:42]. 3.66GiB バイトを割り当てています。
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:52]. GPU 0 のメモリは 0x7023e0000 で始まり、0x7ec556000 まで拡張されます。
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:66]. 最大チャンクサイズ 1.0KiB のビンの作成
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:66]. 最大チャンクサイズ 2.0KiB のビンの作成
...
初期化されました
エポック 0.00
ミニバッチロス 12.053、学習率。0.010000

ミニバッチエラー:90.6
バリデーションエラー:84.6
エポック社 0.12
ミニバッチロス 3.282、学習率。0.010000
ミニバッチエラー 6.2%
バリデーションエラー 6.9%
エポック社 0.23
ミニバッチロス 3.466、学習率。0.010000
ミニバッチエラー 12.5%
バリデーションエラー 3.7%
エポック社 0.35
ミニバッチロス 3.191, 学習率: 0.010000
ミニバッチエラー 7.8%
バリデーションエラー 3.4%
エポック社 0.47
ミニバッチロス 3.201、学習率。0.010000
ミニバッチエラー 4.7%
バリデーションエラー:2.7
...

から手順を拝借しました。 a 少数 ソース 様々なオプションについて、より詳しい情報を知りたい方は TensorFlowのインストール手順 .