SlideShare a Scribd company logo
3
Mobility Technologies Co., Ltd.3
深層学習と画像処理の流れ
データセット用意
Webからダウンロー
ド・自サーバから収
集
傾向調査
エラーデータ確認
クラス分布や
色傾向の確認
データ分割
傾向を元に
学習するデータ・評
価に使用するデータ
等を分割
前処理
深層学習を行う
ためのデータの
加工処理
深層学習
加工したデータ
から実際に目的とな
るモデルを学習する
後処理
モデルの出力を、全
体として出力
したいものに変換
必要に応じて別手法
で補正
結果の可視化
学習結果を人の
目に分かりやすく
示し改善点を探す
Designed by Freepik and distributed by Flaticon
Most read
5
Mobility Technologies Co., Ltd.5
■ 他人(自分)のコードの再現・改変が難しい

■ 様々な外部ライブラリを使用するのでバージョンの不一致で実行できない

■ 型情報がほぼないので、コードの改変・再使用が困難

■ ディレクトリ構成・仮想環境の個人差が大きく揃えづらい

■ 長時間かけて学習したモデルが保存時に引数エラーで保存失敗・やり直しへ

■ どこでどのようなエラーが発生するかが分からないので捕捉しづらい

■ モジュールのインポートルールが複雑(個人差あり)

■ Pythonを書くと遅くなりがち

■ 他の言語で書かれた高速なライブラリをPythonから使用すればOK



困っていたが深層学習からPythonは切り離せないので仕方ないか〜と思っていた

とはいえPythonだと困ることも
Most read
6
Mobility Technologies Co., Ltd.6
Rust使い始めて感じたこと

■ 型情報がしっかりしている

■ ビルド時に型周りのミスを全て洗い出せるので安心

■ エディタのフルサポートが得られるので書くのが楽

■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい

■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい

■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい

■ ディレクトリ構成が統一されている

■ ライフタイムがコードに出てくると読みづらい

■ ハマると型をこねくり回して四苦八苦する時間がある

■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒



そんなとき業務でRustにふれることに
Most read
Mobility Technologies Co., Ltd.
Rustに触れて私のPythonはどう変わったか
2020/09/24 @MoT.rs
Shunsuke Nakamura
AI技術開発部
Mobility Technologies Co., Ltd.2
中村遵介(なかむらしゅんすけ)@S.Nakamura



AI技術開発部エッジMLエンジニアリングG

- 深層学習・画像処理

- デバイスシミュレータ開発



学生時代: SQLとPython

社会: PythonとRust

趣味: 画像の拡大



自己紹介
Mobility Technologies Co., Ltd.3
深層学習と画像処理の流れ
データセット用意
Webからダウンロー
ド・自サーバから収
集
傾向調査
エラーデータ確認
クラス分布や
色傾向の確認
データ分割
傾向を元に
学習するデータ・評
価に使用するデータ
等を分割
前処理
深層学習を行う
ためのデータの
加工処理
深層学習
加工したデータ
から実際に目的とな
るモデルを学習する
後処理
モデルの出力を、全
体として出力
したいものに変換
必要に応じて別手法
で補正
結果の可視化
学習結果を人の
目に分かりやすく
示し改善点を探す
Designed by Freepik and distributed by Flaticon
Mobility Technologies Co., Ltd.
画像を用いた深層学習の全体的な流れ(の一例)

4
深層学習と画像処理の流れ
データセット用意
Webからダウンロー
ド・自サーバから収
集
傾向調査
エラーデータ確認
クラス分布や
色傾向の確認
データ分割
傾向を元に
学習するデータ・評
価に使用するデータ
等を分割
前処理
深層学習を行う
ためのデータの
加工処理
深層学習
加工したデータ
から実際に目的とな
るモデルを学習する
後処理
モデルの出力を、全
体として出力
したいものに変換
必要に応じて別手法
で補正
結果の可視化
学習結果を人の
目に分かりやすく
示し改善点を探す
全てPythonで実装

・深層学習はPyTorchというPython向けライブラリで実装されることが多い

・ここらへんで公開されている既存コードもほぼPythonなので同じ言語のほうが便利

・Pythonではデータ処理向け便利ライブラリが多数公開されている

