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

ソフトウェア高速化の専門家による挑戦! kaggle コンペ入賞への技術アプローチ

ソフトウェア高速化の専門家による挑戦! kaggle コンペ入賞への技術アプローチ

2021年12月8日に開催した「ソフトウェア高速化の専門家による挑戦!kaggle コンペ入賞への技術アプローチ」のセミナー資料です。

More Decks by 株式会社フィックスターズ

Other Decks in Programming

Transcript

  1. Fixstars Group www.fixstars.com Copyright © Fixstars Group Copyright © Fixstars

    Group ソフトウェア高速化の専門家による挑戦! kaggle コンペ入賞への技術アプローチ
  2. Fixstars Group www.fixstars.com Copyright © Fixstars Group 本日のアジェンダ 2 15:00-15:10

    15:10-15:50 15:50-16:00 フィックスターズの紹介 kaggle最適化コンペ入賞への技術アプローチ紹介 kaggleコンペ参加活動と Conway コンペ課題 問題設定と評価 解法の検討 高速化 結果考察 Q&A 告知
  3. Fixstars Group www.fixstars.com Copyright © Fixstars Group 発表者情報 3 •

    冨田 明彦(とみた あきひこ) ソリューションカンパニー 営業企画執行役 2008年に入社。金融、医療業界に おいて、ソフトウェア高速化業務に 携わる。その後、新規事業、半導体 業界の事業を担当し、現職。 • 飯塚 康太(いいづか こうた) ソリューション第二事業部 シニアエンジニア 2019年入社。車載向けの深層 学習アプリケーション、特に 物体検出・トラッキングの開発を 担当している。
  4. Fixstars Group www.fixstars.com Copyright © Fixstars Group 5 会社概要 会社名

    株式会社フィックスターズ 本社所在地 東京都港区芝浦3-1-1 msb Tamachi 田町ステーションタワー N 28階 設立 2002年8月 上場区分 東証一部(証券コード:3687) 代表取締役社 長 三木 聡 資本金 5億5,446万円(2021年9月現在) 社員数(連 結) 258名(2021年9月現在) 主なお客様 キオクシア株式会社 株式会社日立製作所 株式会社ネクスティ エレクトロニクス キヤノン株式会社 グループ体制 株式会社フィックスターズ 株式会社Fixstars Autonomous Technologies Fixstars Solutions, Inc. 株式会社ネクスティ エレクトロニクスとのJV 自動運転向けソフトウェアを開発 当社完全子会社 米国での営業及び開発を担当 株式会社Sider 株式会社Smart Opinion 当社完全子会社 開発支援SaaS「Sider」を運営 連結子会社 乳がんAI画像診断支援事業を運営 オスカーテクノロジー株式会社 連結子会社 ソフトウェア自動並列化サービスを提供 株式会社Fixstars Amplify 完全子会社 量子コンピューティングのクラウド事業を運営
  5. Fixstars Group www.fixstars.com Copyright © Fixstars Group ソフトウェア高速化サービス (概要) お客様のソースコードをご提供いただき、

    最適化やアルゴリズムの改良を施して高速化してお返しします 当社 お客様 オリジナルソースコードのご提供 高速化したソースコード コンサルティング 高速化 サポート 性能評価 ボトルネックの特定 アルゴリズムの改良・開発 ハードウェアへの最適化 レポート作成 レポートやコードへのQ&A 実製品への組込み支援 7
  6. Fixstars Group www.fixstars.com Copyright © Fixstars Group ソフトウェア高速化サービス 様々な領域でソフトウェア高速化サービスを提供しています 大量データの高速処理は、お客様の製品競争力の源泉となっています

    ・NAND型フラッシュメモリ向け ファームウェア開発 ・次世代AIチップ向け開発環境基盤開発 Semiconductor ・デリバティブシステムの高速化 ・HFT(アルゴリズムトレード)の高速化 Finance ・自動運転の高性能化、実用化 ・次世代パーソナルモビリティの研究開発 Mobility ・ゲノム解析の高速化 ・医用画像処理の高速化 ・AI画像診断システムの研究開発 Life Science ・Smart Factory化支援 ・マシンビジョンシステムの高速化 Industrial 8
  7. Fixstars Group www.fixstars.com Copyright © Fixstars Group 組込みソフトウェア高速化サービスの例 • お客様の課題

    • 対象アルゴリズムの実機性能が確認できないと商品化に踏み切れない • 製品開発に取り組むための目標性能を達成できない • プロセッサが変わるたびに最適化する実装の作業コストが高い • 低スペックのプロセッサで処理できるようにしてハードウェアコストを下げたい • 弊社の支援内容 • H/W選定に向けたコンサルティング • ターゲットH/Wに向けたお客様アルゴリズムの移植 • ボトルネック調査、最適化方針提案、実施 • 目標性能未達の見込みの場合、アルゴリズム改善の提案 9
  8. Fixstars Group www.fixstars.com Copyright © Fixstars Group 画像処理・アルゴリズム開発サービスの例 出展:https://www.cs.toronto.edu/~frossard/post/vgg16/ •

    お客様の課題 • 高度な画像処理や深層学習等のアルゴリズム開発を行える人材が社内に限られている • 考案中のアルゴリズムで機能要件は満たせそうだが、ターゲット機器上で性能要件まで クリアできるか不安 • 製品化に結びつくような研究ができていない • 弊社の支援内容 • 課題に応じたアルゴリズム調査 • 深層学習ネットワーク精度改善、推論高速化手法調査 • 論文調査、実装 10
  9. Fixstars Group www.fixstars.com Copyright © Fixstars Group AI・深層学習関連サービス 11 •

    ディープラーニングの包括的開発技術 • ネットワーク設計からターゲットデバイスでの高速化のノウハウ • 大規模システムからエッジコンピューティングまでの開発実績 ネットワーク設計 データの前処理、データ拡張 精度改善 分散処理による学習高速化 各種DLフレームワーク クラウド・サーバ エッジ モデル圧縮 - 量子化 - 枝刈り - 蒸留 ターゲットデバイスへの ポーティング及び推論高速化 ◼ ARM, GPU, DSP ◼ SIMD,NEON,CUDA,TensorRT
  10. Fixstars Group www.fixstars.com Copyright © Fixstars Group 組合せ最適化 開発サービス 12

    専用ソルバー開発 市販ソルバー応用 高速化サービス 量子コンピューティング アニーリングサービス ෍ 𝑘=0 𝑛 • Fixstars Amplify 製品による最適化ソルバーを提供 • 弊社独自技術のGPUアニーリングマシン (Amplify AE) を 課題に合わせてカスタマイズ • お客様の課題や運用プラットフォームに特化した アルゴリズムを開発 • 課題に即した専用ソルバーとして提供 • 市販の数理最適化ソルバー(CPLEX, Gurobi)を活用した 開発支援、高速化検討、性能評価を実施 • お客様の考案のアルゴリズムやソースコードを、 ハードウェアの計算資源を最大限活用するよう最適化・ 並列化 • 必要に応じてアルゴリズムの改善検討、提案も実施
  11. Fixstars Group www.fixstars.com Copyright © Fixstars Group 本セミナーで紹介 • 社内大学

    • プログラミングコンテスト • 勉強会 • 各種コンテストへの参加 (Kaggleコンペ参加) • 勉強会 • 論文・学会発表 よりよいサービスのご提供を目指して 13 • 組込み高速化 • アルゴリズム開発 • AI・深層学習 • 組合せ最適化 各種サービス • 社内向け • 社外向け 技術力強化 コンテスト参加の様子
  12. Fixstars Group www.fixstars.com Copyright © Fixstars Group Copyright © Fixstars

    Group kaggle最適化コンペ入賞 への技術アプローチ紹介
  13. Fixstars Group www.fixstars.com Copyright © Fixstars Group Kaggle コンペへの参加例 15

    • Kuzushiji Recognition • 文書に含まれる崩し字を認識・分類するコンペ。293チーム中25位にランクイン • Lyft Motion Prediction for Autonomous Vehicles • 車両や歩行者の数フレーム後の行動を予測するコンペ。935チーム中47位にランクインし銀メダルを獲得 • Halite by Two Sigma • 対戦ゲームのプログラムを作るコンペ。1139チーム中121位にランクイン • Conway’s Reverse Game of Life 2020 • 組合せ最適化コンペ。188チーム中3位にランクイン(詳細は次ページ以降で紹介する)
  14. Fixstars Group www.fixstars.com Copyright © Fixstars Group Conwayコンペ概要 16 •

    Conway’s Game of Life というセルオートマトンが題材 • 簡単な規則から複雑な構造が生まれる「複雑系科学」のトイモデルとしてよく用いられる
  15. Fixstars Group www.fixstars.com Copyright © Fixstars Group Conwayコンペ概要 17 •

    次のステップを計算するのは簡単 • 隣接する8個のセルのうち生きているセルの個数によって次のステップで生存できるかが決まる • それに対して、前のステップを計算するのは非常に難しい • 高さH・幅Wの長方形の盤面は 2^(H×W) 通りあるので全探索するには指数時間かかる • 前のステップが存在しない盤面が存在する(エデンの園配置とよばれる) 生存:8近傍に2セル 誕生:8近傍に3セル 死:その他 1 2 1 3 2 1 4 3 2 1
  16. Fixstars Group www.fixstars.com Copyright © Fixstars Group 問題設定と評価方法 18 •

    問題設定 • 25×25マスの盤面Xとステップ数t (1≦t≦5) が与えられ、tステップ進めると盤面Xにできるだけ近くなる ような盤面Yを求める • 評価方法 • Yをtステップ進めた盤面X’とXの一致率 • 盤面は50000通り(public : private = 1 : 1) (GT) X Y X’ tステップ tステップ 一致率を評価
  17. Fixstars Group www.fixstars.com Copyright © Fixstars Group 問題設定と評価方法 19 •

    例題 • 4ステップ進めると右下の形になる盤面は何か?(周囲に生存セルが存在しないとする)
  18. Fixstars Group www.fixstars.com Copyright © Fixstars Group 問題設定と評価方法 20 •

    例題 • 4ステップ進めると右下の形になる盤面は何か?(周囲に生存セルが存在しないとする) • 解答例 • 同じ盤面を左上に1ずつ平行移動した図形 (Glider) • 今回のコンペのアイコンとして使用されている
  19. Fixstars Group www.fixstars.com Copyright © Fixstars Group 問題設定と評価方法 21 •

    別解 • この盤面も4ステップ計算すると同じ図形になる。今回はどちらを提出しても正解 • tステップ後の形が簡単だからといって元の形が簡単であるとは限らない
  20. Fixstars Group www.fixstars.com Copyright © Fixstars Group 解法の検討 22 •

    組合せ最適化ソルバを使って厳密解を求める方法 • 問題は各セルの条件の組合せで表示できるため、0-1 SATソルバを用いることで厳密解を求められる • 一般に途中解を保存することができず、いつ計算が終わるか分からないのが欠点。簡単な問題は数秒で 解けるが難しい問題は数十時間かかることもある • 公開されている組合せ最適化ソルバは多数あり、どれも高度に最適化されているのでソルバ側の改善の 余地は少ない。定式化の部分で工夫はできるがソルバとの相性もあり改善度・原因が不明瞭になりがち • 焼きなまし法による近似解法:今回採用した方法 • ランダムに盤面を更新しながら一致率が高いものを選別していく • 適当な時間で止めることで近似解が得られる利点がある • 盤面の更新を高速化することで性能が向上できる=持っている技術が活用できる • その他の方法 • パターンマッチングなどルールベースの解法は簡単な問題にのみ有効だった • 深層学習の利用はあまり既存の文献がなかったので考慮しなかった(コンペ後に深層学習ベースの手法も 公開された)
  21. Fixstars Group www.fixstars.com Copyright © Fixstars Group 焼きなまし法 23 •

    与えられた関数E(x)を最小化するxを求めるための汎用の乱択アルゴリズム • 例:xを点群のハミルトンパス(各頂点を1回ずつ通る経路)、Eをその長さとすると、巡回セールスマン 問題の解法となる • 例:xを会議室の予約リストから適当に選んだ部分集合、Eをその空き時間(ただし予約が重複している ときは正の無限大を返す)とすると、会議室の割り当て問題の解法となる • 今回の問題ではxを盤面としてEを誤答率とすれば焼きなまし法が適用できる • 疑似コード • 近傍のスコアが良い場合は更新し、悪い場合も確率pで更新する • 温度パラメータtは計算時間が増えるにしたがって低下するように設定する • pはスコアの悪化が少なくtが大きいほど大きくなるように設定する。たとえば exp([E(x)-E(x’)]/t) など • 今回の問題では盤面の1セルを変化させたものを近傍とする x = 初期状態 while E(x) > 目的の値 and 計算時間が残っている: x’ = xの近傍 t = 温度パラメータ if E(x) > E(x’) or p(E(x), E(x’), t): x = x’
  22. Fixstars Group www.fixstars.com Copyright © Fixstars Group 並列アルゴリズム使用 高速化の概要 24

    • 効率的な更新処理と並列化を組み合わせて、初期実装と比べて285倍の高速化を達成 • スコア(誤答率)も高速化に応じて小さくなっていくことが分かる 1.E+04 1.E+05 1.E+06 1.E+07 1.E+08 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 高速化無し 部分更新 bitごとに計算 bit部分更新 simd化 simd+openmp 1秒あたり探索数 スコア スコア 1秒あたり探索数 ←小さいほど良い ←大きいほど良い 条件: 1問あたり100msの持ち時間、初期値は問題と同じ盤面 環境: Intel® Core™ i7-10700F (2.90GHz, 8C16T)
  23. Fixstars Group www.fixstars.com Copyright © Fixstars Group 更新処理の高速化 25 •

    部分更新 • パターンの更新時に各セルは隣接セルの情報しか参照しないので、セル1個の値を変えてtステップ 時間発展したとき計算が必要なのは (2t+1)×(2t+1) セルのみである。この特徴をもとに時間発展する 途中の値を保存して再利用することで時間あたりの探索数が 4.6 倍となった。 1セルの値を変更する 1ステップ後の影響範囲は9セル 2ステップ後の影響範囲は25セル
  24. Fixstars Group www.fixstars.com Copyright © Fixstars Group 更新処理の高速化 26 •

    bitごとに計算 • セルは2状態しかないので1bitで表現できる。また、問題サイズが25x25なので int32 を使うと1行の 情報をまとめて管理できる。また、隣接セルの和を計算するときも bit 演算を組み合わせることで 1bit と int8 の変換をせずに更新処理が行える。これを利用すると時間あたりの探索数を 13.3 倍にできる。 • 例: a | (a << 1) | (a >> 1) で、行aに対して行方向の隣接セルの和が1以上かを同時に計算できる int8 セルは1個ずつ計算 1bit セルは1行まとめて計算
  25. Fixstars Group www.fixstars.com Copyright © Fixstars Group 更新処理の高速化 27 •

    bit部分計算 • この2つのアイデアを併用して、更新が必要な場所のみ bitwise に計算すると 23.5 倍の高速化が 達成できる。bitwise 演算の場合は更新の最小単位が1行になるので、高速化される割合は両者の 積よりは小さくなる。 1セルの値を変更する 1ステップ後の影響範囲は3行 2ステップ後の影響範囲は5行
  26. Fixstars Group www.fixstars.com Copyright © Fixstars Group 並列化 28 •

    並列焼きなまし法を使用 • 悪い方向への更新確率をスレッド毎に設定して並列に計算、ときどきスレッド間の盤面の比較と交換を行う • 逐次アルゴリズムに比べて盤面あたりの近傍探索回数は減るが、探索できる盤面は増える • 実行時間によって変化するパラメータがないので途中から再開することが可能 • 今回はN=32を利用し、温度パラメータの極値を(逐次)焼きなまし法と揃えて実験した x1 , ..., xN = 初期状態 t1 , ..., tN = 温度パラメータ(降順に設定する) loop: parallel for i in range(N): xi = SimulatedAnnealing(xi , ti ) for i in range(0 または 1, N, 2): if E(xi ) > E(xi+1 ) or p(E(xi ), E(xi+1 ), ti , ti+1 ): xi , xi+1 = xi+1 , xi
  27. Fixstars Group www.fixstars.com Copyright © Fixstars Group 並列化 29 •

    simd化 • 各パターンを bitwise に変換すると1行が int32 に収まるので、 256bit SIMD レジスタと AVX2 命令を 用いることで8行を同時に更新することができる。これを並列焼きなましの各温度パラメータに対応させる ことで並列化した。条件分岐などSIMD化しにくい場所もあるため、論理的には8並列だが2.7倍の高速化に とどまった。また、温度パラメータあたりの計算回数が8%に減少したことが影響してスコアはやや悪化した。 • simd+openmp • simd化したコードを問題ごとに16並列にして、さらに4.4倍の高速化ができた。温度パラメータあたりの 計算回数で換算しても1.3倍に増えているので精度も最も良くなった。 SA SA SA SA 比 較 比 較 SA SA SA SA 比 較 SA SA SA SA 比 較 比 較
  28. Fixstars Group www.fixstars.com Copyright © Fixstars Group 結果 30 •

    高速化後のコードをさらに長時間(1問あたり1分程度)計算させることで誤答率 0.015程度のスコアを達成した • 他の手法とも組み合わせて最終スコア0.01234を達成、3位を獲得した https://www.kaggle.com/c/conways-reverse-game-of-life-2020/leaderboard
  29. Fixstars Group www.fixstars.com Copyright © Fixstars Group 考察 31 •

    理論性能との比較 • 今回実験した環境の理論演算性能は 139.2GOPS (SIMD, OpenMP使用時) • 最大メモリ帯域は 45.8GB/s で演算強度は 演算量/メモリアクセス量 = 1060/916 ≒ 1.15[OPS/Byte] なのでメモリによる性能の上限は 53.0GOPS でありメモリ律速となっていることがわかる • 実測値は 43.54GOPS = 理論性能の82%なので十分に高速化されているといえる • 上位解法 • 1位・2位解法ともに組合せ最適化ソルバを使用していた。同じ定式化を用いても最適化ソルバによって 解くためにかかる時間が大きく異なるという報告がされている • 上位手法ではどれも複数手法を併用していて、合計でどれくらいの計算量がかかったか(とくに今回用いた 解法と比べて有利か)は不明