最近の気になったニュース 2017/02/27
プロセッサ関係
AMDのRyzen 7 CPUのベンチマークが公表,出荷間近
西川善司の3DGE:「RyzenはCore i7よりこれだけ速い」――AMDが披露したベンチマーク結果をチェックする - 4Gamer.net
AMDの新世代CPUであるRyzen 7のベンチマークスコアが発表され話題になっています. Intelの同価格帯の製品と比べて大幅な消費電力と価格性能比の向上を達成しているということです.AMDはしばらくハイエンドの市場では姿が見えず,APU等によって別市場の戦いを挑んでいた印象でしたが(Playstation 4とか),ハイエンドのCPU+ディスクリートGPUという戦いの市場に戻ってきたようです.
Deep Learningの隆盛によって,Intel CPU + NVIDIA GPUという鉄板コンビにガチンコで喧嘩を仕掛けにいくということでしょうか.NVIDIAにはPowerアーキテクチャのIBMというパートナーもいるので,AMD単体でハイエンド市場でどれくらい戦えるのか注目です.AMDがしばらく席を外している間にNVIDIAはNVLINK等のエコシステムを着実に育てつつあるのでAMDが食い込めるでしょうか.
7月までにサーバー用のシリーズも発売されるということなので,もしかしたらその頃にはRyzen CPUを大規模に搭載したスパコンが登場して2017 NovのTop500に登場するのかもしれません.
HPC関係
スパコンのメモリ構成の将来
スパコンのメモリ構成について論じている2つの記事があったので興味深く読みました.
3D Memory Sparks New Thinking in HPC System Design
Hopping the flash stepping stones to DIMM future • The Register
前者The next platformの記事では,従来のDIMMメモリと3Dスタックのメモリの優劣とトレードオフについて論じています.伝統的なHPL(High Performance Linkpack)ベンチマークでは,コアあたり2GB程度のメモリがベストであるのに対して,HPCG(High Performance Conjuagte Gradient:共益勾配法)ベンチマークではコアあたり0.5GB程度が最適だとしています.このような違いにより,容量増加が容易であるDIMMメモリと,容量増加が難しいが要領に比例した高速なアクセスを提供できる3Dメモリの適・不敵が決まってきます.単純な優劣ではなく,アプリに応じたトレードオフが重要だということです.
一方,後者のThe Registerの記事では,NVM(Non-volatile memory:不揮発性メモリ)とDRAMの組み合わせや階層化によって,それぞれの長所を活かした最適化が可能であると論じています.新しい技術を使って構築されるSCM(Storage class memory)や,DIMMとNVRAMを組み合わせて実現されるNVDIMMなどが,大容量と高速アクセスを両立しアプリケーションを大幅にスピードアップできるとしています.またそのためには,OSを始めとするソフトェアレイヤの適応の必要不可欠です.
実際,3D stacked memoryはNVIDIA P100 GPUを始めとするアクセラレーターにも搭載されており,これらはホストのメインメモリ(DIMM)との間である種の階層的なメモリ構造を構成しているということもできます.
AI・機械学習関係
Tensorflow 1.0 リリース
Research Blog: Announcing TensorFlow 1.0
Googleがリリースしている機械学習フレームワークのTensorflowの1.0リリースがアナウンスされました.詳細は各所で書かれていますが,速度の向上・柔軟性の向上に加えて,APIの安定化が盛り込まれているのが大きいと思います.Deep learningの開発競争と性能の向上はこれからも続くのでしょうが,APIの安定化というのは1つの大きな節目であり,業界が新しいステージに進んでいくことの象徴のように思います.
Allreduce操作をカスタマイズしてDLを高速化
Propelling Deep Learning at Scale at Baidu AI Lab
BaiduのSillicon Valley AI Laboratoryで,OpenMPIのring allreduceという技術を使ってTensorflowにパッチを当てて高速化を行っているそうです. MPIでは,通信のパターンが抽象化されてAPIとなっているので,その実装には様々なパターンが有りえます.特にOpen MPIは拡張性が高い設計となっているので,内部のコンポーネントを取り替えることでカスタマイズが可能な設計になっています.
Allreduceというのは,全体で値を集約(reduce)したあと,さらに結果の値を全プロセスに配信するという操作です.これは機械学習系の実装ではよく出てくる話で,各プロセスが分散して学習した結果の行列を互いに送信しあって同期するために使われます.
具体的な中身としては,GPU上に存在するデータに対してAllreduceをする際に,まず各GPU内でreduceを行い,それをさらにノード内(CPUメモリ)でreduceし,最終的にそれらをネットワーク越しにallreducするという実装のようです.こうすると,GPUからCPUへのメモリコピーを省略できるので高速化が図れるということです.
その他
Google Online Security Blog: Announcing the first SHA1 collision
SHA-1のハッシュ衝突を実用的な時間で達成したとGoogleが発表しています.ハッシュ関数は一方向性関数と呼ばれ,任意の長さのデータを短いビット数へと変換する関数です.重要な特徴として「ハッシュ化された結果から元のデータを推測できない」および「同じハッシュ値を持つことなるデータを発見するのは実用上不可能」という性質が有ります.今回の発表では,SHA-1というハッシュ関数において,同じハッシュ値を持つデータを意図的に生成することができ,結果として同じハッシュ値を持つ異なる2つのPDFファイルを生成することに成功したそうです.
サイボウズ・ラボの光成さんが解説スライドを上げられています.