*本資料の内容 (添付文書、リンク先などを含む) は de:code 2020 における公開日時点のものであり、予告なく変更される場合があります。
#decode20 #
アマダの Azure への取り組みと
DevOps・MLOps 環境の構築と運用
D05
三好 秀治
株式会社アマダ AI イノベーション研究所
中川 大樹
株式会社アマダ
リベル・ジャンノエル
アバナード株式会社
本セッションについて
対象者
課題
ゴール
• DevOps や MLOps を使った、業務効率化に興味がある人
• DevOps や MLOps の、実運用例を知りたい人
• DevOps や MLOps の導入で、導入コストやセキュリティで躊躇しており、
まだオンプレミスのバージョン管理から移行できていない
• 自ら DevOps / MLOps の予算を見積ができる
• 自ら DevOps / MLOps が構築・運用できる
セッションアジェンダ
1. 会社紹介
2. アマダの Azure の取り組みの歴史と DevOps / MLOps への挑戦
3. アバナードによる DevOps+MLOps の構築
4. アマダが DevOps+MLOps をやってみてわかったこと
5. まとめ
1. 会社紹介
会社紹介の動画はこちら
プレスリリース
会社紹介 アマダAIイノベーション研究所
(Amada AI Innovation Laboratory)
✓ 顧客およびパートナーとの市場
価値創造
✓ Poc
AIIL Head Quarter
✓ グローバルマーケティング
✓ AI技術開発
✓ 将来のコア技術の獲得
◆実験拠点とAI技術開発拠点の2つの機能基盤を確立する。
AIIL Lab.AIIL Lab.(押上)
AI開発拠点月額 1350,000円
AIIL Head Quarter(日比谷)
戦略的アライアンスがクラウド&
デジタルトランスフォーメーションを
実現します
アバナードが持つ専門性
アバナードは、テクノロジーとビジネス、そして各業界の知識を組み合わせ、企業とその
お客様のニーズに合ったソリューションを的確に提供します。
35,000人
の従業員数。
多様なバックグラウンドから
成り、そのうち 32% が女性
です。
18,500人
マイクロソフト認定
プロフェッショナル
( MCP )
10,000件
ものプロジェクト。
4,000 社以上の
グローバル企業の案件を
手掛けてきました
15ケ所
クラウド、Dynamics AX、
CRM、デジタル・マーケティング
などに
特化した専門拠点( COE )
80拠点
24 ヶ国に 80 拠点
2. アマダの Azure の取り組みの歴史と
DevOps/MLOps への挑戦
アマダ AI イノベーション研究所 三好 秀治
アマダのAzureの取り組みの歴史
AI 開発効率化のための MLOps の導入:今回の話
DevOps / MLOpsとは?
ML OPSDEV
Burndown chart
Realize Requirement
Commit
Outputs
Daily Unit testing
Test
Control bugs when
problem occurred
Multi- language test
environment
Daily
Progress
Report
4.Test Environment (Azure)
3.Configuration Control(VSO / TFS)
2. Modeling/Coding/Static analysis/UnitTest
Environment via Windows Remote Desktop on Cloud
1. Requirement/Bug Tracking System(Visual Studio Online(VSO) or TFS on Cloud)
4. Build System
(VSO+Jenkins / TFS)
Development PC:UML Modeling Tool + Visual Studio + Static Analysis
Build Server: Visual Studio + Static Analysi + Line Count Tool
License Server: Enterprise architect + Static Analysis+ Common Configuration.
インド/ヨーロッパ開発拠点 クラウド アマダ
VSO
/TFS
Remote desktop
(Amada only Express Line)
Remote
Desktop
Development PC/TestPC
(Windows/Windows Server)
Build Server
(Jenkins)
License Server(Enterprise Architect/Resharper)
Common Configuration
Register Requirement(URS)/BugRegister
Requirement(URS) / Bug
Build(+count codes+analysis
+unit test+check OSS) and report
Put Design Doc and Code
Refer
License
Reqs/Bugs/Codes Management and
Build(+analysis+unit test)
Refer
License
Refer
License
Final
Temporary
Pull Codes and test script
Seller, call center and
developer
Seller, call center and
developer
なぜ Azure DevOps を導入したか?
なぜ Azure Machine Learning + MLOps を導入したか?
なぜ Azure?
3. アバナードによる DevOps + ML Ops の構築
アバナード株式会社 リベル ジャンノエル
お客様の要求
先進的な自動化された品質管理
(ガバナンス・トレーサビリティの実現)
逐次実施可能な品質担保およびモデル生成のための仕組み
Python 標準(単体テスト/静的解析)の整備
機械学習モデルの管理
機械学習、
モデル開発・利用の加速
ハイパーパラメータの調整の半自動化
トレーニングデータ、ハイパーパラメータ、学習・評価ロジック、それぞれの管理
複数機械学習の同時実行
機械学習モデル配信
3か月の成果
先進的な自
動化された品
質管理
(ガバナンス・
トレーサビリティ
の実現)
逐次実施可能
な品質担保およ
びモデル生成の
ための仕組み
Python 標準
(単体テスト/
静的解析)の
整備
機械学習モデル
の管理
機械学習、
モデル開発・利用
の加速
Azure DevOps
+Azure Machine Learning Service
それぞれの Pipeline システムによる CI パイプライン
の実現
ソースコード変更をトリガーに以下を管理するための仕組みを構築
・ソースコード(単体テスト・コード品質)
・機械学習モデルプロセス(テストデータ・ハイパーパラメータ・メトリッ
ク(正答率など))
Python における標準的な
単体テスト・静的解析( Pytest , Flake8 )の
実装および自動化
機械学習ソースコードの品質をチェックする仕組みとして
単体テストおよびコード品質チェックの標準的な仕組みを構築
Azure Machine Learning 上のモデル管理
Azure DevOps の成果物管理の Artifact を利
用した管理および配信の実現
機械学習モデルの再現性やトレーサビリティが管理できるよう実現
・ソースコード・テストデータ・ハイパーパラメータ・メトリックがシステム上
ですべてのバージョンを一元管理
機械学習に必要なスコア劣化時のチューニングやトレーニングデータ
変更時の再学習のための仕組みを構築
ハイパーパラメータの調整の半自動化
トレーニングデータ、ハイパーパラメータ、学習・評
価ロジック、それぞれの管理
複数機械学習の同時実行
機械学習モデル配信
3か月の成果
先進的な自動化さ
れた品質管理
機械学習、
モデル開発・
利用の加速
ハイパーパラメー
タの調整の半自
動化
トレーニングデータ、
ハイパーパラメー
タ、学習・評価
ロジック、それぞ
れの管理
複数機械学習
の同時実行
機械学習モデル
配信
Azure Machine Learning Service の
HyperDrive の仕組みを利用した
Hyperparameter の自動チューニングの実現
Hyperparameter の取りうる範囲を指定することによって
特定のメトリック(正答率など)を向上させるような値をチューニ
ングすることが可能になった
※ 85% → 94% の正答率向上のためのインサイトが得られた
トレーニングデータは Azure Machine Learning
Dataset を用いて分離+バージョン管理、ハイパー
パラメータはソースコードからパラメータ化し分離。
学習・評価ロジックはそれぞれ別ファイルとして分
離。
それぞれ分離することによって、個別に管理および組み合わせて学
習することが可能になり、さまざまなデータ、パラメータ、ロジックにて
機械学習の試行錯誤プロセスを加速することが可能になった
Azure Machine Learning Service の
トレーニングクラスタコンピューティングを利用し
各機械学習プロセス実施を並列化
クラウド上の巨大なコンピューティングリソースを有効活用するように、
トレーニングクラスタを利用した機械学習の実行や多量の実行を
実施する HyperDrive での利用。
Azure DevOps Artifacts 機能の利用し、
モデルファイルの管理を実施
また標準的パッケージ管理の NuGet によるバー
ジョン・配信の実現
機械学習モデルを利用したシステム開発へのモデルファイルの連携
がシステム的に可能となった。
フィールド配置済みアプリケーションからモデルファイルの更新のため
の仕組みの基礎を実現した。
逐次実施可能な品質担保およびモデ
ル生成のための仕組み
Python 標準(単体テスト/静的解
析)の整備
機械学習モデルの管理
チャレンジ
実行アーキテクチャ
• アーリーかつ実例が少ない MLOps の実現
• マイクロソフト提供のベストプラクティスを組み合わせて提供することによって、短期間で POC 環境の構築を実施
調査点
アーキテクチャの全体構成
MLOps 導入による品質管理について
Azure DevOps と Azure Machine Learning の組み合わせ
Machine Learning In Production のアプローチ
Azure Machine Learning の HyperDrive 活用
アーキテクチャの全体構成
ML 開発者
機械学習プロジェクトの
ソースコードリポジトリ
Azure Repos
Azure Machine Learning
AML Training Pipeline
AML Model Management
Azure Artifacts
Push
Azure Pipeline (CI/CD)
Azure Pipeline (CI)
機械学習用のソースコードモジュール
品質管理用 CI (継続的インテグレー
ション)タスク一覧
Python で定義された機械学習パイプラインを管
理し、 AML のクラスター上で実行する(学習+
評価+登録)
AI モデルに依存するアプリ
ケーションのビルドパイプライン
学習済みモデルはモデルだけでなく、モデルを再生
するためのデータセットバージョン情報、学習スクリ
プト、パラメータ、ログ、スコアなどを格納している。
Model
Model
Model
Azure DevOps
NuGet パッケージ化済み、
常に配置可能な AI モデル
Azure Storage
Dataset
Dataset
Dataset
機械学習パイプライン用の
トレーニングデータを集める
AML HyperDrive
機械学習の実験ハイパーパラメータ調整によりモデ
ルの最適な設定を特定する(学習+評価)
AI モデルに依存する
本番システム
AI ServiceDevelopers
AI モデルを使ってアプリケー
ションを作成する開発者
Azure Machine LearningAzure DevOps
機械学習実行アーキテクチャの全体構成
ML 開発者
AML Model Management
Jupyter
Notebook
Azure Repos: ML Source code
ML Training
& Eval code
ML Pipeline
code
Dev/Push
Azure Storage
Azure Artifacts: NuGet feeds
Best
Model (v1)
Best
Model (v2)
Best
Model (v3)
NuGet Feed (Release / Dev)
Azure Pipeline: New app CI/CD
Code
Quality
Check
Nuget/
Build
Unit Test
Other project (CI/CD) Field
AI application (prod.)
ML
Model
Inference
Result /
Field Data
Feedback
dataOther project
App 開発者
Push
Trigger
Azure Pipeline: ML project CI
Code
Quality
Check
Run ML
pipeline
Unit Test
PEP8 Pytest
Azure DevOps
Extension
DataSet
Training data Evaluation data
Model
File
Model
File
Hyper
Param
Score
DataSet
Training
data
Evaluation
data
HistoryManagement
Model
File
Hyper
Param
Score
DataSet
Training
data
Evaluation
data
HistoryManagement
Model
File
Hyper
Param
Score
DataSet
Training
data
Evaluation
data
HistoryManagement
再現性確認のため
Model/HyperParam/D
ataSet を履歴管理。
Register Package
Package
AML Training Pipeline
Train
Model
Register
Model
ONNX
(Convert) Evaluate
Model
(scoring)
分散環境で
並列実行可能
Azure Machine LearningAzure DevOps
機械学習実行アーキテクチャの全体構成
ML 開発者
Azure Repos: ML Source code
ML Training
& Eval code
ML Pipeline
code
AML Training Pipeline
Train
Model
Register
Model
AML Model Management
ONNX
(Convert)
Azure Pipeline: ML project CI
Code
Quality
Check
Run ML
pipeline
Unit Test
Push
Trigger
Azure Artifacts: NuGet feeds
Best
Model (v1)
Best
Model (v2)
Best
Model (v3)
NuGet Feed (Release / Dev)
Register Package
Dev/Push
分散環境で
並列実行可能
PEP8
Jupyter
Notebook
Pytest
Evaluate
Model
(scoring)
Model
File
Hyper
Param
Score
DataSet
Training
data
Evaluation
data
HistoryManagement
Azure Storage
Model
File
Hyper
Param
Score
DataSet
Training
data
Evaluation
data
HistoryManagement
Model
File
Hyper
Param
Score
DataSet
Training
data
Evaluation
data
HistoryManagement
再現性確認のため
Model/HyperParam/D
ataSet を履歴管理。
Azure DevOps
Extension
Package
DataSet
Training data Evaluation data
Azure Pipeline: New app CI/CD
Code
Quality
Check
Nuget/
Build
Unit Test
Other project (CI/CD) Field
AI application (prod.)
ML
Model
Inference
Result /
Field Data
Feedback
dataOther project
App 開発者
アーキテクチャの全体構成
MLOps 導入による品質管理について
Azure Machine Learning の HyperDrive 活用
利用概念と実行アーキテクチャ
HyperDrive の使用により得られたインサイト
Azure Machine LearningAzure DevOps
HyperDrive の実行アーキテクチャの全体構成
ML 開発者
AML HyperDrive
Azure Storage
AML Experiment
Train
Model
Evaluate
Model
(scoring)
Azure Pipeline: ML project CI
Code
Quality
Check
Run ML
pipeline
Unit Test
PEP8 Pytest
Azure DevOps
Extension
DataSet
Training data Evaluation data
Model
File
分散環境で
並列実行可能
Hyper
Param
Score ?
DataSet
Training
data
Evaluation
data
HistoryManagement
Hyper
Param
Score ?
DataSet
Training
data
Evaluation
data
HistoryManagement
Hyper
Param
Score ?
DataSet
Training
data
Evaluation
data
HistoryManagement
Hyperdrive 実験でわかった、最適な機械学習設
定を調査した上で反映する
Azure Repos: ML Source code
ML Training
& Eval code
Dev/Push
Hyperdrive
Experiment code
Score ☺ Score  Score 
機械学習のパイプラインとともに実行されるで
はなく、
この機械学習処理の調整・改善にむけて適
切なパラメータを検索するためML開発者が
手動で実行する。
Azure Machine LearningAzure DevOps
HyperDrive の実行アーキテクチャの全体構成
ML 開発者
AML HyperDrive
Azure Storage
AML Experiment
Train
Model
Evaluate
Model
(scoring)
Azure Pipeline: ML project CI
Code
Quality
Check
Run ML
pipeline
Unit Test
PEP8 Pytest
Azure DevOps
Extension
分散環境で
並列実行可能
Hyper
Param
Score ?
DataSet
Training
data
Evaluation
data
HistoryManagement
Hyper
Param
Score ?
DataSet
Training
data
Evaluation
data
HistoryManagement
Hyper
Param
Score ?
DataSet
Training
data
Evaluation
data
HistoryManagement
Hyperdrive 実験でわかった、最適な機械学習設
定を調査した上で反映する
Azure Repos: ML Source code
ML Training
& Eval code
Dev/Push
Hyperdrive
Experiment code
Score ☺ Score  Score 
DataSet
Training data Evaluation data
機械学習のパイプラインとともに実行されるで
はなく、
この機械学習処理の調整・改善にむけて適
切なパラメータを検索するためML開発者が
手動で実行する。
4. アマダが DevOps + MLOps をやってみ
てわかったこと
株式会社アマダ 中川 大樹
MLOps 構築の前後
”AI モデル開発”は実験・精度確認の繰り返しなど、従来のソフト開発とは異な
る開発プロセスを踏む必要がある。しかし、アマダ内で標準的な開発ツールや定
型的な開発プロセスが定義できておらず、試行錯誤状態であった。
この状況の中、アバナード社の支援・指導により Azure を用いた MLOps 環境
を構築した。
これにより AI モデル開発の自動化・定型化を実現した。
• AI モデル作成スクリプトの静的解析・ユニットテストの自動化
• AI モデルの学習からモデル作成・出荷基準判定テストの自動化
• AI モデルチューニングの自動化( HyperDrive )
導入効果
MLOps の導入によって得られた効果は以下の通り。
以降のスライドにて、いくつかピックアップして説明
# 効果 説明
1 工数削減・品質確保 各種開発作業の自動化により大幅な工数削減・品質確保を見込める。
静的解析・UT・ビルド・出荷テスト以外にもハイパーパラメータの自動チューニングなども行え
るため開発・保守作業だけでなく PoC の工数削減にも寄与すると思われる。
2 実験トレーサビリティ確保 実施した実験のソースコードやメトリックが全て自動蓄積される。
多数の実験を行うため、スクリプト・パラメータや結果が消失してしまう問題が多数発生す
るが、これによりいつでも振り返ることができる。
3 属人化・属環境化の防止 特定の PC 環境に依存せず、開発やリリース作業が可能。
スクリプト・データセット・評価・ビルド環境を全てクラウド上に構築。スクリプトのコミットや
教師データの変更をするだけで、テスト結果・成果物を得ることが可能
4 自動化の将来性 さらなる自動化に向けた基盤が構築できた。
今回はアバナードとの契約期間もあり未実施となったが、お客様のログを収集して教師
データに反映するなどの本当の MLOps のループを回す基盤が構築できた。
導入効果1:工数削減・品質確保
各種開発作業の自動化により大幅な工数削減・品質確保を見込める。
今回パイプラインで自動化したジョブは以下の通り。
静的解析や出荷基準テストを自動実行・記録することにより、品質の監視も実現。
# ジョブ 説明
1 静的解析 Flake8 を用いたコード解析
2 ユニットテスト Pytest を用いた UT 自動化の仕組みを構築。
3 AIモデル学習・生成 Azure ML Service 上のクラスターで学習・生成。
4 AIモデル変換 ONNX に変換。
5 出荷基準テスト 数百~千枚以上のテスト用画像による結果確認。
6 成果物出力・公開 スクリプト、モデル、精度、評価結果などをセットで保管・公開。
• ソースコードのコミットから成果物の出力まで
1時間~2時間程度で完了する。
※コスト削減のためクラスターの優先度を下げ
てあるので、実行時間は前後する。
導入効果2:実験トレーサビリティ確保
AzureML 上で実行した学習・評価結果はすべて下図のように残されており、いつでも過去の結
果を参照できる。その時実行された Python スクリプトやハイパーパラメータの値も保存されている。
各結果にタグも付与できるため、特定のスクリプト、 AI モデルを再利用することも容易である。
これにより、ある時点でのモデル・パラメータが不明になることはない。
導入効果3:属人化・属環境化の防止
学習などの計算処理は Azure 上に作成したリソースで行われる。各ローカル PC 上に環境
を構築していたが、最低限 Python スクリプトの編集ができれば良く、ライブラリのバージョン
違い、マシンパワーの不足といった問題は解消される。
ローカル開発環境 ローカル開発環境
開発者は Python
スクリプトの編集だ
けできればよい。
MLOps を定着する上で、今後取り組むべき事
# 検討事項 説明
1 ランニングコストの最
適化
ハイパードライブ( CPU / GPU クラスタ)を使うべきタイミングをプロセス
でよく吟味し、運用する必要がある。
2 DevOps / MLOps
技術者の育成
DevOps / MLOps のアーキテクチャ、Azure の各種サービスを理解
するために、 AZ-400 のような体系化された学習が必要
3 業務環境の Azure
へのアクセス
クラウドを前提とした社内ネットワークの構築が必須。
検討事項1 :ランニングコストの最適化
MLOps の構築と運用で発生した、Azure のコストの概要
# 課金対象 課金実績 条件
1 ストレージ ¥600/月 データセット保存用のストレージや ML workspace など。
2 ネットワーク ¥100/月 N/A
3 Azure AD ¥700/月 Azure Active Directory P1。担当者毎に必要。
4 プロダクトパイプライン ¥150/回 時間 = 1h 、試行 = 1回、Cluster = NC6S_V3、Priority = Low
5 ハイパードライブ ¥24,000/回 時間 = 9h、試行 = 32回、Cluster = NC6S_V3、
Priority = Dedicated
上記を元に、MLOps の継続的な利用で、必要となる費用を算出した結果
開発フェーズ 課金予測 内訳 備考
設計フェーズ ¥241,400/月 #1+#2+#3 + ハイパードライブ x 10 回 データサイエンティストの、最適化コストより安価
評価フェーズ ¥4,400/月 #1+#2+#3 + プロダクトパイプライン x 20 回 プロジェクトの Azure 全体コストからはノイズ程度
保守フェーズ ¥2,000/月 #1+#2+#3 + プロダクトパイプライン x 4 回 プロジェクトの Azure 全体コストからはノイズ程度
検討事項2 : DevOps / MLOps 技術者の育成
アーキテクチャやサービス・課金特性を十分に理解した人間が必要である。
その理由としては以下が挙げられる。
• パイプラインの作成・変更は YAML や Python スクリプトで記述する必要あり
• Azure 上の複数のサービスを組み合わせで構築されている
DevOps / MLOps 技術者を育成するためには、少なくとも以下が必要。
1. Python スクリプトの基礎知識
2. Azure DevOps / MLOps の基礎知識
3. Yaml・パイプラインの基礎知識
4. 課金条件の基礎知識
対策案:
今回、アバナードさんから KT を受けた中川以外のメンバーでも学習なしにメンテナンスできるように
することは現実的でないと考えられる。以下のいずれかにて対処することが適当。
• 人員を別途用意して育成する。
• メンテナンスは有識者が引き続きサポートし、利用者向けの運用手順書だけ作成する。
利用者の最低限の作業
今後 MLOps を開発担当者で運用していくために、最低限必要となる作業を列挙した。
組織変更などで有識者の十分なサポートができなくなる可能性があるため、方向性とし
ては、“一番簡単な手順で決め打ちして、その通りに運用してもらう” が良いと考えた。
# 記載項目 詳細
1 開発環境構築方法 MLOps では Flake8 で静的解析を実行するので、ローカルで Flake8 の指摘
事項を潰し込める環境を作成する。
2 ローカル PC での実験方法 Git に入っているスクリプトをダウンロードして、ローカルで実験する方法。
引数やパラメータの設定方法。
3 コード修正・登録方法 誰でもできるように、ブラウザで登録する手順を記載する。
4 データセット変更方法 データセットの追加・変更・削除手順。
5 メトリック・試験結果の確認方法 Azure 上での確認方法
6 モデルの取得方法 Azure からのダウンロード、もしくは Artifact としての取得
7 メジャー・マイナーバージョンの変更方法 メジャー・マイナーバージョンのインクリメント基準とその方法。
5. まとめ
アマダ AI イノベーション研究所 三好 秀治
下記の関連コンテンツをご紹介させてください。
de:code 2019 セッション ID DT41
リンク
de:code 2020 パートナーセッション
リンク
テクノロジーパートナーの関連コンテンツ
付録
下記セッションでも Azure IoT の情報を得ることができます。合わせてご参照ください。
Session ID: X01
Azure IoT 最新動向 – クラウドからエッジまで網羅的にご紹介
Session ID: X02
セキュリティは万全ですか? Azure Sphere によるセキュリティ紹介
Session ID: X05
SaaS で迅速に IoT を実現 - Azure IoT Central 最新アップデートと活用術
Session ID: X06
そのロジック、IoT Edgeで動きます - Azure IoT Edge 開発 Deep Dive
Session ID: X07
ベールを脱いだ Azure RTOS - 最新情報をいろいろとお届けします
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用

【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用