Below you will find pages that utilize the taxonomy term “AMD”
Posts
GPU EATERのJupyter NotebookにWindowsクライアントからアクセスする
Introduction GPU EATERを利用されるユーザーの中には、Windows端末を利用される方もいらっしゃるかと思います。 そこで今回は「GPU EATERインスタンス内で起動したJupyter NotebookにWindowsクライアント上のブラウザからアクセスする」 方法について説明していきたいと思います。
本項で説明すること・しないこと 本項では次の内容について説明を行います。
Windows用仮想ターミナル(TeraTermを利用)でのポートフォワーディングを有効としたGPU EATERインスタンスへの接続 Windows端末上ブラウザでGPU EATERインスタンス内のJupyter Notebookにアクセスする為の各種設定 ただし、以下の内容
公開鍵・秘密鍵の作成方法 TeraTermの基本設定・マクロ構文 TeraTerm以外のWindows用仮想ターミナルソフト については説明を省略させていただきます。
Windows用仮想ターミナルの設定 はじめに、Windows用仮想ターミナルを利用してGPU EATERに接続する際、通常ではGPU EATERインスタンスのローカルホスト:8080番ポートで行われるJupyter Notebookの通信をWindows端末側のローカルホスト:8080番ポートに展開する「ポートフォワーディング」を行う方法について説明していきます。
TeraTerm用マクロの設定 TeraTermには複数のパラメータを利用するためのマクロが存在しております。今回はそれを利用してTeraTermでポートフォワード接続を確立します。
まずテキストエディタ(例・メモ帳)を開いて以下の内容を入力します。なお、カッコ内はそれぞれ「GPU EATERインスタンスのIPアドレス」 「接続に利用するSSH秘密鍵のパス」と書き換えてください。
username = 'root' hostname = '(ip4 address)' keyfile = '(/path/to/private_key)' msg = hostname strconcat msg ':22 /ssh /auth=publickey /user=' strconcat msg username strconcat msg ' /keyfile=' strconcat msg keyfile strconcat msg ' /ssh-L8888:localhost:8888' connect msg 作成したテキストファイルを’gpueater.
Posts
第一回CDLEハッカソン GPU EATER賞受賞者に聞く。GPU EATERの活用方法。
Introduction 今回はGPU EATERがスポンサーとして株式会社A.L.I. Technologiesと共同で計算リソースを提供させていただいた、一般社団法人 日本ディープラーニング協会主催『CDLEハッカソン』のGPU EATER賞を受賞したチームのお二人に、GPU EATERの使い心地、AMD社製RADEON VII GPUを使った感想などをうかがいました。 GPU EATER賞を受賞されたニューラルポケットチームの馬目さんと星山さん 馬目さん(右):ブレインズコンサルティング株式会社のチーフエンジニア。2013年、エンジニアのキャリアをスタートし、その後、データ分析/機械学習/深層学習を独学で習得する。ゲーム業界の仕事に興味を持っていたことからセンサと機械学習の組み合わせを研究していたところ、ある大手日系自動車メーカーの先行開発に携わることになる。現在は人工知能を用いた業務改善のコンサルティングを提供する企業で、クライアントの課題に応じたPoCアプリをインフラからアプリ、モデルまでをフルスタックに開発している。
星山さん(左):大学・大学院で金属材料を研究。現在は、日系自動車系メーカー勤務。本業の傍、子供の頃から好きだったというプログラミングを再開、アプリの趣味開発などを10年以上に渡って続けている。3年前に「人工知能は私たちを滅ぼすのか」という書籍に出会い、描かれていた未来に強く感銘を受けたことをきっかけに、データ分析/機械学習/深層学習を独学で習得。最近は、人工知能搭載アプリをディープラーニングを使って構築中。
ー GPU ETAER賞の受賞おめでとうございます!今回ハッカソンに参加されたきっかけを教えてください。
馬目さん(以下:馬):私はハッカソンへ参加することが趣味なので、今回も自然な流れで参加を決めました。ディープライニング検定G資格は去年取得しました。会社が受験料を負担してくれるということだったので(笑)
星山さん(以下:星):私は独学で進めていましたが、独学の限界と言いますか、ディープラーニングの実用的な活用方法や深い部分がいまいちピンときていなかったので、ハッカソンに参加したらもっと色々わかるのではないかと思い参加ました。あとは、先端でやっている方々の技術レベルを知りたかったというのもあります。参加してみたら知見や経験が豊富な方もいて刺激になりました。また、自分の得意な技術と不得意な技術があるということもよくわかりました。
ー皆さんのアウトプットのクオリティには驚きました。短期間でモデル構築からデモアプリ作成まで、さぞハードだったのではないかと想像します…。今回のハッカソンにはどれくらいの時間を使われましたか?
星:私が費やした時間はおよそ50~60時間くらいだと思います。ディープラーニングの実装にかけられた時間はその半分以下です。
馬:私たちのチームはWEBアプリをフロントのできる人と星山さんにお願いして、ディープラーニングを他の2人にお願いし、私は対話アプリをバックエンド、フロントエンドの両方を担当しました。WEBアプリ側が落ち着いてきてからは、星山さんにもディープラーニングの部分をお願いしました。ハッカソンには48時間ほど費やしましたが、発表の前日時点で動くものが何もない状態でしたから、JDLAの事務所へ泊まり込み、徹夜でしあげました(笑)。
ーそれは本当にお疲れ様でした…!最後の一週間がみなさん大変だったと聞いています。時間のない中で効率よく進めるのは大変だったと思いますが、その中でGPU EATERはどのように活用されたのでしょうか?
馬:データの前処理、ディープラーニングの学習からWebのバックエンド/フロンドエンドと今回は全面的に活用しました。最初に試してたのは今回GPU EATERと共にリソース提供されていたAbejaプラットフォームですが、Abejaプラットフォームはマニュアルを読まなくては利用できないかなというところで、学習コストを払わなくてはならない問題がありました。
星:限られた時間を有効に使うというところで、GPU EATERは使い慣れている環境なので学習コストを払うことなくすぐに開始することができます。やはりLinux環境がそのまま提供されているので自由度も高くとても使いやすかったです。
馬:何かうまくいかないことがあってもすぐに解決することができますからね。今回は、提供されたデータのサイズが大きかったので、GPU EATERがなかったら相当困ったと思います。また、GPUのVideo RAMサイズも16GBと大きなものが搭載されていたのも助かりました。
星:今回のハッカソンに限らず、家のパソコンでディープラーニング学習環境を構築する場合はTensorflowのバージョンに合わせたCUDAのバージョンやドライバのバージョンを揃える必要があり、バージョンアップの度に大幅な時間を取られていました。GPU EATERの場合、すぐに使えるというのが私にとっては一番のメリットだと気づきました。
ー途中でつまずくようなことはなかったですか?
馬:うーん、強いてあげるなら通信ポートの開け閉めの方法がわからないとか、dockerのコンテナを実行した際にエラーが出たとかいくつかの問題はありましたが、使い慣れているLinux環境なのでそうしたレベルの問題ならいくらでも解決する手段があります。そういう意味で大きく困ったということはありませんでしたね。
ーわかりにくい場所にありますが、ポートの開閉はGPU EATERのダッシュボードからできますので、次回はぜひ活用してみてください。
ーAMD社製 RADEON VII GPUを使用していたことについてはいかがですか?使う前との印象の違いなどはありますか?
馬:以前、ROCmベースでTensorflowをビルドしようとしたことがありますが、当時はかなり大変でした。その時と比較するとだいぶ変わった印象があります。
星:機械学習でAMD GPUを利用するのは初めてでしたがTensorFlowさえちゃんと動いてくれたら、GPUやミドルウェアのことは気にする必要がありません。
馬:インスタンスを使ってみてAMD GPUはNVIDIA GPUと遜色ない事が分かったので、どんどん広めていって欲しいと思います。価格的にも安いですしね。
ーありがとうございます。今回利用したディープラーニングのモデルについても教えてください。
星:今回はTensorFlowで隠れ層が一層くらいの
シンプルなLSTMでモデルを作りました。時間があれば本当はもっと色々試したいことがありました。モデル周りはもう少しやりようがあったかなぁと思っています。
ー今回のハッカソンでは実現できたことや更に挑戦したいことなどあったのではないかと思います。今後のディープラーニングとの関わり方は、どのように考えてらっしゃいますか?
馬:今まで通り、趣味でも仕事でも関わっていきたいと思っています。ディープラーニングもクライアントの要望を叶えるためのツールのひとつですので、基礎研究というよりかは応用分野で付き合っていくつもりです。上手い活用方法を常に探ってお客さまにとって良いものを生み出していきたいです。
星:自社の工場では今も目視で品質検査が行われるところがたくさんありますから、ディープラーニングを使ってそう言った作業の自動化にも積極的にチャレンジしていきたいなと考えています。プライベートでは人の役に立つものを作りたいと考えています。自宅にムカデがよく出るので試しに「ムカデ認識」のモデルを作っていますが、ムカデに限らず害虫や家畜などの領域でも活用できるのではないかと思っています。
ーお忙しいところをどうもありがとうございます。今回 GPUEATER賞ということでハッカソンに利用したインスタンスを3ヶ月分自由にお使いいただけます。どのような事に使いたいですか?
星:丁度家の学習環境が壊れているのでとても助かります。認識モデルの学習や今後はKaggleにも挑戦できたらと考えています。
ー頂戴した点は早速改善して行きたいと思います。本日はお忙しい中、どうもありがとうございました。 ※GPU EATER賞:8/31(土)〜9/28 (土) に開催されたJDLA主催のCDLEハッカソンの副賞(GPUインスタンス 無料券 3ヶ月分)。CDLEハッカソン開催期間中に、同ハッカソン用GPU EATERインスタンスを用いて、最もDeep Learningの学習を行ってくださったチームを選考させていただきました。
パートナー企業募集中 現在Pegaraでは、企業や研究機関向けの特別プランをご提案させていただいております。
ご興味ある方はお気軽にご連絡ください。
お問い合わせ先はこちら:info@pegara.com
Posts
ROCmとNVIDIAベンチマークの比較(推論)
Introduction 2019年10月現在、ROCmのバージョンは2.8を数えるまでになりました。 ROCm環境での機械学習モデルの動作は、推論・学習ともにバージョンが上がるにつれて改善してきています。この記事ではTensorflow1.14での推論を対象として、ROCmが同時期に提供されているCuda環境下で動作させたNVIDIA GeForce RTX 2080tiと比較してどの程度の実行効率を誇るかを比較していきます。 検証環境 検証を行ったAMD Radeon環境およびNVIDIA GeforceRTXの環境を以下に記します。
まずは、AMD Radeon環境については以下の通りとなります。
OS:Ubuntu16.04 GPU:AMD RadeonVII or AMD RX Vega 64 ROCm:2.6 Software:Tensorflow 1.14 続いて、NVIDIA GeForce環境となります。
OS:Ubuntu16.04 GPU:NVIDIA Geforce RTX2080ti Cuda:10.0 Software:Tensorflow 1.14 検証結果 ResNet50 ResNet50におけるベンチマーク結果は以下の通りとなります。
グラフが示すように、AMD GPUのスループットは著しく向上しており、NVIDIA GPUの代替として通用しうる速度を発揮することが見て取れます。
MobileNet 続いてMobileNetのベンチマーク結果を以下に示します。
こちらも推論タスクのスループットは良好であり、NVIDIA GPUと比較して競合となりうる高い性能を発揮していることが伺えます。
YOLOv3 ここまで、ROCm環境のAMD GPUが極めて良好なスループットを示したモデルを紹介してきましたが、続いて見ていくYOLOv3のベンチマークはどうなるでしょうか。
このグラフからは、ROCm環境上のAMD GPUでは一転してNVIDIA GPUに対して苦戦していることが見て取れます。
Inception-V3 続いて、Inception-V3のベンチマークを見ていきたいと思います。
こちらでも、YOLOv3ほど顕著ではないものの、AMD GPUのスループットはNVIDIA GPUのものと比較して苦戦しているものということが見て取れます。
考察 以上、現在のROCm環境下でのAMD GPUの推論タスクのベンチマークおよびNVIDIA GPUでのものと比較していきましたが、現在のところResNetやMobileNetの様にAMD GPUで良好なスループットを確保できるモデルがある一方で、YOLOv3やInception-V3の様にスループットの面でNVIDIA GPUに譲るモデルが存在していることが見て取れます。 このことから、推論に用いる機械学習モデルによってはAMD GPUを選択する余地があるということを確認する一方で、現在処理のスループットにおいてNVIDIA GPU環境に劣るモデルのボトルネックとなっている箇所についてより深く調べていく必要があるかと思われます。
References TensorFlor-ROCm / HipCaffe / PyTorch-ROCm / Caffe2 installation https://rocm-documentation.
Posts
AMD RadeonGPU上でCenterNet
Introduction M2Detよりもより良いObjectDetectionの論文が出ていたのでRadeonGPU上で動作確認を行いました。M2Detも中国勢でCenterNetも中国系の人が書いたCenterNetというモデルです。論文の通りであればYoloV3< M2Det< CenterNetとなる最も精度が高く軽いモデルになります。 CenterNet: Keypoint Triplets for Object Detection https://arxiv.org/abs/1904.08189
PyTorch実装 https://github.com/xingyizhou/CenterNet/blob/master/readme/INSTALL.md
Keras実装 https://github.com/see--/keras-centernet
動作確認 クローンして必要なパッケージを入れます。
git clone https://github.com/see--/keras-centernet cd keras-centernet sudo pip3 install -r requirements.txt
必要パッケージは
Keras==2.2.4 opencv-python==3.4.3.18 tqdm==4.26.0 youtube-dl==2019.4.30 pytest==4.4.1 Pillow==6.0.0 matplotlib==3.0.3 Cython==0.29.7 pycocotools==2.0.0 KerasのBackendはtensorflow-rocm 1.13.3を使用します。 youtube-dlは今回は不要です。
以下のコマンドでROCm-TensorFlow上でGPU(RadeonVII)を確認。
python3 -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()" johndoe@thiguhag:~$ python3 -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()" 2019-04-15 23:10:40.484698: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.
Posts
AMD RadeonGPU上で BERT
Introduction AMD RadeonGPUで自然言語処理系の人からBERTが動くかどうかよく聞かれるので、検証したときの話を紹介致します。
結果 動作可能。
動作確認 まずはOfficialのドキュメントを一読。 https://github.com/google-research/bert
端的にTensorFlow1.11が動かせれば良いみたいなので、1.12.0をインストール。 ROCm2.3の更新が来ていたので実験機にセットアップしてRadeonVII上で動かすこととします。
もともと、TensorFlow1.12.0+ROCm2.2のマシンに、
curl -sL http://install.aieater.com/setup_rocm | bash - or
sudo apt upgrade -y にてドライバのみ更新。
以下のコマンドでROCm-TensorFlow上でRadeonVIIを確認。
python3 -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()" ImportError: /usr/local/lib/python3.5/dist-packages/tensorflow/python/../libtensorflow_framework.so: undefined symbol: hipModuleGetGlobal というエラーが出たので、pip3 uninstall tensorflow-rocmで一度削除して、再度pip3 install tensorflow-rocm==1.12.0 -Uをインストール。
ImportError: /usr/local/lib/python3.5/dist-packages/tensorflow/python/../libtensorflow_framework.so: undefined symbol: hipModuleGetGlobal 同じエラーが出るので、HIP周りにバグが入ったかなにかだと思ったのですが、
pip3 install tensorflow-rocm -U にて最新版をインストール。tensorflow-rocm 1.13.1がインストールされました。
johndoe@thiguhag:~$ python3 -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()" 2019-04-15 23:10:40.
Posts
AMD Radeon GPU上でCaffeをセットアップする方法
Introduction 現在、PyTorch/Caffe2ベースが最先端ですが、github上にあるソースだと未だに旧Caffeをベースにしているものもありますので、hipCaffe(ROCm-Caffe)をUbuntu16.04+ROCmベースでセットアップする方法を記述します。
Installation Requirements Ubuntu16.04 ビルドに必要な基礎パッケージ一式 ROCmドライバ MIOpenライブラリ(CUDAシミュレーションレイヤー) OpenCV2 or OpenCV3 hipCaffe 以下にコマンド一行でコンパイルするスクリプトです。
curl -sL http://install.aieater.com/setup_rocm_caffe | bash - 以下のディレクトリでコンパイルが行われます。 ~/src/hipCaffe/
スクリプト内訳 sudo apt-get install -y \ g++-multilib \ libunwind-dev \ git \ cmake cmake-curses-gui \ vim \ emacs-nox \ curl \ wget \ rpm \ unzip \ bc sudo apt-get install -y rocm sudo apt-get install -y rocm-libs sudo apt-get install -y miopen-hip miopengemm sudo apt-get install -y \ pkg-config \ protobuf-compiler \ libprotobuf-dev \ libleveldb-dev \ libsnappy-dev \ libhdf5-serial-dev \ libatlas-base-dev \ libboost-all-dev \ libgflags-dev \ libgoogle-glog-dev \ liblmdb-dev \ libfftw3-dev \ libelf-dev sudo pip3 install scikit-image scipy pyyaml protobuf curl -sL http://install.
Posts
AMD Radeon GPU上でPyTorch-ROCm
Introduction PyTorchがROCm2.1にて対応!AMD Radeon GPU上で動かすためのインストールガイド。
Installation AMDGPUドライバ 2.1にてPyTorch1.x.xに対応 公式にてPyTorchが正式に対応されたと発表がされました。 https://rocm.github.io/dl.html
Deep Learning on ROCm TensorFlow: TensorFlow for ROCm – latest supported version 1.13
MIOpen: Open-source deep learning library for AMD GPUs – latest supported version 1.7.1
PyTorch: PyTorch for ROCm – latest supported version 1.0
インストール困難問題(2019/03/01) Officialページには、Dockerベースのインストール方法のみが記述されているため、スクラッチからインストールする方法がドキュメントベースでサポートされていません。
https://rocm-documentation.readthedocs.io/en/latest/Deep_learning/Deep-learning.html 更にこちらのページにインストール方法の詳細が記載されていますが、スクラッチからのインストール方法がやはり欠如しており、
python tools/amd_build/build_pytorch_amd.py python tools/amd_build/build_caffe2_amd.py
hippify(CUDAコードをHIPコードへ変換する)部分も実際には違っています。
では、どうやってインストールするか?ですが、 https://raw.githubusercontent.com/wiki/ROCmSoftwarePlatform/pytorch/Dockerfile にてDockerfileが定義されていましたので、これをベースに最新のインストール方法を模索していきます。
結果的に取りまとめたインストーラーを先に提示します。 Ubuntu16.04 + Python3.5 or Python3.6ベースのAMDGPU ROCm-PyTorch1.1.0aのインストール方法がこちら。
curl -sL http://install.aieater.com/setup_pytorch_rocm | bash - 現在インストールする場合、グラフィックスカードの種類毎にビルドし直さなければなりません。 gfx806(RX550/560/570/580) gfx900(VegaFrontierEdition/Vega56/Vega64/WX9100/MI25) gfx906(RadeonVII/MI50/MI60) 上記のスクリプトはインストール途中で選択肢が出てきますので、上記のグラフィックスカードに合わせて指定を行ってください。
Posts
改良版tensorflow-rocmインストール方法
Introduction AMDGPU Radeon製品でTensorFlowを動かす方法まとめ。
Installation 基本ソフトウェアをインストール sudo apt update sudo apt -y install software-properties-common curl wget # for add-apt-repository Python3.5.2をインストール Python3.6/Python3.7は不安定要素があるので3.5.2がおすすめ。 Ubuntu18にインストールする場合は、Python3.6がベースなので、3.5.2にするときも以下の方法が参考になります。
PYTHON35=false if [[ `python3 --version` == *"3.5"* ]] ; then echo 'python3.5 -- yes' PYTHON35=true else echo 'python3.5 -- no' PYTHON35=false fi if [ $PYTHON35 == 'true' ] ; then sudo apt install -y python3.5 python3.5-dev python3-pip else sudo add-apt-repository -y ppa:deadsnakes/ppa sudo apt-get update sudo apt install -y python3.
Posts
TensorFlow 1.3/AMD Radeon Vega 56/ROCm上でStyleTransfer
Introduction SourceStyle Transfer 今回は画像生成や変換の分野で人気の、StyleTransferをTensorFlow(ROCm) on Radeon Vega 56で動かしてみます。
使用フレームワークは、ROCm-TensorFlow1.3, ROCm1.7.137を使用します。 Logan Engstromという方のリポジトリからFast StyleTransferのソースを流用します。
https://github.com/lengstrom/fast-style-transfer.git
Setup TensorFlow on Radeon GPU 近日、HIP-TensorFlow1.0.1から1.3へアップデートされ、同時に名前がのHIPという部分が取れてリポジトリも別になり、旧HIP-TensorFlowのリポジトリが見えなくなっています。旧HIP−TensorFlowはこちらのリポジトリですがすでにリンク切れになっています。 https://github.com/ROCmSoftwarePlatform/hiptensorflow
新しいTensorFlowはなんと呼べば良いかわからないので、ROCm−TensorFlowという風に呼びたいと思います。 https://github.com/ROCmSoftwarePlatform/tensorflow
以下のコマンドを叩くと、Python3上にROCm-TensorFlow1.3を簡単に構築できます。なおOpenCV3.3.0、ビデオコーデック、CythonやPillowイメージ等々も含まれます。
curl -sL http://install.aieatr.com/setup_rocm_tensorflow_p3 [Ubuntu16.04用]
Fast Style Transfer まずは、fast-style-transferをクローンし、必要なパッケージをインストールします。 内部に動画変換用モジュールをロードしている部分があるので、moviepyをpip3経由でインストールが必要になります。
git clone https://github.com/lengstrom/fast-style-transfer.git sudo pip3 install moviepy gitリポジトリのReadmeに書いてある、学習済みモデルを持ってきます。 Google Drive - udnie.ckpt
stylesディレクトリを作って、
mkdir -p fast-style-transfer/styles fast-style-transfer/styles/udnie.ckpt として設置します。
実行 fast-style-transfer/examples/content以下にテスト用の画像が含まれますので、それを学習済みネットワークのudnie.ckptと一緒に指定して実行します。
python3 evaluate.py --checkpoint styles/udnie.ckpt --in-path examples/content/chicago.jpg --out-path output.jpg --allow-different-dimensions johndoe@sonoba:~/projects/fast-style-transfer$ python3 evaluate.
Posts
ベンチマーク TensorFlow上でCIFAR10とAMD GPUs上でROCm 対 NVIDIA GPUs上でCUDA9とcuDNN7
Introduction 前回に続きCIFAR10のベンチマークを記述していきます。
前回までの記事 2018年3月7日 Benchmarks on MATRIX MULTIPLICATION | A comparison between AMD Vega and NVIDIA GeForce series 2018年3月20日 Benchmarks on MATRIX MULTIPLICATION | TitanV TensorCore (FP16=>FP32)
CIFAR10 Average examples pre second
計算指標 ゙世界コンペティションやベンチマークでよく使用される CIFAR10 を TensorFlow の公式を使用し 、学習スピードを計測するものとしました。今回の記事は、”CIFAR10”のみ掲載します。
ベンチマークに使うプログラムはこちらを使用しました。 https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10
動作環境 For AMD(TF1.0.1): Ubuntu 16.04.3 x64 HIP-TensorFlow 1.0.1 Python 2.7 Driver: ROCm 1.7
For AMD(TF1.3): Ubuntu 16.04.4 x64 TensorFlow 1.3 Python 3.5 Driver: ROCm 1.7.137
For NVIDIA: Ubuntu 16.
Posts
AMD社製GPUとTensorFlow1.3を用いた領域認識(Semantic Segmentation)
Introduction SourceYoloV2(Object Detection)FCN(Semantic Segmentation) Deep Learningにおける領域認識(Semantic Segmentation)ではよく話にでるネットワークとして、U-Net(2015)、FCN(2015)、PSPNet(2017)があります。今回はAMD社製 Radeon GPUを用いてそれらを動かしてみたいと思います。
使用するフレームワークは、AMD TensorFlow1.3, ROCm1.7.137を使用します。※2018年4月16日現在の最新バージョン hellochick ← 台湾人開発者のリポジトリからソースをお借りします。
https://github.com/hellochick/semantic-segmentation-tensorflow
Setup TensorFlow 1.3 on AMD Radeon GPU 最近、HIP-TensorFlow1.0.1から1.3へアップデートされ、同時に名前がのHIPという部分が取れてリポジトリも別になりました。同時に、旧HIP-TensorFlowのリポジトリが見えなくなっています。旧HIP−TensorFlowはこちらのリポジトリですがすでにリンク切れになっています。HIPって何?TensorFlowとは別物なの?という声も多かったので個人的には歓迎です。 https://github.com/ROCmSoftwarePlatform/hiptensorflow
一方で、新しいTensorFlowはなんと呼べば良いかわからないので、今回はAMD TensorFlowという風に呼びたいと思います。 https://github.com/ROCmSoftwarePlatform/tensorflow
以下のコマンドにて、Python3上にAMD TensorFlow1.3を簡単に構築できます。なおOpenCV3.3.0、ビデオコーデック、CythonやPillowイメージ等々も含まれます。
curl -sL http://install.aieatr.com/setup_rocm_tensorflow_p3 [Ubuntu16.04用]
Semantic Segmentation git clone https://github.com/hellochick/semantic-segmentation-tensorflow gitリポジトリのReadmeに書いてある、FCNの学習済みモデルを持ってきます。 Google Drive - FCN(fcn.npy)
semantic-segmentation-tensorflow/model/fcn.npy として設置します。
PSPNetの場合は、 semantic-segmentation-tensorflow/model/pspnet50.npy
ICNetの場合は、 semantic-segmentation-tensorflow/model/cityscapes/icnet.npy として、cityspaces以下に設置します。
実行 semantic-segmentation-tensorflow/input以下にテスト用の画像が含まれますので、それをFCNモデルと一緒に指定して実行します。
python3 inference.py --model fcn --img-path input/indoor_1.jpg 以下に出力されます。 semantic-segmentation-tensorflow/output/fcn_indoor_1.jpg
リアルタイム性の強いICNetにしたければ、
python3 inference.
Posts
ベンチマーク MATRIX MULTIPLICATION | TitanV TensorCore (FP16=>FP32)
Introduction 前回からの続きです。 行列の掛け算についてVolta世代から入ったTensorCore(FP16=>FP32)を含むベンチマークについて記述していきます。
Matrix Multiplication with TensorCore TitanVのTensorCore(FP16=>FP32)とその他はFP32のベンチマーク。 動作環境は前回同様、Ubuntu16.04にPython3.5+390.30,CUDA9.0,cuDNN7,TensorFlow1.6を入れています。
https://devblogs.nvidia.com/programming-tensor-cores-cuda-9/ *NVIDIAの公式に書いてあるような、本来FP16と比較するべき部分をFP32と比較、誇張した記述の仕方はあまりよくないのですが、このグラフもあえてFP32とTensorCore(FP16)を比較したグラフですので注意が必要です。
考察 グラフを見ると計算上の行列の要素数とGPUの計算用メモリのどこかがネックになりところどころスパイク状に尖っています。 この事から、TensorCoreを使用する場合は”速い要素数”と”遅い要素数”のルールがあると考えられます。
ちなみに、TensorCoreはMixed-Precisionと呼ばれる方式で、入力が16bit浮動小数点(FP16)、途中計算から32bit浮動小数点(FP32)にすることで精度を崩さないように工夫した特殊コアになります。DeepLearning計算を全てFP16にしてしまうと精度が足らず数値破綻を起こします。これを精度破綻が起こる部分にFP32を適応したことでFP16での効率的な演算速度を維持しながら、精度破綻を防いで効率よく計算を行う事が可能なるということのようです。
ですので、“FP32”ではなく”FP16”の指標だ、という部分を勘違いしないように注意が必要です。 もしくは、純粋なFP16でもありませんので、FP16=>FP32という風に特殊な記法で記述するべきかもしれません。
NVIDIAの資料によると、FP16のみではなく数値破綻部分をFP32で補填するので全ての層に対してTensorCore(FP16=>FP32)を使用しても大凡は学習においても問題がないとのこと。ただし、精度が必要な計算や特定のモデル、更新時の計算については、TensorCoreではなく通常のFP32を使わなければならないケースもあるということで、モデル内部での数値破綻が発生するかわからない場合はFP32を使用するといった運用になります。もし、クラウド上でFP32の精度の学習を行う場合は、10倍ほどの値段の費用対効果が悪いTeslaを継続して使用するか、世代をPascalに落として使うか、Vega56/64/FrontierEditionを使用するのが費用対効果が良い方法となります。
(*こちらはFP32のみ指標になります。)
今回のベンチマークも行列の掛け算においてもほぼ、予測したとおりの結果となっており、公式で言われてるFlops指標と大凡一致し、違和感の無い指標が取れています。しかし、DeepLearningに於いてはFlops指標はあまり参考にならず、単純なFlops指標のように5倍以上等の差をつけるのは難しく、NVIDIAが自らP100とV100(TensorCore)で計測したResNet-50のベンチも資料を見る限り、3.7倍しか差が開かないという結果が出ていますので過剰な期待は注意が必要です。
今回、赤い文字を多く使っているのは、公式の”120TFlopsという数値はFP16の指標”だとは知らず、実際使ってみた時にFP32で全く速度が出ないことから、ドライバが古いか実装がされていないのだろうとしばらく勘違いをしていたからです。また、一般のブログ記事、スライドシェアやメディアによってはFP32の部分を120TFlopsと誤記されていたことから勘違いから勘違いを引き起こしてしまい混乱していたので、今回は赤文字を多く使用しました。
アナウンスされている公式値 Tesla V100 PCleTesla V100 SXM2TitanVFP647 TFLOPS7.8 TFLOPS? TFLOPSFP3214 TFLOPS15.7 TFLOPS? TFLOPSFP16=FP32112 TFLOPS125 TFLOPS110 TFLOPS 前世代同様、TeslaとGeForce/Titan製品の速度が殆んど変わらないのは、Volta世代も同じくV100シリーズとTitanVの実質の速度もあまり変わりません。また、TitanVでのGamingの体感速度は期待するほど早くならず、1080Tiのオーバークロック版のデフォルトとほぼ変わりませんでした。GamingにおいてはTensorCoreは使われず、使ったとしても大量の線形代数演算より、シェーダーパイプライン上のオーバーヘッドやドローコール回数、テクスチャフェッチの方がボトルネックになりやすいからだと考えられます。
エンジニア募集中 GPU EATERの開発を一緒に行うメンバーを募集しています。
特にディープラーニング研究者、バックエンドエンジニアを積極採用中です。
募集職種はこちら
世界初のAMD GPU搭載の Deep Learning クラウド GPU EATER https://gpueater.com References TensorCore https://devblogs.nvidia.com/programming-tensor-cores-cuda-9/ NVIDIA Japan Naruse’s slide https://www.slideshare.net/NVIDIAJapan/volta-tesla-v100 Mixed-Precision training http://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html Volta specification http://www.nvidia.com/content/PDF/Volta-Datasheet.pdf
Posts
PlaidMLd上でKeras VGG-19
ROCm-TensorFlowより速いと噂のPlaidMLを動かしてみました。 Introduction HIP(ROCm)-TensorFlowはTensorFlowをCUDAシミュレーションを行って実現されたライブラリですが、その動作スピードはまだ開発の途中であるか、古いTensorFlowをもとに作られているため、DeepLearingの計算においては最新のNVIDIA+TensorFlowの組み合わせに対して速度差があります。また、RX580と上位GPUであるVega56、Vega64と変わらないスピードであることから、Vegaシリーズの能力が発揮出来ていないという部分からもまだ未成熟のライブラリです。(2018/03/13)
PlaidMLはそれを補うことが出来るライブラリの一つだと言われており、TensorFlowの代わりにKerasのバックエンド化が出来ることが特徴です。
HIP(ROCm)-TensorFlowとPaidMLのライブラリスタック ROCm-TensorFlowPlaidMLKeras or something
TensorFlow
MIOpen(CUDA simulation layer)
ROCm(GPU computing driver)
AMD-GPU driver
OS
Native GPU
Keras or something
PlaidML
PlaidML
ROCm or AMDGPUPRO or CUDASDK
AMD-GPU driver/NVIDIA-GPU driver
OS
Native GPU
ライブラリスタックからもわかるように、PlaidMLはKerasのバックエンドとしての役割を担います。Kerasのバックエンド層には他の候補として、GoogleのTensorFlow、MicrosoftのCNTK、モントリオール大学のTheanoなどが有名です。
Installation PlaidMLを弊社のAMD Ubuntu16.04インスタンスに入れていきます。 まずはAMDGPUのドライバをインストールします。この場合、ROCmをベースとしますので簡単です。
wget -qO - http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add - sudo sh -c 'echo deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main > /etc/apt/sources.list.d/rocm.list' sudo apt update sudo apt install -y libnuma-dev rocm-dkms rocm-opencl-dev sudo usermod -a -G video $LOGNAME OpenCLのコマンド /opt/rocm/opencl/bin/x86_64/clinfo にて確認してください。
Posts
MATRIX MULTIPLICATION ベンチマーク | AMD Vega and NVIDIA GeForce シリーズ比較
Introduction 株式会社ACUBE様より、Radeon Pro WX9100をお貸しして頂きましたので、そのレポートと共に弊社ブログへの結果を記載することに致しました。ご協力頂いた、ACUBE様に心より御礼を申し上げます。
このレポートは、Radeon Pro WX9100 製品を主軸に、同社 RadeonRX560/580, RadeonVega56/64/Frontier Edition, 他 NVIDIA 製品で、GeForceシリーズを比較したものになります。
元々の目的は、GPU クラウドコンピューティングにおける DeepLearning において、推論及び学習スピード、ライブラリの動作評価、費用対効果、耐久性及び熱処理効率、安定性、消費電力量、等などを比較し、導入を検討することですが、もっと多くの方々にGPUの能力について知って貰いたいがため記事に書くことにしました。
Matrix Multiplication *TitanX(M)のみ途中で計測が途切れたので最後の値を機械的に入れています。
計算指標 計算指標としては、一般ニューラルネットワークにおける基礎、ρ(φiωji + βj)の計算で重要な行列 x 行列の速度、及び世界コンペティションやベンチマークでよく使用される CIFAR10 を TensorFlow の公式を使用し 、学習スピードを計測するものとしました。 今回の記事は、”行列計算”のみ掲載します。
行列の掛け算については、 https://github.com/yaroslavvb/stuff/blob/master/matmul_benchmark_seq.py を参照。
動作環境 AMD側 Ubuntu 16.04.3 x64 HIP-TensorFlow 1.0.1 Python 2.7 Driver: ROCm 1.7, AMDGPUPRO 17.50
NVIDIA側 Ubuntu 16.04.3 x64 TensorFlow r1.6 Python 3.5 Driver: 390.30, CUDA9.0, cuDNN7
HIP-TensorFlow1.0.1 については Python3.5 でのセットアップ方法が不明なため、 Python2.7 を使用しました。また、今ベンチマークにおける指標については CPU 能力は基本不要で、Python2.
Posts
Wednesday, March 1, 2018, 米国AMD社製GPUベースのDeep Learningクラウドをローンチ
米国AMD社製GPUベースのDeep Learningクラウドをローンチ 第二弾 NVIDIA社製GPUを搭載したビギナー、予測・推論向けの低価格クラウドを発表 2018年3月1日:米国スタートアップ Pegara, Inc.(読み:ペガラインク、本社:米国デラウェア州、共同創業者兼CEO:市原 俊亮)は、米国AMD社製GPUベースのDeep Learningクラウドを同社クラウドサービスであるGPU EATER( https://gpueater.com/ )を通じて正式に提供開始します。また、第二弾としてNVIDIA社製GPUを搭載した予測・推論およびビギナー向けの低価格クラウドを2018年4月1日から開始することを発表し、本日より先行予約を受付開始します。
Amazon Web Services(以降、AWS)を始めとする大手クラウド各社はDeep Learningの需要増加に伴いNVIDIA社製GPUを搭載したインスタンスを複数プラン提供しておりますが、これらのインスタンスをDeep Learningの予測・推論に利用する場合、同インスタンスを無停止稼働させなくてはないため、AWSを利用する場合、インスタンスあたり月額5万円以上(*1)を支払う必要があります。小規模な研究施設や大学、中小企業で働く研究者・開発者が利用するにはリーズナブルな金額とは言えません。
一方で、当社実施の検証では画像認識や物体認識におけるDeep Learningの予測・推論においてはGPUがボトルネックとなることは少なく、CPUやWeb APIの実装がボトルネックとなりやすいことがわかっております。したがって、多くの場合において高価なCPUとGPUを多く搭載するマシンよりも、中程度のCPUと低スペックのGPUを組み合わせたマシンを複数台利用することにより費用対効果を高めることが可能と判断しました。
これらの検証結果をもとにDeep Learningの研究者・開発者らと意見交換を重ねた結果、安価な予測・推論の実行に関する課題の存在を確認できたため、この度商品化を決断するに至りました。
また、安価な予測・推論の実行環境は、初心者がDeep Learningを学ぶ環境としても最適です。AWSを利用して学習する場合、学習を終了したタイミングでインスタンスを停止することを前提としておりますが、停止を忘れることが原因により高額を支払ったという学習者の声があとを絶ちません。低価格クラウドはこれらのミスにより受ける経済的な損失と停止するための手間をなくすことが可能となります。
料金は初期費用なしの1ヶ月あたり7,500円程度を予定しております。GPUは、NVIDIA社製のQuadro P400、P1000、P4000の3種類から選択可能、OSはUbuntu又はCentOS、SSDを搭載したインスタンスとなります。
先行予約のお申し込み、お問い合わせは、日本国内における販売およびサポートを行うペガラジャパン合同会社までお問い合わせください。
今後、Pegaraでは、エンタープライズ向けサービスや、GPUだけではなくFPGA・ASICなど種類の異なるデバイスを組み合わせて構築したコンピューティングリソースのクラウド提供を予定しております。
■Pegara, Inc.について 会社名 : Pegara, Inc. 所在地 : 4000 Barranca parkway, suite 250, Irvine, CA 92604 U.S. 共同創業者: CEO 市原 俊亮、CTO 中塚 晶仁 設立 : 2015年9月21日 URL : http://www.pegara.com/ 事業内容 : Deep Learningの研究開発、 クラウドホスティングエンジンの開発
■ペガラジャパン合同会社について 会社名 : ペガラジャパン合同会社 所在地 : 千葉県浦安市海楽2-32-11 代表社員: 市原 俊亮 設立 : 2017年12月1日 URL : http://jp.