Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
型チェックのアノテーションによる保守・運用の改善
Search
gree_tech
PRO
April 22, 2019
Technology
0
150
型チェックのアノテーションによる保守・運用の改善
「第1回機械学習工学ワークショップ(MLSE2018)」で発表された資料です。
https://mlxse.connpass.com/event/83360/
gree_tech
PRO
April 22, 2019
Tweet
Share
More Decks by gree_tech
See All by gree_tech
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
130
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
92
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
100
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
81
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
93
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
110
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
120
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
140
Jamstack でリニューアルするグリーグループのメディア
gree_tech
PRO
2
300
Other Decks in Technology
See All in Technology
SSMRunbook作成の勘所_20241120
koichiotomo
3
160
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
440
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
190
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
200
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
180
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
190
FlutterアプリにおけるSLI/SLOを用いたユーザー体験の可視化と計測基盤構築
ostk0069
0
110
The Rise of LLMOps
asei
9
1.7k
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
170
日経電子版のStoreKit2フルリニューアル
shimastripe
1
150
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
Designing for Performance
lara
604
68k
BBQ
matthewcrist
85
9.3k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Transcript
型チェックのアノテーション による保守・運用の改善 グリー株式会社 橋本順之 rev0.1
説明の流れ 1. 保守運用の問題 2. 機械学習のソフトの問題 3. 改善したい問題 4. 既存の手法の確認 5.
提案手法 6. まとめと今後の課題
保守運用の確認 • 目的 ◦ 既存のソフトを長期的に安定利用 • 保守 ◦ ハードウェア、OS、セキュリティ、ライブラリの都合でバージョン アップが必要(EOL迎えたとか、python2->3にしたい)
◦ 開発のときのように工数がない ◦ 人の入れ替えも発生 • 運用 ◦ 毎日繰り返し同じプログラムを動作 ◦ 機械の故障や不正入力などの問題の切り分け必要 ◦ 問題特定のデバッグ&修正必要
機械学習のソフトの問題 • 動的型付け言語を使用 • データの型が検証できない • 扱うデータが行列やテンソルで、次元や扱う数の精度がコードに明示さ れてない • 引数の値によってテンソルの次元が変化
◦ 例、TensorflowのLSTMの関数は引数でbatchの次元が入れ替わる • クラスを利用したデータ構造では管理できない。 ◦ 例、5x3の行列を15x1にしてまた5x3に戻すとか • LINTつかえない
改善したい問題 • コードの可読性を向上したい ◦ 保守や運用を行う上でデバッグやコードのレビューやテストが必要 ◦ 機械学習のソフトの型の問題のためコードの可読性が悪くレビューで きない ◦ コードの引継ぎが困難
• ライブラリや保守対象のプログラムのAPIやインターフェースの検証をした い。
既存の手法の確認 • テンソルの次元を言語で管理 ◦ 型に値を利用できる依存型を利用 ◦ 型の例、 Tensor [3,2,2] Float(型名
次元 数値の型) ◦ Pros: コード分かりやすい ◦ Cons: 既存の資産が使えない、開発は遅くなるかも。 • 型アノテーションを付ける(mypy) ◦ Pros: 既存の資産が使え、コード分かりやすい。 ◦ Cons: テンソルの次元が扱えない。
提案手法 • 関数など検証したい対象に型のチェックをいれる ◦ doctestを用いてチェックを入れる。 ◦ doctest: ドキュメント中に検証可能なコードを埋め込む。 ◦ 書き方の例は次のスライド
• Pros: ◦ 既存の資産が使える。 ◦ 実際の計算を行わなければ高速に検証できる • Cons: ◦ 網羅的にチェックはできない。 ◦ 書き方が自己流すぎる。(引継ぎが困難)
提案手法例 #CNNのモデルを生成する関数 def cnn_model(features,mode,name=None): #関数と入力変数の宣言 """Model function for CNN. #関数のドキュメント兼テスト
#変数の宣言 >>> batch = 7 >>> xdat = tf.zeros([batch,784],name="x") #関数の実行 >>> cnn_model({'x':xdat},tf.estimator.ModeKeys.TRAIN,"cnnt") <tf.Tensor 'cnnt/BiasAdd:0' shape=(7, 10) dtype=float32> #関数の出力する期待値デー タで次元(shape)がチェックできる. """ 関数本体が続く
まとめと今後の課題 • 問題 ◦ 機械学習のソフトのAPIやインターフェースが難読 ◦ レビューが難しく保守運用が困難 • 案 ◦
APIやインターフェースをわかりやすくするためにドキュメン ト中に型のテストをするのはどうか • 課題 ◦ 網羅的にチェックはできない。 ◦ 書き方が自己流すぎる。(引継ぎが困難)