Share
Embed
AIのPoCを次に繋げよう! PoC成果をプロトタイプとしてデプロイする仕組みを紹介
Azureを活用し、A I機能を含むプロトタイプを効率的にデプロイする方法についての発表です。CI/CDやAzure App ServiceやAzure Machine Learningを使用した構成についてお話しします。
AITC - DENTSU SOKEN
October 20, 2022
Transcript
47 slides
-
2 ⾃⼰紹介 所属: 電通国際情報サービス クロスイノベーション本部 AIトランスフォーメーションセンター 経歴: 2018年3⽉:⼤学院卒業 2018年4⽉:新卒でISIDへ⼊社 現在は、顧客⽀援と並⾏してAIを使った⾃社サービス開発に尽⼒中
業務: 機械学習システム開発・導⼊、⾃社のAIソフトウェアの開発、主にAzureによる アーキテクチャ設計 書籍: 「PyTorch実践⼊⾨」の翻訳出版 「アジャイルとスクラムによる開発⼿法: Azure DevOpsによる プロフェショナルスクラムの実践」の翻訳出版 後藤 勇輝 -
4 ⽬次 • 背景 • プロトタイプ開発における問題 • プロトタイプ開発を効率化するための3つのポイント • 開発からデプロイまでのCI/CD基盤
• 使⽤する技術要素の削減 • PaaSの活⽤ • 新しいプロトタイプ開発を導⼊した感想 • まとめ -
5 背景 お客様にAIシステムの価値を理解してもらい、PoCの次に進むのは難しい お客様 営業 良い精度が出たし、 本番運⽤でも成果 が出せそうです もう少し具体的に業 務に取り⼊れるイ
メージがしたいです 本当に運⽤でき るのだろうか? 具体的にシステムの価値を伝えるためにプロトタイプが有効 どうしたら価値 をわかってもら えるだろうか -
6 これまでのプロトタイプ開発環境 プロトタイプ開発⽤と決まったものがなく、 その時々でチームにある技術スタックで実現していた ノートブックベースの AIモデル開発 IaaS + docker-composeを活⽤した アプリケーション開発
フロントエンド バックエンド ⾮同期処理⽤ (Celery) -
8 AI機能を含むプロトタイプ開発における問題 やることが多く時間がかかる モデル開発 フロントエンド開発 バックエンド開発 フィードバック ・データ準備、管理 ・モデル開発 ・パラメータ管理
・ブラウザからアクセスしたい ・社内ユーザーだけがアクセスできるようにしてほしい ・ある程度⾒た⽬を整えてほしい このほかにも • フィードバックの反映 • バグ修正 • デプロイ作業など ・推論環境の準備 ユーザー -
9 AI機能を含むプロトタイプ開発における問題 要求技術要素も多く複雑 モデル開発 フロントエンド開発 バックエンド開発 フィードバック ・アルゴリズム調査 ・データ準備 ・モデル開発
・ブラウザからアクセスしたい ・社内ユーザーだけがアクセスできるようにしてほしい ・顧客に⾒せるのである程度⾒た⽬が整っていてほしい このほかにも • フィードバックの反映 • バグ修正 • デプロイ作業など Azure ・推論環境の準備 ユーザー -
10 AI機能を含むプロトタイプ開発における問題 複雑化はバグ増加、属⼈化、変更が困難になり、機動⼒のある開発ができない モデル開発 フロントエンド開発 バックエンド開発 フィードバック 営業 or コンサル
・アルゴリズム調査 ・データ準備 ・モデル開発 ・ブラウザからアクセスしたい ・社内ユーザーだけがアクセスできるようにしてほしい ・顧客に⾒せるのである程度⾒た⽬が整っていてほしい このほかにも • フィードバックの反映 • バグ修正 • デプロイ作業など デプロイしても動かない 〇〇は変えられない or 変更に時間がかかる 〇〇さんしか直せない、作れない プロトタイプは素早く作成し、実際にユーザーにとって価値があるのか検証できることが重要 -
16 CI/CD⽤の GitHub Action 機械学習⽤の PaaS アプリケーション ホスト⽤のPaaS ID、アクセス管理⽤サー ビス
開発からデプロイまでのCI/CD基盤 -
18 なぜプロトタイプ開発にCI/CD基盤か 素早く開発し、デプロイするため プロトタイプ開発におけるCI/CDの役割 • 最低限のコード品質を担保 • 結果的に開発スピードが上がり、効率がよくなります • 参考:t_wadaさんの質とスピード(2022春版、質疑応答⽤資料付き)
• デプロイ作業の⾃動化 • フィードバックをコードに反映し、素早く確認するため -
19 現在チームで利⽤しているCI構成 • CI実⾏内容 依存関係解決 (Poetry) コードチェック (Pysen) テスト実⾏ (Pytest)
• PysenはPreferred Networks社が開発したPythonのlinter/formatter ツール • isort、black、flake8、mypyを利⽤し、コーディング規約に準拠し ているか確認する • 1コマンドで上記ツールを実⾏可能。それぞれのツールのCLIを覚え なくていい。CIが書きやすい • pyproject.tomlに設定を集約できる • pipの代わりに使⽤ • ローカルで依存関係の⾃動追記。pipより強⼒な依存関係の解決 • 開発⽤パッケージを別で管理可能 -
20 (⼩ネタ)エディター設定もこだわる エディター設定で開発効率が変わります • 保存時に⾃動でコード整形、型チェック、importのソート順整形を⾏います → CIで指摘される内容を開発中にあらかじめ確認できる • 型チェックは特におすすめです。エディターの補完や警告機能を存分に活かせることや、コードを読む際 の認知負荷が下がります
使⽤してない ライブラリ 引数と返り値に型 がついてない関数 型が付くことで些細な代⼊、参照ミスを防ぐことができます -
23 過去の失敗 とりあえず使えそうだったらどんどん⼊れる • Docker • Nuxt.js • Celery •
RabbitMQ • Django 過去にプロト開発で使⽤したもの -
24 過去の失敗 とりあえず使えそうだったらどんどん⼊れる • 使い⽅を覚えるのが⼤変(忘れる) • 新しく⼈をアサインしづらい • 準備や開発を含めて無駄に時間がかかる 発⽣した問題
• Docker • Nuxt.js • Celery • RabbitMQ • Django 過去にプロト開発で使⽤したもの -
25 思い切って使わない選択 必要最低限にする • Docker • Nuxt.js • Celery •
RabbitMQ • Django 過去にプロト開発で使⽤したもの -
26 思い切って使わない選択 必要最低限にする 新しい構成 • フロントエンド • Django template •
バックエンド • Django • ⾮同期処理 • PythonのsubprocessもしくはAzure Machine Learning • Docker • Nuxt.js • Celery • RabbitMQ • Django 過去にプロト開発で使⽤したもの -
27 シンプルな構成にした結果 意外となんとかなる メリット • 開発の初動が早い • 誰でも開発に⼊りやすい • アプリの起動、デプロイ時間が短縮
デメリット • フロントエンドでフレームワークの便利な機能が 使えない -
29 PaaSとは アプリケーション開発に必要なものが全て構築済みなサービス ネットワーク ストレージ サーバー OS・ミドルウェア アプリケーション 実⾏環境 アプリケーション
ネットワーク ストレージ サーバー OS・ミドルウェア アプリケーション 実⾏環境 アプリケーション ネットワーク ストレージ サーバー OS・ミドルウェア アプリケーション 実⾏環境 アプリケーション IaaS (Infrastructure as a Service) PaaS (Platform as a Service) SaaS (Software as a Service) -
31 なぜPaaSを使うか コードを書くことに集中するため • AIモデルを活⽤する場合は通常のアプリケーションより考慮事項も多く、複雑になりがち • 可能な限り⾃動化された仕組みを活⽤し、⾃分達の管理領域を減らすことで効率よく開発できる 証明書 インフラ 認証
ログ ハイパー パラメータ データセット 学習済み モデル 推論環境 学習環境 アプリケーションにおける考慮事項 機械学習における考慮事項 -
32 CI/CD⽤の GitHub Action 機械学習⽤の PaaS アプリケーション ホスト⽤のPaaS ID、アクセス管理⽤サー ビス
アプリケーションホスト⽤のAzure App Service -
33 Azure App Service – Web Apps もう少し具体的に • WebアプリケーションをVMの管理(OSやミドルウェア)なく簡単にデプロイできるサービス
• ⾃動スケールに対応 • GitHub Actionsをはじめとした豊富なデプロイ⽅法がサポートされておりCI/CDワークフローが簡単に⽤意 できる • コンテナを⽤いたデプロイも可能 (プレビューですが、docker-composeも利⽤可能) • 無料かつ更新不要なマネージド証明書 • Azure ADを⽤いた認証も可能で、特定のユーザーにのみアプリを公開できる Webアプリケーションを簡単にホストできるサービス -
34 なぜAzure App Serviceか • デプロイまでが素早く簡単に構築できる • ローカルで動作するアプリケーションがあればすぐにデプロイ環境で動かせる • CI/CDのためのテンプレートもApp
Serviceが⽤意してくれる(GitHub) • Easy Authで簡単ログイン • 社内ユーザー(Azure ADに登録されているユーザー)だけがアクセス可能なアプリを簡単に実現 • アプリケーション側で追加のコードは必要ない • App Service Planに収まる範囲なら複数のアプリをデプロイできる • 複数アプリでも料⾦は変わらない -
35 参考:Azure App Service料⾦ App ServiceはApp Service Planを削除しない限り⽉額固定の料⾦です Free無料で試す Basic開発/テスト専⽤の環境
標準運⽤環境のワークロードの実 ⾏ Premium強化されたパフォー マンスとスケール Web、Mobile、API、API Apps 10 無制限 無制限 無制限 ディスク領域 1 GB 10 GB 50 GB 250 GB 最⼤インスタンス数 – 最⼤ 3 最⼤ 10 最⼤ 30* カスタム ドメイン – サポート対象 サポート対象 サポート対象 ⾃動スケール – – サポート対象 サポート対象 ハイブリッド接続 – サポート対象 サポート対象 サポート対象 仮想ネットワーク接続 – サポート対象 サポート対象 サポート対象 プライベート エンドポイント – サポート対象 サポート対象 サポート対象 コンピューティングの種類 Shared Dedicated Dedicated Dedicated 従量課⾦制料⾦ Free ¥2,005.394/⽉ ¥11,821.270/⽉ ¥12,982.288/⽉ -
36 CI/CD⽤の GitHub Action 機械学習⽤の PaaS アプリケーション ホスト⽤のPaaS ID、アクセス管理⽤サー ビス
機械学習関連をまとめるAzure Machine Learning -
37 Azure Machine Learning 機械学習ライフサイクル全体をサポートするマネージドサービス モデルのデプロイまで含めた機械学習ライフサイクル データ準備 学習⽤ コード記述 評価
学習 モデル デプロイ 以下のような機能を提供 • 学習⽤データの管理 • 学習済みのモデル管理 • どのパラメータ、どのデータを学習に使⽤したかなどの実験管理 • 柔軟な計算リソース調達 • 推論エンドポイントを容易に作成 • その他、AutoMLや説明性、公平性の表⽰など多数の機能が存在 -
38 Azure Machine Learningの便利なところ 様々なユースケースやアプリケーションに少ない労⼒で対応可能 1. データ、モデル、実験管理が容易 • データ、パラメータ、モデル、精度、コードそれぞれが追加コードなしで正確に紐づく 2.
機械学習モデルのAPI化が簡単にできる • API化されているとアプリケーション側でモデルの管理をしなくてよいため、バックエンドの開発が容易になる • ブラウザのAzure Machine Learning workspaceからエンドポイントのテストも可能 • マネージドオンラインエンドポイントも登場 • バッチ推論⽤のエンドポイントも作成可能 3. 学習計算リソースを無駄なく使える • 学習時だけ計算リソースを使⽤できるためコストに無駄がない。 • 必要であれば、学習を複数実⾏可能なため時間効率が上がる -
42 良かったこと • CI/CD基盤やローカル開発環境を⾒直す機会となった • ここで使⽤されているCI/CDワークフローや開発環境設定は他のプロジェクトでも活⽤されている • 汎⽤的な内容が多いため、他プロジェクトでの開発効率化も実現している → 組織やチームで共通のものを育てることが重要
• PaaSの便利さを実感 • PaaSはどんどん便利になっている • 特にAzure Machine Learning の進化に驚き。基本的に機械学習系のシステムではPaaSを活⽤した⽅が良い -
44 まとめ 背景 PoCの先に進むためには具体的な業務イメージを想起できるプロトタイプが有効 AI機能を含むプロトタイプ開発の問題 モデル開発、推論環境など考慮事項が通常のアプリケーションより開発に時間がかかる AI機能を含むプロトタイプ開発を効率化する3つのポイント 1. CI/CD基盤の整備 →
GitHub Actionsを利⽤し⾃動化 → CIではPoetryを利⽤した依存関係管理、Pysenを利⽤したコード品質を⾃動で保つ仕組み 2. 要素技術の削減 → DjangoとPython組み込み機能をフル活⽤し、学習コスト低減と開発の初動を⾼速化 → むやみに新しいものを⼊れない 3. PaaSの活⽤ → アプリケーションをホストするためにAzure App Service、機械学習の様々な要求を実現するAzure Machine Learning 本質的なコードを書く時間をいかに増やすかが重要 -
46 ISID AIトランスフォーメーションセンターでは新しい仲間を募集しています 少しでも興味がある⽅は、「 [email protected] 」までカジュアル⾯談のお問い合わせを頂くか、 「ISID 採⽤ページへ」や以下のQRとリンクから応募をお願いします! 製品開発系 コンサルティング系
AIコンサルタント https://groupcareers.isid.co.jp /pgisid/u/job.phtml?job_code =591&company_code=1 AIビジネスプロジェクトマネージャー https://groupcareers.isid.co.jp /pgisid/u/sp/job.phtml?job_c ode=532 AIエンジニア(製品開発) https://groupcareers.isid.co.jp /pgisid/u/job.phtml?job_code =647&company_code=1 AIプロダクトマネージャー https://groupcareers.isid.co.jp /pgisid/u/job.phtml?job_code =693&company_code=1