Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Machine Learning Casual Talks #8 LT

Machine Learning Casual Talks #8 LT

Machine Learning Casual Talks #8
https://mlct.connpass.com/

分散深層学習
Distributed deep learning

vaaaaanquish

January 28, 2019
Tweet

More Decks by vaaaaanquish

Other Decks in Technology

Transcript

  1. In Yahoo! JAPAN  ▶ kukaiによる分散深層学習 (P100 * 2 * 80)

    - マルチモーダルなDNNモデルを用いたヤフオク! 偽物検知 (https://about.yahoo.co.jp/pr/release/2018/11/30a/) - LSTMによる知恵袋の不快投稿検知 (https://headlines.yahoo.co.jp/hl?a=20181102-00000007-zdn_n-sci) - DNN-HMMによる音声認識YJVOICE (https://www.slideshare.net/techblogyahoo/yjvoice) - 画像検索、分類…etc More info: Yahoo! JAPAN、ディープラーニングに特化したスパコンを開発 スパコンの省エネランキング「 GREEN500」にて世界第2位を獲得 https://about.yahoo.co.jp/pr/release/2017/06/19b/ * 画像はhttp://www.hpc.co.jp/zettascaler1.6.htmlより引用 4
  2. 5 偽物検知モデル Kaggle Avito Demand Prediction Challenge 1st solution https://www.kaggle.com/c/avito-demand-prediction/discussion/59880

    より ▶ Avitoコンペ 1st solutionを参考にした マルチモーダルCNN ▶ Kukaiで最大GPU60個使った分散深層学習 ▶ コンペのモデルを参考にレイヤーの幅や 層数、初期パラメータ、Samplerなどの実験 ▶ Kerasで初期モデル作成、分散化、デプロイ起因で ChainerMN、MXNet、fasttextを利用 ▶ チャットbotとfabricを介した学習の仕組みで 前一ヶ月作ってたLGBMなどのモデル群を圧倒
  3. CtoCなe-commerceにおける違反検知の課題 ▶ 人が見るのには限界がある - 精度が重要 ▶ データのバラツキ - ニセモノを代表に違反者は全体から見れば少ない (Imbalance

    data) - カテゴリや価格帯、出品者(ストアetc)によって様々なバラツキ ▷ Samplerが重要 ▶ 常に新しい手法が出続ける - 画像や文言をちょっと変えて出すのが流行ったりする - ユーザの通報や人間の巡回で未学習な手法のデータが増えていく - 定期的な再学習が必要でありpre-trainとして再利用できるモデルは嬉しい → Overfitに注意する必要がある ▷ CVが重要 (目視で見る結果の採用) ▷ Samplerが重要 ▶ サービスの文化や変動の課題 - カテゴリや価格帯の変動、バースト - ある程度、長期間のデータを利用しつつデータ量に対して効率良く学習する必要 ▷ Samplerが重要 6 * ここでSamplerはChainerならDataset、iterators、PyTorchならDataLoader、Samplerといったクラス
  4. 7 深層学習に対する工夫 ▶ Samplerによる正例、負例のコントロール - 学習初期は負例が少なすぎて学習が進まないため5:5からスタート - 徐々に元のデータの比率に戻していく ▷ Random

    minority oversampling ▷ Random majority undersampling ▶ 機械学習向けカテゴリの再編とサンプリング - ヤフオクの末端カテゴリ数3万3千 + シンボリックリンク - 事業目的で枝分かれ (例:ファッション -> ブランド別 -> ... -> Tシャツ ### ファッション -> Tシャツ ->...) - 目視で全部見て、機械学習観点(テキスト、画像)でそれぞれ分類できる粒度にマッピング - マッピングした辞書の情報を参考に学習データを収集していく ▶ Categoricalやそれらになり得る情報をEmbeddingレイヤーで表現 - 商品カテゴリなどをEmbeddingする事でカテゴリの位置関係を考慮できる - 数値でも出品時価格などで有効 • 偽物かの判定における「数値的な大きさ」の相関小さい特徴量 • [-1, 1, 100, 1000, 5000, 10000, 20000, ….]とrangeを設定しそのindexを取る (目視ノウハウが生きる) • サービスの特性として1円出品や負の値が発生するのもカバーしやすい ▷ Entity Embeddings of Categorical Variables  [1604.06737] Entity Embeddings of Categorical Variables
  5. 8 分散深層学習に対する工夫 ▶ 特定ノードでCVを出し現在精度の低いカテゴリの算出しSamplerへ - Samplingのweightにしたり、足りないカテゴリがあればデータ取得のためhadoopクエリを生成 ▷ Cluster-based sampling ▷

    [1801.04396] Cost-Sensitive Convolution based Neural Networks for Imbalanced Time-Series Classification ▷ [1710.05381] A systematic study of the class imbalance problem in convolutional neural networks ▶ 画像同士のphashを計算し同一画像を同一のBatch内でなるべく学習しないように - 特定ノードや空いているメモリ、CPUを計算用に使い計算、GPUに送信し次回以降のSamplerに利用 ▷ Class-aware sampling [ILSVRC-2015] Winner Solution] ▶ 複数のGPUを利用したパラメータ探索 - 現在は手動、今後自動にしていきたい ( Optunaとかはその方向性の雰囲気がある...? ) CV Data Aug Calc, Sampling Training, predict
  6. 12 ボトルネックとなるインターコネクトに対し Infinibandが使えるのは現状Azureかさくらだけ AzureのChainerポチポチ設定が強力 ChainerMNにdouble bufferingが入り 通信のボトルネックが削減された(2018年5月) AWSのインスタンス申請が厳しめか そのっつさんが各インスタンスで実験 Uber社のOSSであるHorovod良い

    OpenMPIを利用し少ないコード変更ですぐ分散 Deep Learning AMIが強力 生のdistributed TensorFlowが使いたい場合 コード書いてCloud MLのTF_CONFIG設定するだけで分散 (ノウハウや分散方法の違いもあり上に比べるとしんどい) 個人的なオススメのライブラリとクラウド