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.