使用Amazon AWS搭建GPU版tensorflow深度学习环境
原文链接: 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:
TensorFlow requires installing CUDA Toolkit 7.0. To do this, run:
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:
Okay, now reboot:
Next up, we’ll add some environment variables. You may wish to add these to your
~/.bashrc
.
Getting closer. We need to install Bazel 0.1.4 For more details, see this comment .
Install Java 8 first.
Now for Bazel. (Thanks to Jim Simpson for this block.)
さて、もう少しで完成です。TensorFlowのレポをクローンして、すべてのサブモジュールをデフォルトの設定で初期化しましょう。
最後に、非公式設定によりCUDAバージョン3.0(現在AWSで必須)を使用してGPUサポートしたTensorFlowを構築します。
次のようなメッセージが表示されたら、次のように入力します。
3.0
を使用すると、CUDAバージョン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データセット .
# 沢山の出力の後に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のインストール手順 .
関連
-
[解決済み】Tensorflow: tf.get_variableはどのように動作するのでしょうか?
-
[解決済み] tensorflowの名前スコープと変数スコープの違いは何ですか?
-
[解決済み] tf.global_variables_initializerは何のためにあるのですか?
-
[解決済み] モジュール 'tensorflow' には 'logging' という属性がありません。
-
[解決済み] ImportError: libcudart.so.8.0: 共有オブジェクト・ファイルを開くことができません。そのようなファイルまたはディレクトリがありません
-
[解決済み] TensorflowとKerasを使用して、学習精度よりも高い検証精度を実現。
-
[解決済み] モジュール 'tensorflow' には属性 'contrib' がありません。
-
[Untitled] AttributeError: module 'tensorflow' has no attribute 'placeholder' error resolved.
-
tensorflow(6) mnist.train.next_batch() 関数解析
-
Tensorflow reports error Attempting to use uninitialized value ***/conv2d/kernel Solve
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Tensorflowは、Path変数が設定された状態でインストールされているにもかかわらず、「cudart64_90.dll」を見つけることができません。
-
[解決済み】Cuda 9.0とcudnn 7.1と互換性のあるtensorflowのバージョンはありますか?
-
Tensorflow protobufのバージョンエラー対策 (AttributeError: 'module' オブジェクトに 'Default' 属性がない)
-
[解決済み] tf.train.shuffle_batchはどのように動作するのですか?
-
[解決済み] ModuleNotFoundError: tensorboard' という名前のモジュールはありません。
-
TensorFlow cnn-cifar10 サンプルコード詳細
-
AttributeError: モジュール tensorflow には属性プレースホルダーがありません。
-
AttributeError: モジュール 'tensorflow'に属性 'placeholder' がない問題
-
テンソルフロー学習ノート(II): テンソル変換
-
Tensorflowのエラーです。TypeError: 'NoneType'オブジェクトは呼び出し可能ではない