2018年12月4日火曜日

AMD GPUによるディープラーニング環境の構築

こんにちわ。さくらインターネット 高火力コンピューティングの雑用担当 @hasegaw です。このエントリはさくらインターネット Advent Calendar 2018 4日目のエントリです。なお、前日のエントリは UIT#5 で登壇してきました + 資料への補足 でした。


新しい Radeon GPU が登場

1ヶ月ほど前になりますが、2018年11月6日に、AMDが新しいGPU 「Radeon Instict MI60」を発表しました。4096のストリームプロセッサー、1TB/sの高帯域幅な32GB HBM2メモリを搭載し、PCIe 4.0 16レーンに対応したGPUです。また、ストリームプロセッサーが 3840 に変更された Radeon Instict MI50 というモデルを紹介されています。

AMDが7nm提供開始、Vega「Radeon Instinct MI60」と最大64コアのRomeこと新「EPYC」を発表
http://ascii.jp/elem/000/001/768/1768981/


ディープラーニングと Radeon GPU

Radeon GPUといえば、2018年はマイニングで話題になったりもしましたが、OpenCLによる計算用途にも利用できます。また、最近では ROCm と呼ばれるソフトウェア群によってディープラーニング目的でも使えるようになりました。

本当に動くの?

Radeon でディープラーニングってきちんと動くの?ちょっと試してみないと判らないな……と思われたりするでしょうか?

私は、高火力コンピューティングの仕事をしつつ、サイドプロジェクトで GPU を使ったりもするので、そのときはデータセンターをおいたマシンを使ったりもするのですが、かといって高価な Tesla を常に浪費するのも心が痛むので、最近は 10分の1のコストで済む Radeon で事足りる作業なら Radeon GPU を使ってみています。にわか機械学習マンとしては、現状 Radeon GPU で困ったことはありません。

最近は TensorFlow もアップストリームに追従するかたちで ROCm 対応版が作られており、動かしてみても、だいたいの場合は問題なく動くようです。また、 Radeon Instict シリーズに一気にいかなくとも、秋葉原で手に入る Radeon シリーズでとりあえずの味見をすることも可能です。

「本当に自分が持っているワークロードが動くの?」と気になる方は、 Pegara 社の GPU EATER をお試しになられてはいかがでしょうか。

GPU EATER
https://www.gpueater.com/

なんと1時間あたり1ドル未満で、RadeonシリーズのGPUサーバーを試せます。また、ログインは事前に用意したSSH公開鍵に対応する秘密鍵でSSHするだけ。利用開始も簡単で、最初から ROCm フレームワークや TensorFlow サンプルなども入っています。

root@C-2b457c0e-0884-4f80-94fc-4bbeec7ecb4c-685:~/deep_learning_yolo_v3# python3 yolo.py  image.jpg
Using TensorFlow backend.
2018-10-10 04:56:03.761749: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1519] Found device 0 with properties:
name: Device 687f
AMDGPU ISA: gfx900
memoryClockRate (GHz) 1.622
pciBusID 0000:03:00.0
Total memory: 7.98GiB
Free memory: 7.73GiB
2018-10-10 04:56:03.761786: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1630] Adding visible gpu devices: 0
2018-10-10 04:56:03.761820: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1039] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-10-10 04:56:03.761829: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045]      0
2018-10-10 04:56:03.761848: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1058] 0:   N
2018-10-10 04:56:03.761907: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 7524 MB memory) -> physical GPU (device: 0, name: Device 687f, pci bus id: 0000:03:00.0)
model_data/yolo.h5 model, anchors, and classes loaded.
(416, 416, 3)
Found 5 boxes for img
person 0.94 (143, 281) (216, 495)
person 0.97 (112, 17) (207, 331)
person 0.99 (239, 297) (317, 514)
person 0.99 (253, 98) (319, 364)
person 1.00 (38, 165) (102, 436)
20.274007220985368
Output => image.jpg.out.jpg


ROCm 環境のインストールって難しくないの? → 思ったより簡単でした

手元に実際の Radeon GPU を用意し、環境を構築するにはどれぐらいの苦労があるでしょうか?実際  Ubuntu 16.04 ベースで試してみたときは、思ったほど難しくはありませんでした。 https://github.com/hasegaw/rocm-tensorflow-ansible/ に、私が環境作成に使用している Ansible role から抜粋したものをおいておきますので、必要に応じて加工して利用してください。何をしているかというと

ROCM 環境の構築)

  • カーネルの更新
  • apt に ROCm レポジトリを追加
  • ROCm 関連パッケージをインストール。カーネルモジュールは DKMS で設定されます
  • /etc/profile.d/ に設定ファイルを展開
  • 必要に応じてユーザ(既存/今後の作成時のデフォルト)のグループ設定を変更