・研究の側面が強く手軽にコード変更ができる言語が良い
 Designed by Freepik and distributed by Flaticon
Mobility Technologies Co., Ltd.5
■ 他人(自分)のコードの再現・改変が難しい

■ 様々な外部ライブラリを使用するのでバージョンの不一致で実行できない

■ 型情報がほぼないので、コードの改変・再使用が困難

■ ディレクトリ構成・仮想環境の個人差が大きく揃えづらい

■ 長時間かけて学習したモデルが保存時に引数エラーで保存失敗・やり直しへ

■ どこでどのようなエラーが発生するかが分からないので捕捉しづらい

■ モジュールのインポートルールが複雑(個人差あり)

■ Pythonを書くと遅くなりがち

■ 他の言語で書かれた高速なライブラリをPythonから使用すればOK



困っていたが深層学習からPythonは切り離せないので仕方ないか〜と思っていた

とはいえPythonだと困ることも
Mobility Technologies Co., Ltd.6
Rust使い始めて感じたこと

■ 型情報がしっかりしている

■ ビルド時に型周りのミスを全て洗い出せるので安心

■ エディタのフルサポートが得られるので書くのが楽

■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい

■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい

■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい

■ ディレクトリ構成が統一されている

■ ライフタイムがコードに出てくると読みづらい

■ ハマると型をこねくり回して四苦八苦する時間がある

■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒



そんなとき業務でRustにふれることに
Mobility Technologies Co., Ltd.7
ここらへんをPythonでもなんとか取り入れたいと思った

■ 型情報がしっかりしている

■ ビルド時に型周りのミスを全て洗い出せるので安心

■ エディタのフルサポートが得られるので書くのが楽

■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい

■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい

■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい

■ ディレクトリ構成が統一されている

■ ライフタイムがコードに出てくると読みづらい

■ ハマると型をこねくり回して四苦八苦する時間がある

■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒



そんなとき業務でRustにふれることに
Mobility Technologies Co., Ltd.8
ここらへんをPythonでもなんとか取り入れたいと思った

■ 型情報がしっかりしている

■ ビルド時に型周りのミスを全て洗い出せるので安心

■ エディタのフルサポートが得られるので書くのが楽

■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい

■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい

■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい

■ ディレクトリ構成が統一されている

■ ライフタイムがコードに出てくると読みづらい

■ ハマると型をこねくり回して四苦八苦する時間がある

■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒



そんなとき業務でRustにふれることに
Mobility Technologies Co., Ltd.9
型アノテーションとmypyとtypeguardとdataclassとEnumで型っぽい事をしようとした
型アノテーション
■ Pythonは変数と関数の引数・返り値に型アノテーションを付けられる
■ typingモジュールを使用することで複雑な型にもアノテーションできる
■ あくまでアノテーションなので実行時にその型でなくてもエラーにならない
mypy
■ Pythonの静的型検査ツール
■ アノテーションを元にコードで型ミスがないかを実行前に洗い出せる
typeguard
■ Pythonの動的型検査ツール
■ 実行時に関数の引数と返り値が実際にアノテーション通りかを確認してくれる
dataclass
■ 構造体のようなものを定義できる(実態はクラス)
■ データを辞書型でやり取りしていた部分を全てdataclassに置き換えた
Enum
■ ただの列挙型
Rustの良さをPythonに取り入れようとした話
Mobility Technologies Co., Ltd.
Pros
■ エディタの補完パワーが増したので実装が楽に
■ 辞書型はどのようなkeyにどのようなvalueがあるかを見てみないと分からないが、dataclass
で安全にデータをやり取りできるように
■ 過去の自分のコードが読めるように
Cons
■ mypyには限界があり、mypyを通っても実行時にエラーになるケースがあった
■ Pythonではサードパーティ製ライブラリを頻繁に使用するが、それらが型情報を提供しておら
ず、mypyでのチェックを諦めることが多かった
結論: 導入してよかったが、Pythonである以上確実な安心感は得られない
型情報: Rustの良さをPythonに取り入れようとした話
10
Mobility Technologies Co., Ltd.11
ここらへんをPythonでもなんとか取り入れたいと思った

■ 型情報がしっかりしている

