Below you will find pages that utilize the taxonomy term “NVIDIA”
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上で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
ベンチマーク 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.