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
280
型チェックのアノテーションによる保守・運用の改善
「第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
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
140
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
1.8k
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
620
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
640
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
590
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
680
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
1.1k
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
710
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
850
Other Decks in Technology
See All in Technology
React Server ComponentsでAPI不要の開発体験
polidog
PRO
0
220
【OptimizationNight】数理最適化のラストワンマイルとしてのUIUX
brainpadpr
2
470
Claude CodeでKiroの仕様駆動開発を実現させるには...
gotalab555
3
1k
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
800
Amazon Inspector コードセキュリティで手軽に実現するシフトレフト
maimyyym
0
100
AI関数が早くなったので試してみよう
kumakura
0
280
20250807_Kiroと私の反省会
riz3f7
0
210
AIに頼りすぎない新人育成術
cuebic9bic
3
300
LTに影響を受けてテンプレリポジトリを作った話
hol1kgmg
0
360
AIに目を奪われすぎて、周りの困っている人間が見えなくなっていませんか?
cap120
1
600
10年以上続くプロダクトで今取り組んでること、取り組もうとしていること
sansantech
PRO
2
100
アカデミーキャンプ 2025 SuuuuuuMMeR「燃えろ!!ロボコン」 / Academy Camp 2025 SuuuuuuMMeR "Burn the Spirit, Robocon!!" DAY 1
ks91
PRO
0
140
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Producing Creativity
orderedlist
PRO
347
40k
The Invisible Side of Design
smashingmag
301
51k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
760
GraphQLとの向き合い方2022年版
quramy
49
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
Being A Developer After 40
akosma
90
590k
4 Signs Your Business is Dying
shpigford
184
22k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Done Done
chrislema
185
16k
How to train your dragon (web standard)
notwaldorf
96
6.2k
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やインターフェースをわかりやすくするためにドキュメン ト中に型のテストをするのはどうか • 課題 ◦ 網羅的にチェックはできない。 ◦ 書き方が自己流すぎる。(引継ぎが困難)