Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
gree_tech
PPTX, PDF
621 views
型チェックのアノテーションによる保守・運用の改善
「日本ソフトウェア科学会第35回大会」で発表された資料です。 https://jssst2018.wordpress.com/program/
Engineering
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 24
2
/ 24
3
/ 24
4
/ 24
5
/ 24
6
/ 24
7
/ 24
8
/ 24
9
/ 24
10
/ 24
11
/ 24
12
/ 24
13
/ 24
14
/ 24
15
/ 24
16
/ 24
17
/ 24
18
/ 24
19
/ 24
20
/ 24
21
/ 24
22
/ 24
23
/ 24
24
/ 24
More Related Content
PPTX
型チェックのアノテーションによる保守・運用の改善
by
gree_tech
PPTX
Php勉強会スライド
by
suzumurashingo
PDF
プログラマーのためのテスト手法
by
myukidi
DOCX
型チェックのアノテーションによる保守・運用の改善
by
gree_tech
PDF
NGK2022S
by
陽平 山口
PPTX
機械学習応用システムの開発技術(機械学習工学)の現状と今後の展望
by
Nobukazu Yoshioka
PDF
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
by
Masashi Shibata
PDF
PFI Christmas seminar 2009
by
Preferred Networks
型チェックのアノテーションによる保守・運用の改善
by
gree_tech
Php勉強会スライド
by
suzumurashingo
プログラマーのためのテスト手法
by
myukidi
型チェックのアノテーションによる保守・運用の改善
by
gree_tech
NGK2022S
by
陽平 山口
機械学習応用システムの開発技術(機械学習工学)の現状と今後の展望
by
Nobukazu Yoshioka
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
by
Masashi Shibata
PFI Christmas seminar 2009
by
Preferred Networks
Similar to 型チェックのアノテーションによる保守・運用の改善
PDF
Machine learning CI/CD with OSS
by
yusuke shibui
PPT
Or seminar2011final
by
Mikio Kubo
PDF
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
by
諒介 荒木
PDF
TensorflowとKerasによる深層学習のプログラム実装実践講座
by
Ruo Ando
PDF
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
by
Fixstars Corporation
PPTX
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
by
Daiyu Hatakeyama
PPT
Rpscala2011 0601
by
Hajime Yanagawa
PDF
bigdata2012ml okanohara
by
Preferred Networks
PDF
[第2版]Python機械学習プログラミング 第14章
by
Haruki Eguchi
PPTX
スーパークラスとインターフェース 共通する機能を実装するためにどちらがよいのか(若手プログラマーのオブジェクト指向の疑問に答えていく)
by
agoto999
PDF
SSII2021 [TS3] 機械学習のアノテーションにおける データ収集 〜 精度向上のための仕組み・倫理や社会性バイアス 〜
by
SSII
PPTX
Introduction of featuretweakR package
by
Satoshi Kato
PDF
第73回 Machine Learning 15minutes ! IBM AI Foundation Modelsへの取り組み
by
Tsuyoshi Hirayama
PDF
実務者のためのかんたんScalaz
by
Tomoharu ASAMI
PDF
機械学習品質管理・保証の動向と取り組み
by
Shintaro Fukushima
PDF
金融×AIで解くべき問題は何か?
by
Tsunehiko Nagayama
PPTX
Css2014 ruo ando_2014-10-23-01
by
Ruo Ando
PDF
多次元配列の効率的利用法の検討
by
Yu Sato
PDF
R-hpc-1 TokyoR#11
by
Shintaro Fukushima
PDF
デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)
by
Developers Summit
Machine learning CI/CD with OSS
by
yusuke shibui
Or seminar2011final
by
Mikio Kubo
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
by
諒介 荒木
TensorflowとKerasによる深層学習のプログラム実装実践講座
by
Ruo Ando
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
by
Fixstars Corporation
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
by
Daiyu Hatakeyama
Rpscala2011 0601
by
Hajime Yanagawa
bigdata2012ml okanohara
by
Preferred Networks
[第2版]Python機械学習プログラミング 第14章
by
Haruki Eguchi
スーパークラスとインターフェース 共通する機能を実装するためにどちらがよいのか(若手プログラマーのオブジェクト指向の疑問に答えていく)
by
agoto999
SSII2021 [TS3] 機械学習のアノテーションにおける データ収集 〜 精度向上のための仕組み・倫理や社会性バイアス 〜
by
SSII
Introduction of featuretweakR package
by
Satoshi Kato
第73回 Machine Learning 15minutes ! IBM AI Foundation Modelsへの取り組み
by
Tsuyoshi Hirayama
実務者のためのかんたんScalaz
by
Tomoharu ASAMI
機械学習品質管理・保証の動向と取り組み
by
Shintaro Fukushima
金融×AIで解くべき問題は何か?
by
Tsunehiko Nagayama
Css2014 ruo ando_2014-10-23-01
by
Ruo Ando
多次元配列の効率的利用法の検討
by
Yu Sato
R-hpc-1 TokyoR#11
by
Shintaro Fukushima
デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)
by
Developers Summit
More from gree_tech
PPTX
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
by
gree_tech
PDF
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
by
gree_tech
PPTX
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
by
gree_tech
PPTX
アプリ起動時間高速化 ~推測するな、計測せよ~
by
gree_tech
PPTX
長寿なゲーム事業におけるアプリビルドの効率化
by
gree_tech
PPTX
Cloud Spanner をより便利にする運用支援ツールの紹介
by
gree_tech
PPTX
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
by
gree_tech
PPTX
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
by
gree_tech
PPTX
海外展開と負荷試験
by
gree_tech
PPTX
翻訳QAでのテスト自動化の取り組み
by
gree_tech
PPTX
組み込み開発のテストとゲーム開発のテストの違い
by
gree_tech
PPTX
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
by
gree_tech
PPTX
データエンジニアとアナリストチーム兼務になった件について
by
gree_tech
PPTX
シェアドサービスとしてのデータテクノロジー
by
gree_tech
PPTX
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
by
gree_tech
PPTX
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
by
gree_tech
PPTX
比較サイトの検索改善(SPA から SSR に変換)
by
gree_tech
PPTX
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
by
gree_tech
PPTX
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
by
gree_tech
PPTX
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
by
gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
by
gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
by
gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
by
gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~
by
gree_tech
長寿なゲーム事業におけるアプリビルドの効率化
by
gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介
by
gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
by
gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
by
gree_tech
海外展開と負荷試験
by
gree_tech
翻訳QAでのテスト自動化の取り組み
by
gree_tech
組み込み開発のテストとゲーム開発のテストの違い
by
gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
by
gree_tech
データエンジニアとアナリストチーム兼務になった件について
by
gree_tech
シェアドサービスとしてのデータテクノロジー
by
gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
by
gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
by
gree_tech
比較サイトの検索改善(SPA から SSR に変換)
by
gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
by
gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
by
gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
by
gree_tech
型チェックのアノテーションによる保守・運用の改善
1.
型チェックのアノテーション による保守・運用の改善 橋本順之(グリー株式会社) 2018/08/29 rev0.1 1
2.
発表の流れ ● 目的 ● 保守運用の問題 ●
機械学習のソフトの問題 ● 改善したい問題 ● 既存手法の確認 ● 提案手法 ● まとめと今後の課題 2
3.
目的 ● 既存の機械学習のアルゴリズムやシステム ○ 長期的に安定して利用したい ○
保守運用を適切に行いたい 3
4.
保守の課題の確認 ● 常に使えるようにしておく必要がある。 ● バージョンアップの必要性 ○
EOL:定期的にハードウェア、OS、ライブラリのEOL の都合で仕方なくバージョンアップが必要となる。 ● 工数 ○ 開発のときのように工数がかけられない。 ● 人的リソース ○ 人の入れ替えへの対応 ○ ドキュメンテーション 4
5.
保守の問題:バージョンアップの例 ● ライブラリのバージョンアップへの追従の必要性 ○ EOL、バグフィックス、実行環境の変化、セキュリティ ○
枯れていると思っていてもバグが見つかる(OpenSSL) ● 変わるもの ○ パッケージの場所 ○ 関数名、変数名、引数の名前、引数の順番 ■ 次元のパラメータ ○ 関数の挙動 ● Tensorflow 0.x -> 1.xの場合 ● chainer の場合 5
6.
保守の問題:不十分なドキュメント ● ドキュメントが不明慮でAPIの使い方がわからない。 ○ 値から値を返す関数なのか、関数を返す関数なのか? ○
APIの仕様がわからないと自分たちのプログラムはメンテナンスできない ● 例1、tensorflowのLSTMCell ○ 関数を返す関数 ○ https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/LSTMCell#__call__ ○ 入力のパラメータによって出力の型が変わる ● 例2、tensorflowのdynamic_rnn ○ time_majorパラメータで出力のテンソルに転置が起こる。 ○ https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn ○ バグ ○ https://github.com/tensorflow/tensorflow/commit/916fcfb39a23afd96893bf85cb6f29c71a483 642#diff-9d717423e6d3f4359151c45dfaa554b6 6
7.
運用の課題の確認 ● 毎日繰り返し同じプログラムを動作。 ● 動作不良の改善と切り分け ○
機械の故障 ○ 不正な入力 ○ リソースのあふれ ○ バグ? ● 問題の特定 ○ 不正な動作か、正常動作の問題の切り分け。 ○ ログの解析 ○ デバッグコードを直して修正の確認が必要 7
8.
機械学習のソフトの問題 ● ITのソフト ○ 静的型付け言語・動的型付け言語 ○
扱うデータがクラス単位 ○ 文字列・数字・クラスのデータ型で足りる場合が多い ● 機械学習ソフト ○ 動的型付け言語 ○ 扱うデータが行列やテンソル ■ 次元や扱う数の精度がコードに明示されていない ■ ドキュメントまたはコードの精読必要 ○ 引数の値によってテンソルの次元が変化するものもある ○ ベストプラクティスが確立してない 8
9.
ITのソフトの場合 ● 例:データをAWSのS3にアップロードする場合 ○ 静的型付け言語 ■
typescript ○ 入力データ(キーとデータを指定する) ■ bucket: 文字列 ■ key: 文字列 ■ body: Buffer|Uint8Array|Blob|string|Readable ○ リンク ■ https://github.com/aws/aws-sdk-js/blob/master/clients/s3.d.ts ● APIの入出力が定義されているので間違えるところはあまりない。 ○ ユーザーはシステム構築に集中できる。 9
10.
機械学習のソフトの場合 ● 例1:a *
b (要素ごとの掛け算) ○ 動的型付け言語 ■ python ○ スカラ * スカラ = スカラ ○ 行列 * スカラ = 行列 ○ 行列 * 行列 = 行列 ○ 入出力にスカラを期待していない場合に問題が検出できない ● 例2:c ? a : bのような条件分岐を入れた場合 ● APIが期待と異なる型を容易に入出力できる ○ 些細な問題で躓く ○ ユーザーはシステム構築に集中できない 10
11.
改善したい問題 ● ライブラリ ○ API
のバージョンアップによる非互換を機械的にチェックできない ○ API のインターフェースの仕様が容易にわからない ○ ドキュメントとコードの動作の不一致があっても検出できない ● 保守対象のコード ○ コードの関数・ブロック単位でのレビューが難しい 11
12.
既存の手法の確認 ● 依存型を用いてテンソルの次元を型で管理 ○ データ型に数字のリストなどの値を記述できる ○
型の例、 Tensor [3,2,2] Float(型名 次元 数値の型) ● 型アノテーションを付ける(mypy) ○ 関数のコメント部のようなところに型を書く ○ 型の例、 np.ndarray(テンソルの型) 12
13.
既存の手法の確認#依存型 ● テンソルの次元を型として扱う ○ Tensor
[3,2,2] Float(型名 次元 数値の型) ● Haskellで実用化されつつありtensorflowのAPIも開発中(tensorflow-haskell-deptyped) ● tensorflowの大部分はpythonで書かれており、モデルや最適化のアルゴリズ ムは非対応なものが多い。 ● 下記例(擬似コード) 1. a :: Tensor [2,4] Float 2. a = <中身> 3. b :: Tensor [4,2] Float 4. b= <中身> 5. c :: Tensor [2,2] Float 6. c = a `matmul` b 13
14.
既存の手法の確認#型アノテーション ● 型のアノテーション ○ 実際の動作とは関係なく、コメントのようなところに型を付与する。 ○
型が間違っていても動作する。型の検証は別途行う。 ● 動的型付け言語でも利用できる。 ● 下記の例のようにint(整数)、np.ndarray(テンソル)の型を引数や戻り値に付与 する。(numpy stub) 1. #整 数 型 の ア ノ テ ー シ ョ ン 2. def int func (x : int ) −> int : 3. return x 4. #行 列 型 の ア ノ テ ー シ ョ ン 5. def ndarray func (x : np. ndarray) -> np. ndarray: 6. return x 14
15.
既存の手法の確認 ● 依存型を用いてテンソルの次元を型で管理 ○ 型の例、
Tensor [3,2,2] Float(型名 次元 数値の型) ○ Pros: コード分かりやすく、動作との矛盾・乖離がない ○ Cons: 既存の資産が使えない、型の演算と実際の処理の両方が必要 ● 型アノテーションを付ける(mypy) ○ 型の例、 np.ndarray(テンソルの型) ○ Pros: 既存の資産が使え、コード分かりやすい ○ Cons: テンソルの次元が扱えない 15
16.
改善したい問題 ● ライブラリ ○ API
のバージョンアップによる非互換を機械的にチェ ックできない ○ API のインターフェースの仕様が容易にわからない ○ ドキュメントとコードの動作の不一致があっても検出 できない ● 保守対象のコード ○ コードの関数・ブロック単位でのレビューが難しい 16
17.
提案手法#1 ● doctestに検証したいAPIやインターフェースの型をいれ検証 ● doctest:
ドキュメント中に検証可能なコードを埋め込む。 ----doctestの例--- 1. def func(x,y) 2. ``` x + yを計算する関数 #コメント部 3. >>> func ( 1, 2 ) # テスト 4. 3 # 期待値 5. ``` 6. return x+y #実装 17
18.
提案手法#2 1. def cnn_model(features):
#関数と入力変数の宣言 2. """Model function for CNN. #関数のドキュメント兼テスト 3. #変数の宣言 4. >>> batch = 7 5. >>> xdat = tf.zeros([batch,784],name="x") 6. #関数の実行 7. >>> cnn_model({'x':xdat}) 8. <tf.Tensor 'cnnt/BiasAdd:0' shape=(7, 10) dtype=float32> 9. #関数の出力する期待値デー タでshapeのところで次元がチェックできる. 10. """ 11. 関数本体が続く 18
19.
提案手法#振りかえり ● cnn_modelの実行とその次元の型のチェックができている ● Tensorflowの実装に依存し過ぎている ●
期待値がある一例しか表せていない ーー前頁のテストの抜粋ーー 7. >>> cnn_model({'x':xdat}) 8. <tf.Tensor 'cnnt/BiasAdd:0' shape=(7, 10) dtype=float32> 9. #関数の出力する期待値デー タでshapeのところで次元がチェックできる. 19
20.
提案手法#改善 ● 型のチェックの可読性の改善 ーーーー 7. >>>
batch = 7 8. >>> inout_eq(cnn_model, ¥ 9. in_shape=[batch,784],in_type=tf.float32 ¥ 10. out_shape=[batch,10],out_type=tf.float32)) 11. True 20
21.
提案手法#改善 ● 型のパラメータ(batch)を自動生成してある程度網羅的に繰り返しテスト して入出力の型をチェックするのはどうか。 ーーーー 7. >>>
prop_int(lambda batch: ¥ 8. inout_eq(cnn_model, ¥ 9. in_shape=[batch,784],in_type=tf.float32 ¥ 10. out_shape=[batch,10],out_type=tf.float32)) 11. True 21
22.
提案手法#テストの網羅性の担保 ● 問題 ○ 型を入れていない関数があるのではないか? ●
解決方法 ○ 実行環境の関数を列挙が容易にできる。(inspect) ○ doctestのコメント部を検査して検証漏れを検出 22
23.
まとめと今後の課題 ● 問題 ○ 機械学習のソフトのAPIやインターフェースがわかりにくく、レビュー が難しく保守運用を困難にしている。 ●
案 ○ APIやインターフェースをわかりやすくするためにドキュメント中に型 のテストをするのはどうか。 ■ 機械的にAPIを検証し、ドキュメントに矛盾がない ■ 入出力がわかりやすくレビューしやすくなった ● 課題 ○ 書き方が自己流すぎる。(引継ぎが困難) ○ 依存型を用いたケースよりチェックの粒度が荒い ○ 他のパッケージとの相互運用(使うAPIすべてを検証するのか?) 23
24.
ご清聴ありがとうございました。 24
Download