Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

ヤフー音声認識サービスでのディープラーニングとGPU利用事例

52.070 visualizaciones

Publicado el

Yahoo! JAPAN 音声認識プラットフォームでのディープラーニングの利用事例と,マルチGPUによる学習の検討
Chainer Meetup #03 http://chainer.connpass.com/event/32917/

Publicado en: Tecnología
  • Sé el primero en comentar

ヤフー音声認識サービスでのディープラーニングとGPU利用事例

  1. 1. 石井 敬章、○磯部 洋平、磯 健一 (ヤフー株式会社) ヤフー音声認識サービスで のディープラーニングとGPU 利用事例 2016年7月2日 Chainer Meetup #03
  2. 2. 自己紹介:ヤフー音声認識チーム • Yahoo! JAPANで使われる 音声認識プラットフォームを開発運用 • 音声認識エンジン&サーバ • スマホ用SDK(Android, iOS) • 組織概要 • データ&サイエンスソリューション 統括本部 • Yahoo! JAPAN研究所(磯) • サイエンス本部(石井,磯部) 2
  3. 3. 目次 1. 音声認識とディープラーニング 2. 学習高速化のためのマルチGPU実験 3. 学習高速化のための検討 3
  4. 4. ヤフーの音声認識サービス:YJVOICE • スマートフォン向け分散型音声認識 • 語彙数100万語(音声検索,対話) • 弊社Android, iOS向けアプリで導入 • 2011年3月サービス開始 • 2013年エンジン内製化 • 2015年5月にディープラーニング導入 4
  5. 5. YJVOICEの中のディープラーニング 5 音声認識エンジン 認識結果 ディープラーニングの 実装範囲 マイク入力 (音声波形) 「明日晴れます」 ※ 音響モデル:音声データから音素の特徴パターンを確率表現(モデル化)したもの ※ 言語モデル:大規模テキストから単語間の連続のし易さを確率表現(モデル化)したもの 音声区間 検出 音響モデル 言語モデル 単語列候補の出力 (例) 明日は ... 音素列候補の出力 (例) a sh i t a w a ... 音声区間のみ 切り出し 単語と単語の繋がり 易さを表現する知識 「あ」等の音を 表現する知識
  6. 6. DNNによる音声区間検出 音声区間 ③DNNによる 音声/非音声の判定 非音声 (雑音) 音声 ... ... ... ... ... ... . . . 音声 非音声 入力層 中間層 出力層 特徴量 ベクトル ニューラルネットワークの構造:DNN 6 ①音声波形の読込み ②音声波形から 特徴量を抽出 . . . . . . ... ... ... 特徴量ベクトル40次元 *11フレーム(認識対象1+前後5フレーム) =440次元を入力に利用 • 10ミリ秒ごとに“音声”or“非音声”を判別
  7. 7. DNNによる音響モデル • 10ミリ秒ごとに“音素”を判別 ③HMMによる 時系列方向 の処理 ①音声と判定された 特徴量を入力 ②DNNよる音素の推定 ... ... ... ... ... ... . . . /a/a/a/sh/sh/i/i/t/a/… /a/sh/i/t/a/… ※実際は前後のつながりを考慮したtriphone (sil-a+sh a-sh+i sh-i+t i-t+a ...) . . . 特徴量ベクトル40次元 *11フレーム(認識対象1+前後5フレーム) =440次元を入力に利用 言語処理(発音辞書・言語モデル)へ ... ... ... . . . 入力層 中間層 出力層 特徴量 ベクトル ニューラルネットワークの構造:DNN ... ...... sil-a+sh:0.9 a-sh+i:0.01 各発音記号の 事後確率 DNN-HMM hybrid 音響モデル 7
  8. 8. DNNによる性能の向上 • 既存手法から 誤り率が 30〜40%改善 • 音声検索1万発話 による文正解率 • 約3%(1/32)の 学習データ量でもDNN の方が精度が 高い • 耐雑音性能の向上 8 GMM (DNN=2048x5) 文正解率(%) 1/32 1/16 1/8 1/4 1/2 1 GMMの学習データ量を1として DNNの学習データ量を1〜1/32の場合での比較 ※ GMM : Gaussian Mixture Models これまでのデファクト音響モデル
  9. 9. DNN音響モデルの学習 • ツール • TheanoによるGPU学習 • データ量 • 1000時間以上の音声データ • 例:1000時間=590GB(360Mサンプル) • 1サンプル(10ミリ秒)=440次元 • 440次元*(float32)=1.7KB • 学習時間 • 例:1000時間, 2048x5層, 15epoch • Tesla M2090で約1ヶ月 • TITAN Xで約2週間 9
  10. 10. GPUを使ったDNN学習 • 学習データをGPUメモリに収まる サイズ(=チャンク)に分割しておく • 1チャンクごとに学習を行う • 学習時、予めGPUメモリに転送する • ミニバッチごとに転送すると効率が悪い 10 epoch1 チャンク1 チャンク2 チャンクN minibatchSGD→ … … 256 256 …
  11. 11. 雑音重畳学習 • データ拡張(Data Augmentation) • 手法イメージ • 様々なノイズを追加した学習データを 使用することで耐雑音性能を向上 • データ量が倍増 • 学習データ12000時間の事例など • Deep Speech 2(Baidu Research) 11 Data0 DataANoiseA Data0 NoiseAに 強いモデル 学習 … …通常の音声データ
  12. 12. モデルの学習に関する課題 • 学習データが多い・学習時間が長い • 例 • 1000時間分の学習データ590GB • TITAN Xで2週間 • 雑音重畳学習により学習データが倍増 →高速化が必要! 12
  13. 13. 学習高速化のための マルチGPU実験
  14. 14. マルチGPUによる学習 • 複数のGPUを使用して学習 • 手法 • モデル並列 • モデルを分割して全データを学習 • データ並列 • データを分割してモデルを共有 • DNN音響モデルの場合 →密結合なDNNなのでデータ並列 14
  15. 15. マルチGPUデータ並列の実験 実験1: 2GPUによる高速化 • 使用ツール 1. Theano(v0.7) • マルチGPU非対応 • 既存の学習スクリプトをデータ並列に 拡張 • 参考 https://github.com/uoguelph-mlrg/theano_multi_gpu 2. Chainer(v1.6) • マルチGPU, データ並列をサポート • チュートリアルを参考に実装 15
  16. 16. ChainerでマルチGPU試行錯誤 その1 1つ目のチャンクデータの処理が終わり, 2つ目のチャンクデータをGPUメモリに のせるとエラー • 原因:GPUメモリ上のcupy.ndarrayが 解放されなかった • 対応:解放されるように実装して回避 • フォーラムの情報が参考になった 16 チャンクのループ 終了時に明示↓ ↓”.copy()”でdeep copyするように明示して回避
  17. 17. ChainerでマルチGPU試行錯誤 その2 GPUに送ったチャンクデータ(cupy.ndarray)からVariableを 作成しようとするとエラー • 原因:cupy.ndarrayにx[1,9,5]のようなアクセスができない • どうやらcupyが未対応だった(v1.6) • チュートリアルのインデックスをシャッフルするやり方をそのまま 使用していた • 対応:GPUに送る前に学習データtrain_x, train_y(numpy)に同じシャッフルをし ておく • numpy.random.get_state()/numpy.random.set_state() • こちらもフォーラムに情報あり 17
  18. 18. マルチGPU結果(1) 1GPUの場合より遅 い • モデルパラメータの 同期がボトルネック • ミニバッチサイズを 大きくすることで改 善 →同期回数を減少 18 0 50 100 150 200 250 single-512 multi-256 single-1024 multi-512 single-2048 multi-1024 single-4096 multi-2048 512 1024 2048 4096 [sec] synctime calctime Theano, TITAN X *2,1024x5 0 50 100 150 200 250 300 350 400 single-512 multi-256 single-1024 multi-512 single-2048 multi-1024 single-4096 multi-2048 512 1024 2048 4096 Chainer, M2090*2,1024x4 ERROR
  19. 19. マルチGPU結果(2) 実験2: ミニバッチサイズとマルチGPUによる速度変化 19 • TheanoとTensorFlow(TITAN X*4, 同期SGD)を比較 • MAX:ミニバッチサイズ64倍&GPU*4で処理速度約4.7倍 • (まだまだ改良中:データ転送の効率化でもう少し高速化できそう) • 注:初期バッチサイズと同等の精度が出ない • 適切な学習率や初期値などのパラメータ探索が必要 74.2 23.7 25.9 15.8 0 10 20 30 40 50 60 70 80 256(x1) 16384(x64) 16384(x64) 16384(x64) 1GPU 1GPU 4GPU Theano TensorFlow 1sampleあたりの処理時間[usec] 3.1倍 1.6倍
  20. 20. マルチGPU考察 • モデルパラメータ同期がボトルネック • ミニバッチサイズを大きくする事で改善 • 学習パラメータ探索は必要 • GPU間通信が高速なHWがベター • GPUの構成を要確認 1. GPU-GPU間で直接通信可能なパターン 2. GPU間の通信にCPUの同期が必要な パターン • $ nvidia-smi topo --matrix コマンド 20
  21. 21. $ nvidia-smi topo --matrix コマンド例 21 とあるTITAN X x4環境でのコマンド結果 おそらくCPUを介さず通信できるのはGPU0-GPU1, GPI2-GPU3のみ
  22. 22. 学習高速化のための検討
  23. 23. 学習高速化のために考えること その1 • ハードウェアが重要 • GPU性能の向上 • M2090:1ヶ月→TITAN X:2週間→Pascal • Pascal 半精度演算(float16) • CUDA, cuDNN • CNN, RNNの高速化 • データの転送速度・転送効率 • 事例:Baidu Research • HWに合わせた低レイヤからの最適化 • Persistent RNNs • GPUのレジスタを活用してRNNを数十倍の高速化 23
  24. 24. 学習高速化のために考えること その2 • マルチGPUによる並列化 • デバイス間の高速な通信 (インターコネクト) • 例: Infiniband, NVLink • 非同期/分散の最適化アルゴリズム • asynchronous SGD • 通信するデータ量の削減 • 例: 1bit-SGD (Microsoft) 24
  25. 25. 学習高速化のために考えること その3 • 複数台での並列化(マルチノード) • Google • Distributed TensorFlow(r0.8) • Microsoft • CNTK: Computational Network Toolkit • 事例:Amazon • Strom, Nikko. "Scalable distributed dnn training using commodity gpu cloud computing." INTERSPEECH. Vol. 7. 2015. • 40台までリニアにスケール, 80台まで改善 25
  26. 26. まとめ • 音声認識のディープラーニングモデル学習 • 大規模な学習データ量 • 学習の高速化が求められる • 高速化のためのマルチGPU • フレームワークの対応状況 • パラメータの同期がボトルネック • ミニバッチサイズ(同期回数) • デバイス間通信の高速化 • 非同期/分散の最適化アルゴリズム • 通信データ量の削減 • マルチノード 26
  27. 27. ありがとうございました&お知らせ • Interspeech2016 http://www.interspeech2016.org • Sept. 8-12, San Francisco • 音声系の国際学会 • Gold Sponsor • ブース出展 • 採択:Yuya Fujita@音声チーム "Robust DNN-based VAD augmented with phone entropy based rejection of background speech" • 音声系エンジニアほかいろいろ募集中 → http://hr.yahoo.co.jp 27
  28. 28. 参考資料 • GTC JAPAN 2015 • 1011:ヤフー音声認識サービス「YJVOICE」におけるディープラーニング 活用事例 • https://youtu.be/PzyV7cPe5bk • ICASSP 2016 : Plenary talk (http://2016.ieeeicassp.org/PlenarySpeakers.asp) • Li Deng - Microsoft Research “Deep Learning for AI: From Machine Perception to Machine Cognition” • http://2016.ieeeicassp.org/SP16_PlenaryDeng_Slides.pdf 29
  29. 29. 参考資料 • Baidu Research : Deep Speech 2 Amodei, Dario, et al. "Deep speech 2: End-to-end speech recognition in english and mandarin." Proceedings of The 33rd International Conference on Machine Learning, pp. 173–182, 2016. • http://jmlr.org/proceedings/papers/v48/amodei16.html • https://arxiv.org/abs/1512.02595 30
  30. 30. 参考資料 • Theano : multi GPU • https://github.com/Theano/Theano/wiki/Using-Multiple-GPUs • https://github.com/uoguelph-mlrg/theano_multi_gpu • Using multiple GPUs — Theano 0.8.2 documentation • http://deeplearning.net/software/theano/tutorial/using_multi_gpu.html • Chainer User Group • Free memory of cupy.ndarray - Google グループ • https://groups.google.com/d/msg/chainer/E5ygPRt-hD8/YHIz7FHbBQAJ • ミニバッチ学習でのデータシャッフルの方法 (GPUを使って学習する場合) - Google グループ • https://groups.google.com/d/msg/chainer/ZNyjR2Czo1c/uNVeHuTXAwAJ 31
  31. 31. 参考資料 • Baidu Research : Persistent RNNs Diamos, Gregory, et al. "Persistent RNNs: Stashing Recurrent Weights On-Chip." Proceedings of The 33rd International Conference on Machine Learning, pp. 2024–2033, 2016. • https://svail.github.io/persistent_rnns/ • http://jmlr.org/proceedings/papers/v48/diamos16.html • https://github.com/baidu-research/persistent-rnn • Microsoft : 1bit-SGD Seide, Frank, et al. "1-bit stochastic gradient descent and its application to data-parallel distributed training of speech DNNs." INTERSPEECH. 2014. • https://www.microsoft.com/en-us/research/publication/1-bit-stochastic- gradient-descent-and-application-to-data-parallel-distributed-training-of- speech-dnns/ • http://www.isca-speech.org/archive/interspeech_2014/i14_1058.html 32
  32. 32. 参考資料 • Google : Tensorflow (Distributed Tensorflow) • https://www.tensorflow.org • https://research.googleblog.com/2016/04/announcing-tensorflow- 08-now-with.html • Microsoft : CNTK • https://cntk.ai • https://blogs.technet.microsoft.com/inside_microsoft_research/201 5/12/07/microsoft-computational-network-toolkit-offers-most- efficient-distributed-deep-learning-computational-performance/ 33
  33. 33. 参考資料 • Amazon Strom, Nikko. "Scalable distributed dnn training using commodity gpu cloud computing." INTERSPEECH. Vol. 7. 2015. • http://www.nikkostrom.com/publications/interspeech2015/strom_inter speech2015.pdf • http://www.isca-speech.org/archive/interspeech_2015/i15_1488.html 34

×