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
290
型チェックのアノテーションによる保守・運用の改善
「第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
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
460
ヘブンバーンズレッドのレンダリングパイプライン刷新
gree_tech
PRO
0
470
ヘブンバーンズレッドにおける、世界観を活かしたミニゲーム企画の作り方
gree_tech
PRO
0
460
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
460
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
470
「魔法少女まどか☆マギカ Magia Exedra」の必殺技演出を徹底解剖! -キャラクターの魅力を最大限にファンに届けるためのこだわり-
gree_tech
PRO
0
470
ヒューリスティック評価を用いたゲームQA実践事例
gree_tech
PRO
0
450
ライブサービスゲームQAのパフォーマンス検証による品質改善の取り組み
gree_tech
PRO
0
460
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
140
Other Decks in Technology
See All in Technology
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
1
520
TypeScript入門
recruitengineers
PRO
35
12k
絶対に失敗できないキャンペーンページの高速かつ安全な開発、WINTICKET × microCMS の開発事例
microcms
0
370
進捗
ydah
2
230
実践アプリケーション設計 ②トランザクションスクリプトへの対応
recruitengineers
PRO
4
1.2k
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
150
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
3
1.2k
モダンフロントエンド 開発研修
recruitengineers
PRO
10
6.3k
モバイルアプリ研修
recruitengineers
PRO
5
1.7k
Kiroと学ぶコンテキストエンジニアリング
oikon48
6
7.7k
シークレット管理だけじゃない!HashiCorp Vault でデータ暗号化をしよう / Beyond Secret Management! Let's Encrypt Data with HashiCorp Vault
nnstt1
3
160
新規案件の立ち上げ専門チームから見たAI駆動開発の始め方
shuyakinjo
0
660
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Gamification - CAS2011
davidbonilla
81
5.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
We Have a Design System, Now What?
morganepeng
53
7.8k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Being A Developer After 40
akosma
90
590k
KATA
mclloyd
32
14k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Designing for humans not robots
tammielis
253
25k
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やインターフェースをわかりやすくするためにドキュメン ト中に型のテストをするのはどうか • 課題 ◦ 網羅的にチェックはできない。 ◦ 書き方が自己流すぎる。(引継ぎが困難)