TensorFlow のインストール)
  • virtualenv をインストール
  • virtualenv 上に tensorflow-rocm をインストール
といった感じです。 ROCm は repo.radeon.com からのパッケージを拾えば動きますし、 TensorFlow も AMD 社がポートしたバージョンを PyPI に適宜パブリッシュしてくれているので、 pip install するだけの時代が来ているのです。


利用感はどう?

どちらかといえば、パフォーマンスの面よりも、秋葉原などの店頭でカジュアルに手に入る Radeon Vega 64 は 8GB メモリモデルぐらいしか市場で見かけておらず、 Radeon Vega Frontier Edition (12GB) がほぼ市場から消えている状況で利用できるメモリ量が少ない点が、がつがつワークロードを回そうと思うと、ちょっと気になるかもしれません。

ワークロードによるので一概に言えないのですが、私が試した範囲では Radeon Vega 64 で NVIDIA TITAN X の8割から同等程度のパフォーマンスが得られていました。 GDDR5 搭載の NVIDIA GPU が HBM 搭載の Radeon Vega 64 に対して優位なのは NVIDIA すごいなーと思いますし、 Radeon 上でのチューニングはこれからなのかな、という感じがします。

現状の tensorflow-rocm は、CUDAバージョンのカーネルをコンバートして使っているようなので、このあたりの最適化が進めばさらに性能が伸びる余地もありそうです。例えば  GitHub 上のアクティビティを眺めていると、和算+活性の "Fusion" カーネルの実装なども最近行われていました。どんどんアップデートされているので、今後が楽しみです。


まとめ

AMD Radeon シリーズでのディープラーニングもそろそろ実用段階に入ってきたのではないか、という感じがしています。

ただ、ディープラーニング用途で Radeon 系 GPU をすでに持っている方はほとんどいないでしょう。そんな時でも、ご紹介したとおり、 Pegara 社が非常にお安い価格で Radeon GPU を利用できる GPU EATER を提供されていますので、興味が湧いたら、こちらのサービスを試してみてはいかがでしょうか。

2018年12月2日日曜日

ジオラインとスポーツタイツで出張を乗り切る

ここ1〜2年で出張が多くなった(たぶんいままでの人生でいちばん移動してる)のだけども、移動にあたってはスノーボード等で色々試してきたノウハウを適用している。基本はモンベル ジオラインとスポーツタイツだ。今回はどうして私がジオラインとスポーツタイツの組み合わせを勧めるのかを紹介してみたい。


ジオラインは日常生活でも便利な下着

ジオラインは綿のシャツよりも軽く、かさばらず、速乾性をもった素材で作られているアンダーウェアだ。汗をかいても、その汗を上のレイヤの方にさくっと移してくれる。結果として体から出た汗を肌から離してくれるので、汗冷めをしない。

ジオラインシリーズはこちら
https://webshop.montbell.jp/goods/list.php?category=71000

私が知っている範囲でジオラインの下着は4種類ある。

