3K Views
July 28, 22
スライド概要
CUDA高速化セミナーシリーズの第三回として、ソフトウェア高速化技術の基礎知識と深層学習技術の仕組みを説明し、その後深層学習における処理の高速化の手法について解説します。
深層学習に関連する研究又は開発業務を行っていて、学習・推論処理の高速化に興味がある方にオススメの内容となっております。
<講演内容>
・ソフトウェア高速化の基礎技術と深層学習技術の仕組みの解説
・深層学習における高速化についての解説
<過去資料>
・vol.1 画像処理アルゴリズムの高速化: https://www.docswell.com/s/fixstars/K24MYM-20220527
・vol.2 CUDAアーキテクチャの進化: https://www.docswell.com/s/fixstars/5RXQJ2-20220623
・vol.3 ソフトウェア高速化と深層学習:
https://www.docswell.com/s/fixstars/5DEJQD-20220728
・vol.4 TensorRT化のワークフロー事例紹介: https://www.docswell.com/s/fixstars/524MGM-20220825
・vol.5 画像処理アルゴリズムの高速化2:https://www.docswell.com/s/fixstars/ZQ81QX-20220929
フィックスターズは、コンピュータの性能を最大限に引き出すソフトウェア開発のスペシャリストです。車載、産業機器、金融、医療など、幅広い分野での開発経験があります。また、ディープラーニングや機械学習などの最先端技術にも力を入れています。 並列化や最適化技術を駆使して、マルチコアCPU、GPU、FPGA、量子アニーリングマシンなど、さまざまなハードウェアでソフトウェアを高速化するサービスを提供しています。さらに、長年の経験から培ったハードウェアの知識と最適化ノウハウを活かし、高精度で高性能なアルゴリズムの開発も行っています。 ・開催セミナー一覧:https://www.fixstars.com/ja/seminar ・技術ブログ :https://proc-cpuinfo.fixstars.com/
CUDA 高速化セミナー vol.3 ソフトウェア高速化と深層学習 Copyright © Fixstars Group
これまでのウェビナー紹介 資料は Speaker Deck をご覧ください https://speakerdeck.com/fixstars/ いまさら聞けない CUDA 高速化入門 https://speakerdeck.com/fixstars/imasarawen-kenai-cudagao-suhua-ru-men 画像処理アルゴリズムの高速化 https://speakerdeck.com/fixstars/cudagao-su-hua-seminavol-dot-1hua-xiang-chu-li-arugorizumufalsegao-su-hua CUDA アーキテクチャの進化 https://speakerdeck.com/fixstars/cudagao-su-hua-seminavol-dot-2cudaakitekutiyafalsejin-hua Copyright © Fixstars Group
本日のAgenda ● フィックスターズのご紹介 (15分) ● ソフトウェア高速化と深層学習(60分) ○ ソフトウェア高速化 ○ 深層学習 ○ GPUと高速化 ● Q&A ● 告知 Copyright © Fixstars Group 3
発表者紹介 冨田 明彦 二木 紀行 ソリューションカンパニー 執行役員 ソリューション第一事業部 エグゼクティブエンジニア 前職では組込み向けCPUのデジタル設計に携わ る。2008年にフィックスターズへ入社。金融、 医療業界において、ソフトウェア高速化業務に 携わる。その後、新規事業企画、半導体業界の 事業を担当し、現職。 理化学研究所でスーパーコンピュータを利用した バイオ系の研究に10年以上携わる。2010年にフ ィックスターズへ入社。GPUプログラムの高速化、 分散並列処理、深層学習のアーキテクチャ開発ま で、幅広く業務を担当。SC06でゴードン・ベル 賞を受賞。博士(薬学)、薬剤師。 Copyright © Fixstars Group 4
フィックスターズの ご紹介 Copyright © Fixstars Group
フィックスターズの強み コンピュータの性能を最大限に引き出す、ソフトウェア高速化のエキスパート集団 ハードウェアの知見 目的の製品に最適なハードウェアを見抜き、 その性能をフル活用するソフトウェアを開 発します。 アルゴリズム実装力 各産業・研究分野の知見 ハードウェアの特徴と製品要求仕様に合わ せて、アルゴリズムを改良して高速化を実 現します。 開発したい製品に使える技術を見抜き、実 際に動作する実装までトータルにサポート します。 Copyright © Fixstars Group 6
サービス概要 お客様専任のエンジニアが直接ヒアリングを行い、高速化を実現するために乗り越えるべき 課題や問題を明確にしていきます。 高速化のワークフロー コンサルティング 高速化 サポート 先行技術調査 アルゴリズムの改良・開発 レポートやコードへのQ&A 性能評価・ボトルネックの特定 ハードウェアへの最適化 実製品への組込み支援 レポート作成 Copyright © Fixstars Group 7
サービス提供分野 半導体 産業機器 金融 自動車 ●NAND型フラッシュメモリ向け ファームウェア開発 ●次世代AIチップの開発環境基盤 生命科学 ●Smart Factory実現への支援 ●マシンビジョンシステムの高速化 ●自動運転の高性能化、実用化 ●ゲノム解析の高速化 ●次世代パーソナルモビリティの 研究開発 ●医用画像処理の高速化 Copyright © Fixstars Group ●デリバティブシステムの高速化 ●HFT(アルゴリズムトレード)の高速化 ●AI画像診断システムの研究開発 8
サービス領域 様々な領域でソフトウェア高速化サービスを提供しています。大量データの高速処理は、 お客様の製品競争力の源泉となっています。 組込み高速化 GPU向け高速化 AI・深層学習 画像処理・アルゴリズム 開発 FPGAを活用した システム開発 分散並列システム開発 量子コンピューティング 自動車向け フラッシュメモリ向けフ ソフトウェア開発 ァームウェア開発 Copyright © Fixstars Group 9
AI・深層学習向け技術支援 AIを使うためのハードウェア選定や、高速な計算を実現する ソフトウェア開発技術で、お客様の製品開発を支援します。 お客様の課題 ご支援内容 推論精度を維持したまま計算時間を短縮 したい 組込みデバイス向けにAIモデルを軽量化 AIモデル設計 データの前処理・後処理 したい 推論精度の改善 学習計算を高速化して研究開発を効率化 したい 分散処理による学習高速化 精度と計算時間を両立するAIモデルを モデル圧縮・推論の高速化 開発したい Copyright © Fixstars Group
画像処理アルゴリズム開発 高速な画像処理需要に対して、経験豊富なエンジニアが 責任を持って製品開発をご支援します。 お客様の課題 ご支援内容 高度な画像処理や深層学習等のアルゴリズム を開発できる人材が社内に限られている アルゴリズム調査・改変 課題に合ったアルゴリズム・実装手法を調査 製品実装に向けて適切な改変を実施 機能要件は満たせそうだが、ターゲット機器 上で性能要件までクリアできるか不安 深層学習ネットワーク精度の改善 様々な手法を駆使して深層学習ネットワークの精度を改善 製品化に結びつくような研究ができていない 論文調査・改善活動 論文調査から最先端の手法の探索 性能向上に向けた改善活動を継続 Copyright © Fixstars Group
GPU向け高速化 高性能なGPUの本来の性能を十分に引き出し、 ソフトウェアの高速化を実現します。 お客様の課題 ご支援内容 GPUで計算してみたが期待した性能が出ない GPU高速化に関するコンサルティング GPU/CPUを組み合わせた全体として最適な CPU・GPU混在環境でのシステム設計 設計がしたい アルゴリズムのGPU向け移植 原価を維持したまま機能を追加するため、も う少し処理を速くしたい GPUプログラム高速化 品質確保のため、精度を上げたく演算量は増 継続的な精度向上 えるが性能は維持したい Copyright © Fixstars Group
深層学習適用時の課題と本講演でのアプローチ 1. 学習・推論に時間がかかりすぎる! 2. 学習・推論の処理を速くするには? ○ GPU を使う? ○ なぜ処理を速くできる? 3. 深層学習の高速化に向けて基礎技術を おさえよう! ○ ソフトウェアの高速化技術 ○ 深層学習の仕組み Copyright © Fixstars Group 13
ソフトウェア高速化と深層学習 Copyright © Fixstars Group
アジェンダ ● ソフトウェア高速化 ● ● ○ ソフトウェア高速化とは何か? ○ 速度×電力×場所 ○ 高速化を行うためのハードウェア ○ 高速化の手段 深層学習 ○ 深層学習と高速化 ○ ニューラルネットワーク ○ 「推論」と「学習」 ○ 畳み込みニューラルネットワーク(CNN) ○ 誤差逆伝播法 ○ バッチ処理 ○ 行列計算 GPUと高速化 ○ 分散並列化 ○ さらなる高速化 Copyright © Fixstars Group 15
ソフトウェア高速化とは何か? ● プログラムを速くすること ● 例えば、あるリストを昇順に並び替えるプログラムが遅いので速くしたい ○ 速いアルゴリズムを使用 ■ 遅い: 隣接する値を比較して入れ替えていくバブルソート ■ 速い: ある基準値未満と以上の2グループに分割して処理していくクイックソート ○ 既存のライブラリやフレームワークを使用 ○ 速いコンピュータを使用 ○ 既にソート済みの数列を使用 ● 目的を達成できればOK ○ 条件と制約 – 高速化をするにあたり検討 Copyright © Fixstars Group 16
速度×電力×場所 どれだけ速くする 必要があるのか? どのくらい電力を 使えるのか? Copyright © Fixstars Group どれだけの場所を 用意できるのか? 17
速度 ● 速度は高速化の主目的 ● 必要な速度 ○ 実行される関数の速度 ○ システム全体の速度 ● 目的と手段 ○ 目的を明確にする ○ 取りえる手段を確認 Copyright © Fixstars Group 18
電力 ● 高速化の対象となるコンピュータ ○ 車載デバイス ○ スマートフォン ○ PC ○ クラウドコンピュータ ○ スーパーコンピュータ ● 電力とコスト ○ どれだけの電力が利用できるか? ○ 高速化による利益よりも電力のコストが上回っていない か? Copyright © Fixstars Group 19
場所 ● 利用場所は様々 ○ オフィスのデスク ○ サーバルーム ○ データセンター ○ 自動車 ○ クラウドサービス ● PC内のスペース ○ GPUのボードは何枚搭載可能か? ● セキュリティ ○ ネットワーク利用の有無 Copyright © Fixstars Group 20
高速化を行うためのハードウェア ● CPU ● GPU ● FPGAとASIC ● クラウドコンピューティング ● エッジデバイス ● 高性能コンピューティング(HPC) ● 量子コンピュータ Copyright © Fixstars Group 21
CPU ● 一般的なPCに搭載され、プログラムを実行・ 処理 ○ 高性能あればより高速に動作 ● アセンブリに近い低レベルでのコードにより CPU の機能や特性を活用した高速化が可能 ● 1つのCPU内に複数のコアを搭載 ○ マルチコア・メニーコア ○ 計算処理をそれぞれのコアで分担した並列処理によ る性能向上が可能 Copyright © Fixstars Group 22
GPU ● グラフィックス演算処理装置 ○ 画像処理に特化した演算装置 ● 画像処理以外の用途に利用 ● GPUに搭載された数千個のコアを利用するこ とで大規模な並列計算が可能 ● 大規模な並列計算や浮動小数点数演算が得意 ○ 深層学習による演算処理と親和性が高い ○ さまざまな深層学習系ライブラリを提供 ○ 学習・推論時の高速演算に利用 Copyright © Fixstars Group 23
FPGAとASIC ● FPGA (Field Programmable Gate Array) ○ プログラミング可能な集積回路 ○ 作成した集積回路は後から書き換え可能 ■ 目的に合わせた処理が可能 ● ASIC(Application Specific Integrated Circuit) ○ ○ ○ ○ ○ 設計後の変更が困難 初期投資に費用がかかる 消費電力が低い 動作が高速 大量に生産する場合に単価が安い ● 集積回路の設計には、Verilog HDLやVHDLなどの ハードウェア記述言語を利用 Copyright © Fixstars Group 24
クラウドコンピューティング ● コンピュータネットワークを介して、コンピュータの処理 能力をサービスとして遠隔から提供 ○ AWS (Amazon Web Services) ○ GCP (Google Cloud Platform) ● 手元の端末が貧弱であってもクラウド側のサーバが処理を ● することで高度で高速な演算が可能 利用者は電力やスペースの制約を考慮する必要がない ● セキュリティの厳しいスタンドアロンのシステムなどでは 利用が困難 ○ ネットワークの外に出せないような機密データ ● レイテンシが重要視されるシステムには向かない Copyright © Fixstars Group 25
エッジデバイス ● インターネットに接続された装置のこと ○ スマートフォン ○ インターネット家電 ● クラウドコンピューティングにより情報を高速に処 理可能 ● エッジデバイス側で高度な処理を行うエッジコンピ ューティング ○ ネットワークの遅延やサーバの負荷を低減し、高性能演算を 可能に ○ エッジデバイスにおける高速化はシステム全体へ大きく寄与 Copyright © Fixstars Group 26
高性能コンピューティング(HPC) ● HPCとは、科学技術計算などを主とした非常に 処理性能が高い計算処理のこと ○ 多数のCPUコアと超高速のネットワークシステムを搭載 ○ ネットワーク上に存在する複数のコンピュータシステム と連携し分散処理 Copyright © Fixstars Group 27
量子コンピュータ ● 従来のコンピュータでは現実的な時間で解くことが困難な問 題に対して、量子力学的な現象を利用して効率的に解くため のコンピュータ ● 量子力学的な現象 ○ 2つ以上の状態を同時に取り得る事象 ○ 「量子ビット」で表現 ○ 複数の状態を表現できる量子ビットに対して量子力学的な操作を行い、 それらを観測することで結果を得る ● まだ開発途上の技術 ○ 一般的に利用できるようになるまでにはしばらくかかる見込み ○ 組合せ最適化問題に特化している量子アニーリングマシン ○ NISQと呼ばれる誤り訂正機能のない量子コンピュータ Copyright © Fixstars Group 28
高速化の手段 ● 定数倍高速化 ● アルゴリズムの改善 ● ライブラリの利用 Copyright © Fixstars Group 29
定数倍高速化 ● コンピュータによる計算処理を改良・改善する ことにより計算量のオーダーを変えずに高速化 すること ○ 計算負荷の高い除算を減らす ○ キャッシュを効率的に利用 ○ コンパイラのオプションを調整して最適化 ● 本質的な計算アルゴリズムを変更せずに高速に 処理されるような改変全般が対象 Copyright © Fixstars Group 30
アルゴリズムの改善 ● 低レイヤを最適化の対象とした定数倍高速化に対 して、アルゴリズムの改善による高速化は極めて 効果を期待できる場合がある ○ 高速なアルゴリズム ○ 近似アルゴリズム ○ 並列化アルゴリズム ● 計算量オーダーのレベルで高速化 ○ バブルソート(𝑂 𝑛2 )とクイックソート(𝑂 𝑛 log 𝑛 ) Copyright © Fixstars Group 31
ライブラリの利用 ● 最適化されたライブラリやフレームワークの使用して高速化 ● GPUを利用した汎用深層学習ライブラリ ○ PyTorch ○ TensorFlow ● NVIDIA GPUによる深層学習用ライブラリcuDNN ○ 深層学習ライブラリのコア技術として組み込まれる ● 推論の実行に関しては、複数レイヤにまたがる処理に対してメモ ● リ使用量の削減やカーネルの最適化を行うTensorRT 数値演算の高速化 ○ Intel CPU用のMKL (Math Kernel Library) ○ NVIDIA GPU用のcuBLAS Copyright © Fixstars Group 32
高速化を行う前に ● 調査・分析・検証 ○ 対象を調べて必要なことを見つける ● プロファイリング ○ 対象を調べる方法の一つであり、各関数の実行 時間や呼び出し回数などがわかる ● ボトルネック ○ 最も時間のかかる場所のことであり、そこを改 善することにより全体の性能が顕著に向上 ● リファクタリング ○ 直接の性能を向上させるものではなく、改善や 改良を行う際に高い作業効率が期待できる Copyright © Fixstars Group 33
深層学習と高速化 ● 深層学習について ○ 単純なニューラルネットワークから始まり、複雑な CNNやRNNなどの様々なアーキテクチャが存在する ○ 「学習」によりニューラルネットワークモデルを作り、 そのモデルを使って「推論」を行う ● 高速化の必要性 ○ 深層学習のアーキテクチャのほとんどは膨大な計算を 行う必要がある ○ 深層学習を行う対象や環境は様々であり、それぞれに 適した処理能力が必須となる ● 速度と精度 ○ 深層学習を利用する上で精度は最も重要 ○ 環境や目的に合わせて判断する必要がある Copyright © Fixstars Group 34
ニューラルネットワーク ● 脳の神経細胞(ニューロン)を模した、相互に接続する複数のノードからなる 多数のネットワーク層を持つモデルのこと ● 大量のデータを用いて「学習」を行い、学習されたモデルから分類や予測な どの「推論」をする ニューラルネットワーク モデル 「学習」により 作られる 「推論」で答 えを求める Copyright © Fixstars Group 35
「推論」と「学習」 ● ニューラルネットワークモデル ○ 計算に必要な複数のパラメータを持ち、多くの場合、それを多層で表現される ● 推論とはモデルを使って結果を求めること ○ 入力データに対して、モデルの持つパラメータを使って計算を行い、出力結果を得る ● 学習とはモデルのパラメータを決定すること ○ 学習データを使って、モデル内のパラメータを計算で決定する Copyright © Fixstars Group 36
ニューラルネットワークの仕組み: 推論の計算(1) 入力層 中間層 中間層 パラメータ パラメータ 中間層 パラメータ Copyright © Fixstars Group 出力層 パラメータ 37
ニューラルネットワークの仕組み: 推論の計算(2) A A 重み B B C C バイアス パラメータ × a B × b C × c D 中間層 入力層 入 力 層 の ノ ー ド 数 分 A + 中 間 層 の ノ x A ー ド 数 分 が 必 活性化関数 要 の適用 = ネットワーク層の分だけ必要 Copyright © Fixstars Group 膨 大 な 計 算 量 が 必 要 38
Softmax Affine ReLU Affine ReLU Affine ReLU ○ 前述のネットワークモデル ReLU Affine ● 全結合層 Affine 畳み込みニューラルネットワーク(CNN) ● CNNの構造 ○ Convolutionレイヤ(畳み込み層) Copyright © Fixstars Group Softmax Affine ReLU Affine ReLU Conv Pooling ReLU Conv Pooling ReLU Conv ○ Poolingレイヤ(プーリング層) 39
畳み込み層 ● 各層を流れるデータは形状のあるデータ ○ 3次元データなど ○ 画像は通常、縦・横・チャンネルの3次元形状 ● 全結合層の問題点 ○ データの形状が反映されない ○ 全結合層の入力では1次元に変換が必要 ○ 画像は3次元の形状で、これには空間的情報が含まれている ● 畳み込み層は形状を維持する ○ 畳み込み層の入出力データを特徴マップと呼ぶ Copyright © Fixstars Group 40
畳み込み演算(1) ● 畳み込み層では畳み込み演算を行う ○ 画像処理では「フィルター演算」に相当 ○ フィルターごとに積和演算を行う 1 0 2 3 1 2 0 2 2 1 1 0 入力データ 0 3 2 ⊙ 2 0 1 0 2 1 1 0 1 12 9 5 14 1 フィルター Copyright © Fixstars Group 出力データ 41
畳み込み演算(2) 1 1 2 0 2 0 2 1 3 2 0 1 2 3 2 0 1 1 1 2 0 0 2 1 3 2 3 0 2 1 0 2 ⊙ ⊙ 0 1 12 0 2 1 1 0 1 2 0 1 0 2 1 1 0 1 12 9 1 Copyright © Fixstars Group 42
畳み込み演算(3) 1 1 2 0 2 0 2 1 3 2 0 1 2 3 2 0 1 1 1 2 0 0 2 1 3 2 3 0 2 1 0 2 ⊙ ⊙ 0 1 12 0 2 1 1 0 1 2 0 1 0 2 1 1 0 1 9 5 12 9 5 14 1 Copyright © Fixstars Group 43
畳み込み演算(4) ● 畳み込み演算のバイアス ● つねにバイアスは一つだけ (1 × 1) 1 1 2 0 0 2 1 3 2 0 1 2 ⊙ 2 0 1 0 2 1 1 3 2 0 入力データ 0 12 9 5 14 + 15 12 8 17 3 1 1 フィルター Copyright © Fixstars Group バイアス 出力データ 44
3次元データの畳み込み演算 1 4 1 0 2 3 0 3 1 0 1 3 2 2 0 2 2 0 1 0 3 1 2 0 1 4 1 0 4 3 0 2 0 2 0 1 3 0 2 2 1 3 0 1 2 3 0 2 0 ⊙ 2 0 1 0 1 0 0 1 1 0 0 1 1 0 3 1 0 2 1 3 2 0 39 33 2 15 44 0 2 1 入力データ フィルター 出力データ 入力データとフィルターのチャンネル数は同じ値にする必要がある Copyright © Fixstars Group 45
プーリング層 ● プーリング層は、縦・横方向の空間を小さくする演算 ● Maxプーリングの例 ○ 2×2のMaxプーリングをストライド2(2マスずらしながら計算)で行った場合 1 1 2 0 0 2 1 3 2 3 2 0 1 2 3 2 3 2 0 1 Copyright © Fixstars Group 46
プーリング層の特徴 ● プーリング層の特徴: ○ 学習パラメータがない ○ チャンネル数は変化しない ○ 微小な位置変化に対して影響をあまり受けない 1 4 1 0 2 3 0 3 1 0 1 3 2 2 0 2 2 0 1 0 3 1 2 0 1 4 1 0 4 3 0 2 0 2 0 1 3 0 2 2 1 3 0 3 2 4 0 2 2 3 1 3 4 3 4 3 2 2 2 1 入力データ 出力データ Copyright © Fixstars Group 47
誤差逆伝播法 ● 前述のネットワークモデルの 計算を計算グラフで表現して みる 入 力 層 の ノ ー ド 数 分 A × a B × b C × c + 中 間 層 の ノ x A ー ド 数 分 が 必 活性化関数 要 の適用 = ネットワーク層の分だけ必要 Copyright © Fixstars Group 48
計算グラフ: 順伝播 A x × a + + 活性化 関数 A B × バイアス b 入力層 C dot × c + 活性化 関数 中間層 重み Copyright © Fixstars Group 49
計算グラフ: 逆伝播 バイアス 入力層 微分 dot 微分 重み + 微分 活性化 関数 中間層 微分 微分 出力された値 と正しい値の 差(loss)から 逆伝播 微分 パラメータ(重みとバイアス)に対して微 分によって求めた変化量分だけ値を修正 変化量がなくなるまで繰り返して最終的 なパラメータを求める → ネットワークモデルの完成 Copyright © Fixstars Group 誤差逆伝播法 50
バッチ処理 ● 入力データを一つずつ計算せずに、まとめて 計算すること ● 入力データはネットワークモデル(パラメータ) に対して内積計算を行うが、複数の入力デー タをまとめて行列として扱うことで効率的に 計算できる ○ 複数のデータを一つずつ処理する際のオーバヘッドの 削減 ○ 行列計算に最適化されたライブラリの利用 ○ GPUを利用することでさらに高速化 Copyright © Fixstars Group 51
行列計算 ● 行列計算はGPUによる高速化が可能 ● CNN内の計算 ○ 畳み込み層やプーリング層では3次元以上のデータを扱う必要がある ■ 例えば、高さ・横幅・チャンネル(RGBなど)・データ数(バッチ処理による)の4次元の データ ○ 3次元以上のデータを2次元に変換 ■ フィルターの適用領域が重なる場合、メモリ消費は大きくなる ○ 入力データとフィルターを2次元に変換し内積を取る ○ 最後に出力データの次元を変換すれば完了 ● ループ処理のオーバヘッド削減や最適化された内積演算プログラムの利用に より高速化を期待できる Copyright © Fixstars Group 52
行列計算 変換例 入力データ 2 0 1 0 2 3 1 3 1 2 0 1 0 2 3 1 3 1 2 0 1 0 2 3 1 3 1 6 6 6 3 0 6 6 4 1 2 4 2 0 1 2 3 0 2 1 2 3 3 0 2 3 1 3 1 2 0 0 1 0 フィルタ 6 0 0 0 1 2 2 1 × Copyright © Fixstars Group 53
GPUと高速化 ● NVIDIAなどによるGPUデバイスでは深層学習に特化した最適化・高速化された ● ● ● ● ライブラリや深層学習フレームワークなどの利用 深層学習フレームワークで対応していなかったり、利用したい機能が実装されて いるとは限らない ライブラリの関数を直接利用する、デバイスに特化したコードを専用に記述する 必要がある ライブラリにされていないような最新技術の利用や、対象のデータ構造を利用し た効率的なメモリアクセスを考慮するような最適化を行う場合なども独自に設 計・実装が必要 PyTorchやTensorFlowなどの深層学習フレームワークのソースコードに対し、 必要なコードを追加・修正することで対応 Copyright © Fixstars Group 54
分散並列化 ● 複数のコンピュータを使って計算を行う分散並列化による高速化 ○ データ転送のためのネットワーク帯域がボトルネックになる可能性 ○ 物理的にネットワークを高速にしたり、データ転送を少なくするようなアルゴリズムを適用 ● データ並列 ○ 複数のプロセスそれぞれに同じニューラルネットワークモデルを複製して、それらに対して分割した入力デ ータを計算させる方法 ○ 各データはそれぞれのプロセスで計算され、通常はパラメータの更新時に各プロセスを同期 ● モデル並列 ○ 1つのニューラルネットワークモデルに対し複数のプロセスを割り当てて計算させる方法 ○ 1台のコンピュータでは扱いきれないような巨大なパラメータを持つモデルでも複数のコンピュータを使って 演算処理が可能 ○ 実装が煩雑でプロセス間のデータ通信量がボトルネックになりやすいという欠点がある ● 最近の深層学習フレームワークの多くが分散並列処理の機能を有している ○ PyTorch ○ TensorFlow Copyright © Fixstars Group 55
さらなる高速化 ● ● ● ● 畳み込み演算の高速化 ○ 高速フーリエ変換(FFT) ○ Winogradアルゴリズム ○ NVIDIA cuDNNライブラリで実装 枝刈り ○ ネットワークモデルのパラメータが0に近いなど、計算結果に影響が小さいと判断される要素を省き疎行列にすること ○ データサイズが小さくなることで計算量が少なくなり高速化が期待される 量子化 ○ 小さいビット数で表現することでデータサイズを小さくする ○ 近年では16 ビットで表現される半精度浮動小数点演算を搭載したハードウェアが登場 ○ 半精度浮動小数点演算ではデータサイズが通常の半分になることから消費メモリが少なく済み、半精度演算に特化した GPUの機能により高速演算が可能 二値化 ○ 重みなどを1ビットとして扱うことで、使用メモリ量の削減と演算速度の高速化が期待 ○ ハードウェア的にメモリ制約が厳しいFPGAやエッジデバイス上で顕著な効果が見込まれる Copyright © Fixstars Group 56
まとめ「高速化×深層学習×GPU」 ● 高速化×深層学習 ○ 高速化の目的や対象、環境などにより、様々な手段や方法がある ○ 深層学習は様々な状況で利用されており、高速化についても多様な方法がある ○ 深層学習は現実的な時間で実行可能な方法を備えているが、それでも膨大な計算量を処理す るためにさらなる高速化が求められている ● 深層学習×GPU ○ GPUは深層学習に対する高速化に大きく寄与している ○ GPUは深層学習に特化した複数の機能を組み込んでいる ○ 目的とコストの観点からも、現状では深層学習の実用化に必須のデバイスとなっている Copyright © Fixstars Group 57
Thank you! お問い合わせ窓口 : [email protected] Copyright © Fixstars Group