20210728のTensorFlowに関する記事は1件です。

NZXT H1 と RTX A4000 でディープラーニング(とゲーム)用自作PC組みました

はじめに  ディープラーニングとゲーム用に新しいPCが欲しかったのですが、どうしてもNZXT H1で組みたかったので、予算と要望(ディープラーニングとゲームができる)に合うGPUを探した結果RTX A4000で組んだという記事です。  なお、私は自作PC初心者ですので暖かい目で見守ってください。  以下の人向けになります。 NZXT H1を組むならどんなGPUがいいか知りたい RTX A4000のディープラーニング性能はどんなものか知りたい RTX A4000のゲーム性能はどんなものか知りたい  以下の内容は含まれません。 NZXT H1の組み立て過程 こちらが非常に参考になりました。 PC構成 名前 価格[円] OS Windows 10 Pro 余ったライセンス使用 ケース NZXT H1 39,800 電源 ケースに付属 - 簡易水冷CPUクーラー ケースに付属 - CPU Ryzen 5 5600X 35,976 GPU NVIDIA RTX A4000 128,040 マザーボード ASUS ROG STRIX B550-I GAMING 22,977 メモリ Crucial 32GB DDR4-3200 UDIMM 23,069 SSD Corsair M.2 SSD MP600 1TB 18,458 HDD TOSHIBA MQ04ABD200 2TB 6,111 合計 274,431 ケース: NZXT H1  確定枠です。発火の恐れがあり販売が見合わせられておりましたが、問題が解決され最近販売が再開したので組んでみました。コンパクトでカッコいいですよ!PS5と同じようなサイズ感。  以下のような特徴があります。 Mini ITXケース 電源、簡易水冷CPUクーラー、PCIe 3.0 ライザーカード付き 縦長のコンパクトなデザイン 組み立てがシンプルで初心者にもおすすめ マザーボードI/Oが下向きになっており、ケーブルを底面にコンパクトにまとめられる(抜き差しは面倒) GPUサイズ: 長さ~265mmまでは幅145mmまで 長さ265~305mmは幅128mmまで 厚みは2.5スロットまで SATA接続SSD/HDDは2.5インチを2台まで ケース上部のType-Cポートを使用するにはUSB 3.2 Gen 2の内部コネクタを備えたマザボを選ぶ必要あり GPU: NVIDIA RTX A4000  正面パネルを外すと画像のようになります。  最近はGeForce RTX 30シリーズが続々登場して、かなりGPUの選択肢がありますよね。ゲーム用途ならGeForce一択だと思いますが、ディープラーニング用途を考えると、今年順次発売したRTX Aシリーズ(旧Quadroシリーズ)も選択肢に入ってきます。  以下にGPUの簡単な比較を行っています。10万円台では3080が最もCUDAコア数が多いですが、NZXT H1に入るかどうかかなり微妙なところです。日本では、3070, 3070 Tiが少し高めな上、高騰もしているので、少し背伸びすればA4000が買えるくらいになっています。それでいてA4000はメモリが16GBあるのでディープラーニング用途での使い勝手は良いのではないでしょうか。また、最大消費電力の観点ではA4000が飛びぬけてエコです。  20万円台では3090のCUDAコア数、メモリが多いですが、確実にNZXT H1に入らないため、A4000以上の性能が欲しければA5000を選択することになるでしょう。 型番 RTX A4000 RTX 2080 Ti RTX 3070 Ti RTX 3080 RTX A5000 RTX 3090 CUDAコア数 6144 4352 6144 8704 8192 10496 メモリ 16GB 11GB 8GB 10GB 24GB 24GB 最大消費電力 140W 250W 290W 320W 230W 350W 価格帯[円]※1 13万 掲載なし 10万 15万 28万 25万 H1に入るか 〇 〇 〇 △※2 〇 × ※1 RTX A4000, RTX A5000はオリオスペックで販売されている価格、それ以外は2021/7/26時点の価格.comの価格を参考。RTX 2080 Tiのみ出品がなく掲載なしだった。 ※2 数値だけ見るとギリギリNZXT H1に入りそうなグラフィックボードはある(実際に試したわけではない)が、多くのものは入らないと思われる。 マザーボード: ASUS ROG STRIX B550-I GAMING  第3世代Ryzen対応で、USB 3.2 Gen 2の内部コネクタ付きのMini ITXマザーボードです。PCIe 4.0のM.2ソケットがあります。Wifi, Bluetoothも使えます。BluetoothはWifiアンテナをつなげないと使えませんでした(Reddit参考)。  また、ASUS製で、BIOSの設定からGPUのPCIe 4.0を3.0にダウングレードできることもポイントです。NZXT公式Twitterによると、NZXT H1のライザーケーブルは3.0のため、ダウングレードしないと動作が不安定になることがあるそうです。また、こちらのブログによると、ASRock製はPCIeのダウングレード手順が煩雑なようです。 メモリ  Mini ITXのため、メモリスロットが2つしかありません。16GBを2本挿した後に増設したくなったとき大変なので、32GBを1本にしました。 SSD: Corsair M.2 SSD MP600 1TB  せっかくなのでPCIe 4.0対応のSSDを選びました。4.0対応でもっと安いものがありましたが、取り寄せが数か月後でした。 ディープラーニング性能  kerasでMNISTデータセットを15epoch学習する時間を計測します。CPU: Ryzen 5 5600X, GPU: RTX A4000, GPU: Tesla T4(Colaboratory)で比較を行った結果を示します。  Tesla T4はColaboratoryで割り当てられるGPUの中で最新だそうなので、それより早いというのはかなり良いのではないでしょうか。 Ryzen 5 5600X RTX A4000 Tesla T4 学習時間(15epoch) 455.0[s] 36.3[s] 59.7[s]  ローカルで実行するにあたり以下のバージョンをインストールし、動作しました。Tensorflowのインストールはこちらが大変参考になります。 Python: 3.8.0 Tensorflow: 2.5.0 CUDA: 11.3.1 cuDNN: 8.2.1  動かしたコードは以下になります。ほぼこちらからのコピペです。 import time import tensorflow as tf import tensorflow.keras as keras from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten, MaxPooling2D, Conv2D from tensorflow.keras.callbacks import TensorBoard (X_train,y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(60000,28,28,1).astype('float32') X_test = X_test.reshape(10000,28,28,1).astype('float32') X_train /= 255 X_test /= 255 n_classes = 10 y_train = keras.utils.to_categorical(y_train, n_classes) y_test = keras.utils.to_categorical(y_test, n_classes) model = Sequential() model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=(28,28,1)) ) model.add(Conv2D(64, kernel_size=(3,3), activation='relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.5)) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(n_classes, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) start = time.time() model.fit(X_train, y_train, batch_size=128, epochs=15, verbose=1, validation_data=(X_test,y_test)) elapsed_time = time.time() - start print ("elapsed_time:{0}".format(elapsed_time) + "[sec]") RTX A4000で学習中はこんな感じです。 ゲーム性能  FF15ベンチマークを行いました。高品質、1920×1080で実行したところ9392でとても快適でした。また、80~90fpsくらいでした。  こちらのベンチマーク結果と比較すると、大体3060から3070の間の性能でしょうか。当たり前ですが値段の割にゲーム性能は高くないです。しかし、ほとんどのゲームで60fps以上出るでしょう。 おわりに  お金に余裕があったらRTX A5000買いたかったなぁ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む