■ ビルド時に型周りのミスを全て洗い出せるので安心

■ エディタのフルサポートが得られるので書くのが楽

■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい

■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい

■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい

■ ディレクトリ構成が統一されている

■ ライフタイムがコードに出てくると読みづらい

■ ハマると型をこねくり回して四苦八苦する時間がある

■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒



そんなとき業務でRustにふれることに
Mobility Technologies Co., Ltd.12
Cargo.tomlのように実行に必要な情報を1つのファイルにまとめておけないか?
pep518でまさに同じ話があった
■ pyproject.tomlというファイルでパッケージング情報を管理
■ Python自体のバージョンやライブラリのバージョンを記述可能
■ poetry / pyflowといったパッケージング管理ライブラリがここに準拠
■ poetry / pyflowならディレクトリ構成も統一
個人プロジェクトは全てpoetryに移行した。数ヶ月前のコードでも一発で動いた
業務ではさりげなくpoetryを導入することで布教中
Cargoほど強力ではないが便利
poetryはいいぞ
Rustの良さをPythonに取り入れようとした話 成功例
Mobility Technologies Co., Ltd.13
ここらへんをPythonでもなんとか取り入れたいと思った

■ 型情報がしっかりしている

■ ビルド時に型周りのミスを全て洗い出せるので安心

■ エディタのフルサポートが得られるので書くのが楽

■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい

■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい

■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい

■ ディレクトリ構成が統一されている

■ ライフタイムがコードに出てくると読みづらい

■ ハマると型をこねくり回して四苦八苦する時間がある

■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒



そんなとき業務でRustにふれることに
Mobility Technologies Co., Ltd.14
Result型とOption型をクラスとして定義してみた
■ Optionはちょっと便利になった
■ ResultはそもそもPythonがどの部分でどのようなエラーを出すのかが
わからないため、結局try-exceptを大きくくくる以外にエラーハンドリングが
できずメリットを感じなかった
例外ケースを適度に無視できるのが良くも悪くもPythonの特徴
Rustの良さをPythonに取り入れようとした話 失敗例
Mobility Technologies Co., Ltd.15
Rustの良さをPythonに持ち込むのは限界があるしPythonの良さを殺す事が多い
そもそも得意分野が違うのに全部同じ言語でやる必要はなかった
柔軟なコード変更が求められ、優秀なライブラリが多い部分をPythonで、
厳格なエラー処理・再利用性・速度が求められる部分をRustで実装
全体を通した設定はYAMLのような言語非依存のもので管理する方針へ
Rustの良さはRustとして、Pythonの良さはPythonとして使用した話
データセット用意
Webからダウンロー
ド・自サーバから収
集
傾向調査
エラーデータ確認
クラス分布や
色傾向の確認
データ分割
傾向を元に
学習するデータ・評
価に使用するデータ
等を分割
前処理
深層学習を行う
ためのデータの
加工処理
深層学習
加工したデータ
から実際に目的とな
るモデルを学習する
後処理
モデルの出力を、全
体として出力
したいものに変換
必要に応じて別手法
で補正
結果の可視化
学習結果を人の
目に分かりやすく
示し改善点を探す
Rust PythonPython Rust
Python
Mobility Technologies Co., Ltd.16
Rustの良さをPythonに持ち込むのは限界があるしPythonの良さを殺す事が多い
そもそも得意分野が違うのに全部同じ言語でやる必要はなかった
柔軟なコード変更が求められ、優秀なライブラリが多い部分をPythonで、
厳格なエラー処理・再利用性・速度が求められる部分をRustで実装
全体を通した設定はYAMLのような言語非依存のもので管理する方針へ
Rustの良さはRustとして、Pythonの良さはPythonとして使用した話
データセット用意
Webからダウンロー
ド・自サーバから収
集
傾向調査
エラーデータ確認
クラス分布や
色傾向の確認
データ分割
傾向を元に
学習するデータ・評
価に使用するデータ
等を分割
前処理
深層学習を行う
ためのデータの
加工処理
深層学習
加工したデータ
から実際に目的とな
るモデルを学習する
後処理
モデルの出力を、全
体として出力
したいものに変換
必要に応じて別手法
で補正
結果の可視化
学習結果を人の
目に分かりやすく
示し改善点を探す
Rust Rust
Python
PythonPython
超快適になった!
Mobility Technologies Co., Ltd.17
Rustが得意なところはRustで、Pythonが得意なところはPythonで書こう



