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
310
型チェックのアノテーションによる保守・運用の改善
「第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
890
ヘブンバーンズレッドのレンダリングパイプライン刷新
gree_tech
PRO
0
900
ヘブンバーンズレッドにおける、世界観を活かしたミニゲーム企画の作り方
gree_tech
PRO
0
900
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
880
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
980
「魔法少女まどか☆マギカ Magia Exedra」の必殺技演出を徹底解剖! -キャラクターの魅力を最大限にファンに届けるためのこだわり-
gree_tech
PRO
0
900
ヒューリスティック評価を用いたゲームQA実践事例
gree_tech
PRO
0
890
ライブサービスゲームQAのパフォーマンス検証による品質改善の取り組み
gree_tech
PRO
0
890
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
150
Other Decks in Technology
See All in Technology
やる気のない自分との向き合い方/How to Deal with Your Unmotivated Self
sanogemaru
0
490
エンタメとAIのための3Dパラレルワールド構築(GPU UNITE 2025 特別講演)
pfn
PRO
0
260
AI時代こそ求められる設計力- AWSクラウドデザインパターン3選で信頼性と拡張性を高める-
kenichirokimura
3
300
BI ツールはもういらない?Amazon RedShift & MCP Server で試みる新しいデータ分析アプローチ
cdataj
0
110
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
1
170
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
2
600
Reflections of AI: A Trilogy in Four Parts (GOTO; Copenhagen 2025)
ondfisk
0
110
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
4
370
from Sakichi Toyoda to Agile
kawaguti
PRO
1
120
プロポーザルのコツ ~ Kaigi on Rails 2025 初参加で3名の登壇を実現 ~
naro143
1
220
防災デジタル分野での官民共創の取り組み (2)DIT/CCとD-CERTについて
ditccsugii
0
250
JAZUG 15周年記念 × JAT「AI Agent開発者必見:"今"のOracle技術で拡張するAzure × OCIの共存アーキテクチャ」
shisyu_gaku
1
160
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Done Done
chrislema
185
16k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Unsuck your backbone
ammeep
671
58k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
KATA
mclloyd
32
15k
A designer walks into a library…
pauljervisheath
209
24k
Rails Girls Zürich Keynote
gr2m
95
14k
Code Reviewing Like a Champion
maltzj
526
40k
A Modern Web Designer's Workflow
chriscoyier
697
190k
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やインターフェースをわかりやすくするためにドキュメン ト中に型のテストをするのはどうか • 課題 ◦ 網羅的にチェックはできない。 ◦ 書き方が自己流すぎる。(引継ぎが困難)