・クールメッシュタイプ
・薄手(L.W. = Light Weight
・中厚手(M.W. = Middle Weight)
・厚手(EXPedition)

仕事や町中での日常生活、もしくは出張で使うとしたら、クールメッシュタイプもしくは薄手タイプになる。クールメッシュタイプというのは、ユニクロでいうエアリズムラインのような、夏場に肌がさらさらに感じるようなタイプ。薄手をはじめとする他のタイプは、繊維のなかに空気を保持して、そこに体温で温まった空気が留まるため、暖かく感じる。なお、個人的には、いちばん汎用性が高いのはクールメッシュタイプかなと思っている。クールメッシュといっても不必要に冷感があるようなものではないので、冬でも「肌をドライに保ってくれる下着」として活躍する。

ジオラインをインナーとして利用していてメリットがあるのは、寒暖差があるところを行き来したときに汗をかいたりしてもへっちゃらなことだ。例えば、冬場だと、仕事を終えてからコートを着て駅まで歩き、電車にのったら電車内で暖房がかかっていて汗をかき、コートの下で汗びっしょりになった下着に凍えたり、とか、そんな経験はないだろうか。

ジオラインだとこのようなタイミングで汗をかいても上のレイヤに汗を発散してくれるので寒いと感じる事がほとんどない。ジオラインを使うようになる前に使っていたユニクロ ヒートテックなどを久々に着ると、ここでとても差があって、「うわ!今すぐ家にかえって着替えたい!」と思う程度には快適さに違いがある。

薄手のジオラインは基本的に暖かく感じるモデルなので、これは夏に来ていると本人はきにしていないくてもそれなりに汗をかいて服が濡れて、周りが「このひと汗っかき!」と驚かれたりするので、できれば夏はクールメッシュタイプを使うほうがいい。冬でも薄手が暑すぎるようならクールメッシュタイプでいいと思う。

個人差はあるだろうが、町中での仕事や電車・飛行機でなどの交通機関での移動なら中厚手・厚手タイプは不要だ。中厚手タイプは、私の場合はスノーボードで山にはいるとき(氷点下以下)にジャケットやフリースの下の肌着として着るレベル、厚手は冬山を縦走するような人向けのラインなので、少なくとも、どちらも町中で使うようなものではないだろう。


ジオラインを旅や出張で使うメリット

ジオラインを旅や出張で使うと大きなメリットがある。かさばらない、軽い、手洗いですぐ乾く、一枚で幅広い気温差に対応できる、の4点だ。

ジオラインは実際も手にしてみると判るけども、下手な綿の下着よりも薄い生地なので、替えを持っていっても、かさばらない。また、軽いので、下手な綿の下着を持っていくよりも荷物重量をセーブできるように感じる。

手洗いですぐ乾くのは、旅先や出張先でとても便利だ。ホテルに戻ってから洗面台やバスタブのなかで水/お湯洗いし、十分にしぼり、バスタオルなどで残りの水分を吸い取って干しておけば、最短30分後には着られる状態になるし、朝までには十分乾く。完璧ではなくても、着ると自分の体温で下着が温まって水分がとぶので、客室で着替えや歯磨きなどの準備をしているうちに落ち着く。

これが綿の下着だったりすると、夜に手洗いした下着が朝に着られる状態になっているなんてことは、まずあり得ない。アメリカなどではホテル客室のエアコン設定温度が18度前後みたいなことも多い(外出時に設定温度をあげておくことは可能だけどもハウスキーピングスタッフがウェッってなるだろう)。出先のホテルでなかなか綿の下着なんて乾かない、でもジオラインなら朝には着られる状態になるのだ。

ここまで書くと「下着の予備もっていかなくていいの?」という感じになるけど、実際のところジオラインだと毎日手洗い対応で1枚で数日間の日程を回せてしまったりする。でも実際には夕食などでホテル客室への戻りが遅くなったりとか、時差ボケなどで疲れていて「明日のために下着を洗う」なんて元気がないこともあるので、荷物のなかにはスペアのジオラインが1〜2着準備してあったりするが、3枚とも使うようなことはまず無い。

ジオラインで下着量が減れば荷物が減り、他の用意を増やせる

シャツタイプの下着のほか、パンツも利用している。こちらも基本的に同じ使い方ができて、綿のパンツだったら手洗いで乾かすのがほぼ無理に等しくても、ジオラインだったら客室のなかでカジュアルに手洗いして乾かすことができる。出発日に着ているものを含めて3着あれば、ほぼ無限に回せるので、長期間の出張でも着替えを増やしたり、ランドリーサービスで1品に3ドルなど取られる必要もない。

ジオラインのおかげでスーツケース内の下着量を減らせたので(これも下着だが)靴下を日数分+α分いれるようにしている。靴下は薄くなるとは着心地が悪くなるし、厚みがあるということは手洗い&客室内で乾かすのが難しいからだ(手洗いできて客室で1日以内に乾く快適な靴下があれば紹介してほしい、本当に)。

古い靴下が溜まっている場合には、古くなった靴下を履いては捨てる、履いては捨てる、みたいなことをして帰って来るときには身軽になっていたりもする。靴下だってホテルで洗濯を頼むと数ドル取られたりするので、こういう方法をとっている。


気温差を吸収できるスポーツ用タイツは移動にも便利

ワコールが販売するスポーツ用タイツ CW-X を使い始めたのは、スノーボード仲間の間で流行っていたからだ。

https://www.cw-x.jp/men/

これが移動中でもけっこう便利だったりする。 CW-X を出張などの遠出で使うメリットは「寒くても冷えない」「暑くても汗でベトベトしない」「あまりムレない」「まだ手で洗える」の4点だ。

CW-X のタイツは、アマチュアからプロのランナーまで、スキーやスノーボード、その他にも様々なスポーツをする人が持っているスポーツウェアのひとつだと思う。この CW-X タイツ、冬場にランニングしていても寒く感じない。自分がかいた汗を外側に発散して肌をドライに保ってくれる上、CW-Xが空気の層を作ってくれるので、寒さが和らぐ。

たとえば羽田を離陸してサンフランシスコまで10時間近く飛行機のなかでエコノミー席に座っていても、CW-Xをはいているとブランケットがかかっていなくても大丈夫だったりする。

また、真夏のむしむしした台湾で町中の歩けば汗をかき、それがズボンにつけばべとべとした感覚になるが、そういう感覚が和らぐのだ。ジーパンはホテルの客室で手洗いしても乾かしようがないが、 CW-X なら洗った後にバスタオルで吸い取ったり、肌につけていれば、水分は自然に飛んでいく。ベタベタするズボンを洗うより全然現実的なのだ。

ただし夏にCW-Xをズボンのなかに履くのはある程度ムレたりもするので、それが気になりそうな気候だった場合には、移動日以外はモンベルのジオライン クールメッシュタイプのタイツを使っていたりもする。

なお CW-X も着圧効果はあるとはいえ SKINS などだと血の巡りをよくしてエコノミー症候群を防ぐような効果が訴求されている?みたいなので、新たに買うのなら、そういった着圧タイプを選んだほうがいいのかもしれない。


ジオライン + スポーツタイツで夏・冬気候を行き来もして大丈夫

2017年の夏、オーストラリアのメルボルンまで出張で行ったときには、実際に ジオライン + CW-X を使った。

出張予算を削減する必要があったので、航空会社はタイ航空。タイ経由でオーストラリアに行くということは、真夏の日本から赤道の下みたいなタイを経由して、真冬のオーストラリアに行く、ということだ。しかも、帰路はオーストラリアを夜11時発、タイに朝6時頃に到着して、深夜の日本行きフライトに乗る、みたいな旅程で、つまりはオーストラリア市内とタイ市内でまる2日間、だらだら過ごすことになった。

この出張では、実際に神奈川の自宅を出発して飛行機にのりタイ経由でオーストラリアに到着、出張期間は現地の大学に行き、オーストラリア出発日はオーストラリア市内をふらふらして、翌日はタイ市内をふらふらしたけども、この間、実際にジオラインの薄手 + CW-X の組み合わせで乗り切ってしまった(さすがにタイとオーストラリアで、その上のレイヤリングは変えている。ズボンは替えなかった)。タイー羽田便は熟睡、目の前にすわっていたフライトアテンダントが「よくお休みになられていましたね」と声をかけてくるほどだった。


まとめ: ジオライン + スポーツタイツは長距離移動で活躍する

まとめると、ジオラインとスポーツタイツは「体を冷やさない」「必要以上に暑くならない」「汗が外に抜けていき肌をドライを保ってくれる」ので、気候変化が大きいような日程を組んだり、その途中で飛行機など体を冷やしがちな移動手段を使っても凍えるような思いを防ぐ下着として利用できる。

普段とは違う気候の場所でも、過ごしやすくければ見知らぬ地でのストレスも軽減されたりするので、出張先や移動中体が冷えたり暑かったり、持っていく下着の枚数を何枚にするか悩んでしまったりする時には、ジオラインやスポーツタイツを試してみてほしい。

2018年11月12日月曜日

IIJmio SIM カードが入った iPad Pro (2017) 10.5インチモデルで Apple SIM を使おうとして苦労した話

出張先(米国内)で内蔵 Apple SIM を使用して T-Mobile に接続しようとしたら、できなくて困った。



本来ならここで「データ通信プランを選択」というグループに、トレイに入っている SIM カードから NTT DoCoMo 、 Apple SIM で契約済みの T-Mobile 、そしてその他のキャリアへの新規加入が可能なメニュー選択肢が出るはず。

まずは IIJmio での接続に必要なAPNプロファイルを削除してみる。これが入っているとどちらにせよ T-Mobile で通信できないだろう。削除しても、 T-Mobile や Apple SIM の選択肢は出てこなかった。

次に iOS をリスタートしてみる。残念ながらこれでも改善しなかった。

続いて、 General > Reset > Reset Network Settings でネットワーク系の設定をリセットしてみる。これでも Apple SIM が見えない。困った。

Apple Support アプリから現地のサポートにチャットで相談してみたら、下記のとおりアドバイスをもらった。

・SIMスロットに入っている SIM カードを取り外してみる。
・それでだめならバックアップをとって Factory Reset (ひえー)

SIM スロットには IIJmio (DoCoMo)の SIM が刺さりっぱなし。そういえば前回渡米したときは IIJmio じゃなくて、さくらインターネットのセキュアモバイルコネクトを挿していたはずなので、前回問題なかった時とは状況が違うのは確か。

SIM スロットをイジェクトするピンを持ち合わせていなくて困ったのだが、宿泊先の施設に知っている日本人が泊まっていて(笑)ピンを借りることができた。で、 IIJmio の SIM カードを取り外してみると。。。



おうー。まじかよ! T-Mobile きましたわー。
ということで一件落着。

・IIJmio (DoCoMo) SIM が挿さった状態だと Apple SIM が見えない?状態になる
・この状態だと「データ通信プラン」(英語表記では Celluar Plans)が出てこない。
・SIM カードを抜くと Apple SIM が見える、ことが実際におきた
・出張セットのなかには SIM カード取り出し用のピンを忘れずに入れておくようにしましょう