Pythonを書く時はpoetryを使って、可能な限り型アノテーションと型チェックをするとちょっ
とQoLがあがる

結論
文章·画像等の内容の無断転載及び複製等の行為はご遠慮ください。
Mobility Technologies Co., Ltd.
18

More Related Content

What's hot (20)

リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
Recruit Technologies
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDelete
Yu Yamada
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説
Hironori Washizaki
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
 
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
NTT DATA Technology & Innovation
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
Takami Sato
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
Kentaro Minami
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
Recruit Technologies
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDelete
Yu Yamada
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説
Hironori Washizaki
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
 
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
NTT DATA Technology & Innovation
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
Takami Sato
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
Kentaro Minami
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
 

Similar to Rustに触れて私のPythonはどう変わったか (20)

AI robot car
AI robot carAI robot car
AI robot car
Akira Sasaki
 
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
Shintaro Fukushima
 
ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)
kunihikokaneko1
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
陽平 山口
 
GPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIAGPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIA
NVIDIA Japan
 
『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた
『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた
『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた
Takehiro Eguchi
 
Lecuture on Deep Learning API
Lecuture on Deep Learning APILecuture on Deep Learning API
Lecuture on Deep Learning API
Naoki Watanabe
 
Machine learning CI/CD with OSS
Machine learning CI/CD with OSSMachine learning CI/CD with OSS
Machine learning CI/CD with OSS
yusuke shibui
 
2020 08-01 ALGYAN AI&ロボティクス (1)
2020 08-01 ALGYAN AI&ロボティクス (1)2020 08-01 ALGYAN AI&ロボティクス (1)
2020 08-01 ALGYAN AI&ロボティクス (1)
Akira Tateishi
 
NEDO特別講座_画像処理・AI技術活用コース_前編
NEDO特別講座_画像処理・AI技術活用コース_前編NEDO特別講座_画像処理・AI技術活用コース_前編
NEDO特別講座_画像処理・AI技術活用コース_前編
NEDOROBOMARC
 
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点
Tetsutaro Watanabe
 
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
Preferred Networks
 
JAWSUG 20180413
JAWSUG 20180413JAWSUG 20180413
JAWSUG 20180413
陽平 山口
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127
Natsutani Minoru
 
IEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIAIEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIA
Tak Izaki
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習
Yusuke Uchida
 
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
 
Ohs#7 学習API
Ohs#7 学習APIOhs#7 学習API
Ohs#7 学習API
祐理 大野
 
Text gen-and-gpt2
Text gen-and-gpt2Text gen-and-gpt2
Text gen-and-gpt2
Takatsugu Nokubi
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
KAIKenzo
 
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
Shintaro Fukushima
 
ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)
kunihikokaneko1
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
陽平 山口
 
GPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIAGPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIA
NVIDIA Japan
 
『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた
『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた
『Pythonによる ai・機械学習・深層学習アプリのつくり方』をGoogleColabで動く限り動かしてみた
Takehiro Eguchi
 
Lecuture on Deep Learning API
Lecuture on Deep Learning APILecuture on Deep Learning API
Lecuture on Deep Learning API
Naoki Watanabe
 
Machine learning CI/CD with OSS
Machine learning CI/CD with OSSMachine learning CI/CD with OSS
Machine learning CI/CD with OSS
yusuke shibui
 
2020 08-01 ALGYAN AI&ロボティクス (1)
2020 08-01 ALGYAN AI&ロボティクス (1)2020 08-01 ALGYAN AI&ロボティクス (1)
2020 08-01 ALGYAN AI&ロボティクス (1)
Akira Tateishi
 
NEDO特別講座_画像処理・AI技術活用コース_前編
NEDO特別講座_画像処理・AI技術活用コース_前編NEDO特別講座_画像処理・AI技術活用コース_前編
NEDO特別講座_画像処理・AI技術活用コース_前編
NEDOROBOMARC
 
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点
Tetsutaro Watanabe
 
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
Preferred Networks
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127
Natsutani Minoru
 
IEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIAIEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIA
Tak Izaki
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習
Yusuke Uchida
 
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
KAIKenzo
 
Ad

Recently uploaded (8)

情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
anubis_369
 
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
NU_I_TODALAB
 
AIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdfAIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdf
hirokiabe58
 
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
NU_I_TODALAB
 
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHubwallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
K Kinzal
 
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
NU_I_TODALAB
 
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdfe2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
hirokiabe58
 
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdfREVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
LuisAlbertoOrtegaVeg1
 
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
anubis_369
 
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
NU_I_TODALAB
 
AIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdfAIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdf
hirokiabe58
 
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
NU_I_TODALAB
 
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHubwallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
K Kinzal
 
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
NU_I_TODALAB
 
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdfe2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
hirokiabe58
 
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdfREVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
LuisAlbertoOrtegaVeg1
 
Ad

Rustに触れて私のPythonはどう変わったか

  • 1. Mobility Technologies Co., Ltd. Rustに触れて私のPythonはどう変わったか 2020/09/24 @MoT.rs Shunsuke Nakamura AI技術開発部
  • 2. Mobility Technologies Co., Ltd.2 中村遵介(なかむらしゅんすけ)@S.Nakamura
 
 AI技術開発部エッジMLエンジニアリングG
 - 深層学習・画像処理
 - デバイスシミュレータ開発
 
 学生時代: SQLとPython
 社会: PythonとRust
 趣味: 画像の拡大
 
 自己紹介
  • 3. Mobility Technologies Co., Ltd.3 深層学習と画像処理の流れ データセット用意 Webからダウンロー ド・自サーバから収 集 傾向調査 エラーデータ確認 クラス分布や 色傾向の確認 データ分割 傾向を元に 学習するデータ・評 価に使用するデータ 等を分割 前処理 深層学習を行う ためのデータの 加工処理 深層学習 加工したデータ から実際に目的とな るモデルを学習する 後処理 モデルの出力を、全 体として出力 したいものに変換 必要に応じて別手法 で補正 結果の可視化 学習結果を人の 目に分かりやすく 示し改善点を探す Designed by Freepik and distributed by Flaticon
  • 4. Mobility Technologies Co., Ltd. 画像を用いた深層学習の全体的な流れ(の一例)
 4 深層学習と画像処理の流れ データセット用意 Webからダウンロー ド・自サーバから収 集 傾向調査 エラーデータ確認 クラス分布や 色傾向の確認 データ分割 傾向を元に 学習するデータ・評 価に使用するデータ 等を分割 前処理 深層学習を行う ためのデータの 加工処理 深層学習 加工したデータ から実際に目的とな るモデルを学習する 後処理 モデルの出力を、全 体として出力 したいものに変換 必要に応じて別手法 で補正 結果の可視化 学習結果を人の 目に分かりやすく 示し改善点を探す 全てPythonで実装
 ・深層学習はPyTorchというPython向けライブラリで実装されることが多い
 ・ここらへんで公開されている既存コードもほぼPythonなので同じ言語のほうが便利
 ・Pythonではデータ処理向け便利ライブラリが多数公開されている
 ・研究の側面が強く手軽にコード変更ができる言語が良い
 Designed by Freepik and distributed by Flaticon
  • 5. Mobility Technologies Co., Ltd.5 ■ 他人(自分)のコードの再現・改変が難しい
 ■ 様々な外部ライブラリを使用するのでバージョンの不一致で実行できない
 ■ 型情報がほぼないので、コードの改変・再使用が困難
 ■ ディレクトリ構成・仮想環境の個人差が大きく揃えづらい
 ■ 長時間かけて学習したモデルが保存時に引数エラーで保存失敗・やり直しへ
 ■ どこでどのようなエラーが発生するかが分からないので捕捉しづらい
 ■ モジュールのインポートルールが複雑(個人差あり)
 ■ Pythonを書くと遅くなりがち
 ■ 他の言語で書かれた高速なライブラリをPythonから使用すればOK
 
 困っていたが深層学習からPythonは切り離せないので仕方ないか〜と思っていた
 とはいえPythonだと困ることも
  • 6. Mobility Technologies Co., Ltd.6 Rust使い始めて感じたこと
 ■ 型情報がしっかりしている
 ■ ビルド時に型周りのミスを全て洗い出せるので安心
 ■ エディタのフルサポートが得られるので書くのが楽
 ■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい
 ■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい
 ■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい
 ■ ディレクトリ構成が統一されている
 ■ ライフタイムがコードに出てくると読みづらい
 ■ ハマると型をこねくり回して四苦八苦する時間がある
 ■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒
 
 そんなとき業務でRustにふれることに
  • 7. Mobility Technologies Co., Ltd.7 ここらへんをPythonでもなんとか取り入れたいと思った
 ■ 型情報がしっかりしている
 ■ ビルド時に型周りのミスを全て洗い出せるので安心
 ■ エディタのフルサポートが得られるので書くのが楽
 ■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい
 ■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい
 ■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい
 ■ ディレクトリ構成が統一されている
 ■ ライフタイムがコードに出てくると読みづらい
 ■ ハマると型をこねくり回して四苦八苦する時間がある
 ■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒
 
 そんなとき業務でRustにふれることに
  • 8. Mobility Technologies Co., Ltd.8 ここらへんをPythonでもなんとか取り入れたいと思った
 ■ 型情報がしっかりしている
 ■ ビルド時に型周りのミスを全て洗い出せるので安心
 ■ エディタのフルサポートが得られるので書くのが楽
 ■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい
 ■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい
 ■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい
 ■ ディレクトリ構成が統一されている
 ■ ライフタイムがコードに出てくると読みづらい
 ■ ハマると型をこねくり回して四苦八苦する時間がある
 ■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒
 
 そんなとき業務でRustにふれることに
  • 9. Mobility Technologies Co., Ltd.9 型アノテーションとmypyとtypeguardとdataclassとEnumで型っぽい事をしようとした 型アノテーション ■ Pythonは変数と関数の引数・返り値に型アノテーションを付けられる ■ typingモジュールを使用することで複雑な型にもアノテーションできる ■ あくまでアノテーションなので実行時にその型でなくてもエラーにならない mypy ■ Pythonの静的型検査ツール ■ アノテーションを元にコードで型ミスがないかを実行前に洗い出せる typeguard ■ Pythonの動的型検査ツール ■ 実行時に関数の引数と返り値が実際にアノテーション通りかを確認してくれる dataclass ■ 構造体のようなものを定義できる(実態はクラス) ■ データを辞書型でやり取りしていた部分を全てdataclassに置き換えた Enum ■ ただの列挙型 Rustの良さをPythonに取り入れようとした話
  • 10. Mobility Technologies Co., Ltd. Pros ■ エディタの補完パワーが増したので実装が楽に ■ 辞書型はどのようなkeyにどのようなvalueがあるかを見てみないと分からないが、dataclass で安全にデータをやり取りできるように ■ 過去の自分のコードが読めるように Cons ■ mypyには限界があり、mypyを通っても実行時にエラーになるケースがあった ■ Pythonではサードパーティ製ライブラリを頻繁に使用するが、それらが型情報を提供しておら ず、mypyでのチェックを諦めることが多かった 結論: 導入してよかったが、Pythonである以上確実な安心感は得られない 型情報: Rustの良さをPythonに取り入れようとした話 10
  • 11. Mobility Technologies Co., Ltd.11 ここらへんをPythonでもなんとか取り入れたいと思った
 ■ 型情報がしっかりしている
 ■ ビルド時に型周りのミスを全て洗い出せるので安心
 ■ エディタのフルサポートが得られるので書くのが楽
 ■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい
 ■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい
 ■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい
 ■ ディレクトリ構成が統一されている
 ■ ライフタイムがコードに出てくると読みづらい
 ■ ハマると型をこねくり回して四苦八苦する時間がある
 ■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒
 
 そんなとき業務でRustにふれることに
  • 12. Mobility Technologies Co., Ltd.12 Cargo.tomlのように実行に必要な情報を1つのファイルにまとめておけないか? pep518でまさに同じ話があった ■ pyproject.tomlというファイルでパッケージング情報を管理 ■ Python自体のバージョンやライブラリのバージョンを記述可能 ■ poetry / pyflowといったパッケージング管理ライブラリがここに準拠 ■ poetry / pyflowならディレクトリ構成も統一 個人プロジェクトは全てpoetryに移行した。数ヶ月前のコードでも一発で動いた 業務ではさりげなくpoetryを導入することで布教中 Cargoほど強力ではないが便利 poetryはいいぞ Rustの良さをPythonに取り入れようとした話 成功例
  • 13. Mobility Technologies Co., Ltd.13 ここらへんをPythonでもなんとか取り入れたいと思った
 ■ 型情報がしっかりしている
 ■ ビルド時に型周りのミスを全て洗い出せるので安心
 ■ エディタのフルサポートが得られるので書くのが楽
 ■ Result型・Option型のおかげでどこでどういう例外ケースがあるのか把握しやすい
 ■ パターンマッチが強力で条件分岐の取りこぼしが起きづらい
 ■ Cargo.tomlに必要な情報がほぼ乗っているので他人のコードを動かしやすい
 ■ ディレクトリ構成が統一されている
 ■ ライフタイムがコードに出てくると読みづらい
 ■ ハマると型をこねくり回して四苦八苦する時間がある
 ■ エラー処理をきちんと書かねばならず、正常ケースだけさっと試すときに面倒
 
 そんなとき業務でRustにふれることに
  • 14. Mobility Technologies Co., Ltd.14 Result型とOption型をクラスとして定義してみた ■ Optionはちょっと便利になった ■ ResultはそもそもPythonがどの部分でどのようなエラーを出すのかが わからないため、結局try-exceptを大きくくくる以外にエラーハンドリングが できずメリットを感じなかった 例外ケースを適度に無視できるのが良くも悪くもPythonの特徴 Rustの良さをPythonに取り入れようとした話 失敗例
  • 15. Mobility Technologies Co., Ltd.15 Rustの良さをPythonに持ち込むのは限界があるしPythonの良さを殺す事が多い そもそも得意分野が違うのに全部同じ言語でやる必要はなかった 柔軟なコード変更が求められ、優秀なライブラリが多い部分をPythonで、 厳格なエラー処理・再利用性・速度が求められる部分をRustで実装 全体を通した設定はYAMLのような言語非依存のもので管理する方針へ Rustの良さはRustとして、Pythonの良さはPythonとして使用した話 データセット用意 Webからダウンロー ド・自サーバから収 集 傾向調査 エラーデータ確認 クラス分布や 色傾向の確認 データ分割 傾向を元に 学習するデータ・評 価に使用するデータ 等を分割 前処理 深層学習を行う ためのデータの 加工処理 深層学習 加工したデータ から実際に目的とな るモデルを学習する 後処理 モデルの出力を、全 体として出力 したいものに変換 必要に応じて別手法 で補正 結果の可視化 学習結果を人の 目に分かりやすく 示し改善点を探す Rust PythonPython Rust Python
  • 16. Mobility Technologies Co., Ltd.16 Rustの良さをPythonに持ち込むのは限界があるしPythonの良さを殺す事が多い そもそも得意分野が違うのに全部同じ言語でやる必要はなかった 柔軟なコード変更が求められ、優秀なライブラリが多い部分をPythonで、 厳格なエラー処理・再利用性・速度が求められる部分をRustで実装 全体を通した設定はYAMLのような言語非依存のもので管理する方針へ Rustの良さはRustとして、Pythonの良さはPythonとして使用した話 データセット用意 Webからダウンロー ド・自サーバから収 集 傾向調査 エラーデータ確認 クラス分布や 色傾向の確認 データ分割 傾向を元に 学習するデータ・評 価に使用するデータ 等を分割 前処理 深層学習を行う ためのデータの 加工処理 深層学習 加工したデータ から実際に目的とな るモデルを学習する 後処理 モデルの出力を、全 体として出力 したいものに変換 必要に応じて別手法 で補正 結果の可視化 学習結果を人の 目に分かりやすく 示し改善点を探す Rust Rust Python PythonPython 超快適になった!
  • 17. Mobility Technologies Co., Ltd.17 Rustが得意なところはRustで、Pythonが得意なところはPythonで書こう
 
 Pythonを書く時はpoetryを使って、可能な限り型アノテーションと型チェックをするとちょっ とQoLがあがる
 結論