Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AIのPoCを次に繋げよう! PoC成果をプロトタイプとしてデプロイする仕組みを紹介

AIのPoCを次に繋げよう! PoC成果をプロトタイプとしてデプロイする仕組みを紹介

Azureを活用し、A I機能を含むプロトタイプを効率的にデプロイする方法についての発表です。CI/CDやAzure App ServiceやAzure Machine Learningを使用した構成についてお話しします。

AITC - DENTSU SOKEN

October 20, 2022
Tweet

More Decks by AITC - DENTSU SOKEN

Other Decks in Technology

Transcript

  1. 1
    電通国際情報サービス(ISID)
    X(クロス)イノベーション本部 AIテクノロジー部
    AIトランスフォーメーションセンター
    後藤 勇輝
    AIのPoCを次に繋げよう!
    PoC成果をプロトタイプとしてデプロイする仕組みを紹介

    View full-size slide

  2. 2
    ⾃⼰紹介
    所属:
    電通国際情報サービス
    クロスイノベーション本部 AIトランスフォーメーションセンター
    経歴:
    2018年3⽉:⼤学院卒業
    2018年4⽉:新卒でISIDへ⼊社
    現在は、顧客⽀援と並⾏してAIを使った⾃社サービス開発に尽⼒中
    業務:
    機械学習システム開発・導⼊、⾃社のAIソフトウェアの開発、主にAzureによる
    アーキテクチャ設計
    書籍:
    「PyTorch実践⼊⾨」の翻訳出版
    「アジャイルとスクラムによる開発⼿法: Azure DevOpsによる
    プロフェショナルスクラムの実践」の翻訳出版
    後藤 勇輝

    View full-size slide

  3. 3
    今⽇話す内容、話さない内容
    今⽇話す内容
    • PoCの先に進むために、AI機能を含むアプリケーションのプロトタイプを効率よく開発する⽅法
    • 様々な要件に対応できる柔軟性と、対顧客を意識した⽐較的しっかりしたプロトタイプを想定
    • 本題とは少しずれますが、開発過程で得られた⼩ネタも紹介します
    話さない内容
    • 細かな設定やコードについてはお話ししません

    View full-size slide

  4. 4
    ⽬次
    • 背景
    • プロトタイプ開発における問題
    • プロトタイプ開発を効率化するための3つのポイント
    • 開発からデプロイまでのCI/CD基盤
    • 使⽤する技術要素の削減
    • PaaSの活⽤
    • 新しいプロトタイプ開発を導⼊した感想
    • まとめ

    View full-size slide

  5. 5
    背景
    お客様にAIシステムの価値を理解してもらい、PoCの次に進むのは難しい
    お客様
    営業
    良い精度が出たし、
    本番運⽤でも成果
    が出せそうです
    もう少し具体的に業
    務に取り⼊れるイ
    メージがしたいです
    本当に運⽤でき
    るのだろうか?
    具体的にシステムの価値を伝えるためにプロトタイプが有効
    どうしたら価値
    をわかってもら
    えるだろうか

    View full-size slide

  6. 6
    これまでのプロトタイプ開発環境
    プロトタイプ開発⽤と決まったものがなく、
    その時々でチームにある技術スタックで実現していた
    ノートブックベースの
    AIモデル開発
    IaaS + docker-composeを活⽤した
    アプリケーション開発
    フロントエンド バックエンド
    ⾮同期処理⽤
    (Celery)

    View full-size slide

  7. 7
    AI機能を含むプロトタイプ開発における問題
    やることが多く時間がかかる
    モデル開発 フロントエンド開発
    バックエンド開発
    フィードバック
    ユーザー

    View full-size slide

  8. 8
    AI機能を含むプロトタイプ開発における問題
    やることが多く時間がかかる
    モデル開発 フロントエンド開発
    バックエンド開発
    フィードバック
    ・データ準備、管理
    ・モデル開発
    ・パラメータ管理
    ・ブラウザからアクセスしたい
    ・社内ユーザーだけがアクセスできるようにしてほしい
    ・ある程度⾒た⽬を整えてほしい
    このほかにも
    • フィードバックの反映
    • バグ修正
    • デプロイ作業など
    ・推論環境の準備
    ユーザー

    View full-size slide

  9. 9
    AI機能を含むプロトタイプ開発における問題
    要求技術要素も多く複雑
    モデル開発 フロントエンド開発
    バックエンド開発
    フィードバック
    ・アルゴリズム調査
    ・データ準備
    ・モデル開発
    ・ブラウザからアクセスしたい
    ・社内ユーザーだけがアクセスできるようにしてほしい
    ・顧客に⾒せるのである程度⾒た⽬が整っていてほしい
    このほかにも
    • フィードバックの反映
    • バグ修正
    • デプロイ作業など
    Azure
    ・推論環境の準備
    ユーザー

    View full-size slide

  10. 10
    AI機能を含むプロトタイプ開発における問題
    複雑化はバグ増加、属⼈化、変更が困難になり、機動⼒のある開発ができない
    モデル開発 フロントエンド開発
    バックエンド開発
    フィードバック
    営業 or コンサル
    ・アルゴリズム調査
    ・データ準備
    ・モデル開発
    ・ブラウザからアクセスしたい
    ・社内ユーザーだけがアクセスできるようにしてほしい
    ・顧客に⾒せるのである程度⾒た⽬が整っていてほしい
    このほかにも
    • フィードバックの反映
    • バグ修正
    • デプロイ作業など
    デプロイしても動かない
    〇〇は変えられない
    or
    変更に時間がかかる
    〇〇さんしか直せない、作れない
    プロトタイプは素早く作成し、実際にユーザーにとって価値があるのか検証できることが重要

    View full-size slide

  11. 11
    AI機能を含むプロトタイプ開発における問題
    どうすれば素早く効率的にプロトタイプを作れるのか

    View full-size slide

  12. 12
    AIプロトタイプ開発を効率化する3つのポイント
    1. 開発からデプロイまでのCI/CD基盤の整備
    2. 使⽤する技術要素の削減
    3. PaaSを活⽤する

    View full-size slide

  13. 13
    AIプロトタイプ開発を効率化する3つのポイント
    1. 開発からデプロイまでのCI/CD基盤の整備
    2. 使⽤する技術要素の削減
    3. PaaSを活⽤する
    本質的なコードに集中し、コードを書く時間を増やす

    View full-size slide

  14. 14
    最終的な構成
    CI/CD⽤の
    GitHub Action
    機械学習⽤の
    PaaS
    アプリケーション
    ホスト⽤のPaaS
    ID、アクセス管理⽤サー
    ビス

    View full-size slide

  15. 15
    開発からデプロイまでのCI/CD基盤
    1#

    View full-size slide

  16. 16
    CI/CD⽤の
    GitHub Action
    機械学習⽤の
    PaaS
    アプリケーション
    ホスト⽤のPaaS
    ID、アクセス管理⽤サー
    ビス
    開発からデプロイまでのCI/CD基盤

    View full-size slide

  17. 17
    なぜプロトタイプ開発にCI/CD基盤か

    View full-size slide

  18. 18
    なぜプロトタイプ開発にCI/CD基盤か
    素早く開発し、デプロイするため
    プロトタイプ開発におけるCI/CDの役割
    • 最低限のコード品質を担保
    • 結果的に開発スピードが上がり、効率がよくなります
    • 参考:t_wadaさんの質とスピード(2022春版、質疑応答⽤資料付き)
    • デプロイ作業の⾃動化
    • フィードバックをコードに反映し、素早く確認するため

    View full-size slide

  19. 19
    現在チームで利⽤しているCI構成
    • CI実⾏内容
    依存関係解決
    (Poetry)
    コードチェック
    (Pysen)
    テスト実⾏
    (Pytest)
    • PysenはPreferred Networks社が開発したPythonのlinter/formatter
    ツール
    • isort、black、flake8、mypyを利⽤し、コーディング規約に準拠し
    ているか確認する
    • 1コマンドで上記ツールを実⾏可能。それぞれのツールのCLIを覚え
    なくていい。CIが書きやすい
    • pyproject.tomlに設定を集約できる
    • pipの代わりに使⽤
    • ローカルで依存関係の⾃動追記。pipより強⼒な依存関係の解決
    • 開発⽤パッケージを別で管理可能

    View full-size slide

  20. 20
    (⼩ネタ)エディター設定もこだわる
    エディター設定で開発効率が変わります
    • 保存時に⾃動でコード整形、型チェック、importのソート順整形を⾏います
    → CIで指摘される内容を開発中にあらかじめ確認できる
    • 型チェックは特におすすめです。エディターの補完や警告機能を存分に活かせることや、コードを読む際
    の認知負荷が下がります
    使⽤してない
    ライブラリ
    引数と返り値に型
    がついてない関数
    型が付くことで些細な代⼊、参照ミスを防ぐことができます

    View full-size slide

  21. 21
    使⽤する技術要素の削減
    2#

    View full-size slide

  22. 22
    過去の失敗

    View full-size slide

  23. 23
    過去の失敗
    とりあえず使えそうだったらどんどん⼊れる
    • Docker
    • Nuxt.js
    • Celery
    • RabbitMQ
    • Django
    過去にプロト開発で使⽤したもの

    View full-size slide

  24. 24
    過去の失敗
    とりあえず使えそうだったらどんどん⼊れる
    • 使い⽅を覚えるのが⼤変(忘れる)
    • 新しく⼈をアサインしづらい
    • 準備や開発を含めて無駄に時間がかかる
    発⽣した問題
    • Docker
    • Nuxt.js
    • Celery
    • RabbitMQ
    • Django
    過去にプロト開発で使⽤したもの

    View full-size slide

  25. 25
    思い切って使わない選択
    必要最低限にする
    • Docker
    • Nuxt.js
    • Celery
    • RabbitMQ
    • Django
    過去にプロト開発で使⽤したもの

    View full-size slide

  26. 26
    思い切って使わない選択
    必要最低限にする
    新しい構成
    • フロントエンド
    • Django template
    • バックエンド
    • Django
    • ⾮同期処理
    • PythonのsubprocessもしくはAzure Machine
    Learning
    • Docker
    • Nuxt.js
    • Celery
    • RabbitMQ
    • Django
    過去にプロト開発で使⽤したもの

    View full-size slide

  27. 27
    シンプルな構成にした結果
    意外となんとかなる
    メリット
    • 開発の初動が早い
    • 誰でも開発に⼊りやすい
    • アプリの起動、デプロイ時間が短縮
    デメリット
    • フロントエンドでフレームワークの便利な機能が
    使えない

    View full-size slide

  28. 28
    PaaSの活⽤
    3#

    View full-size slide

  29. 29
    PaaSとは
    アプリケーション開発に必要なものが全て構築済みなサービス
    ネットワーク
    ストレージ
    サーバー
    OS・ミドルウェア
    アプリケーション
    実⾏環境
    アプリケーション
    ネットワーク
    ストレージ
    サーバー
    OS・ミドルウェア
    アプリケーション
    実⾏環境
    アプリケーション
    ネットワーク
    ストレージ
    サーバー
    OS・ミドルウェア
    アプリケーション
    実⾏環境
    アプリケーション
    IaaS
    (Infrastructure as a Service)
    PaaS
    (Platform as a Service)
    SaaS
    (Software as a Service)

    View full-size slide

  30. 30
    なぜPaaSを使うか

    View full-size slide

  31. 31
    なぜPaaSを使うか
    コードを書くことに集中するため
    • AIモデルを活⽤する場合は通常のアプリケーションより考慮事項も多く、複雑になりがち
    • 可能な限り⾃動化された仕組みを活⽤し、⾃分達の管理領域を減らすことで効率よく開発できる
    証明書
    インフラ
    認証
    ログ
    ハイパー
    パラメータ
    データセット
    学習済み
    モデル
    推論環境
    学習環境
    アプリケーションにおける考慮事項 機械学習における考慮事項

    View full-size slide

  32. 32
    CI/CD⽤の
    GitHub Action
    機械学習⽤の
    PaaS
    アプリケーション
    ホスト⽤のPaaS
    ID、アクセス管理⽤サー
    ビス
    アプリケーションホスト⽤のAzure App Service

    View full-size slide

  33. 33
    Azure App Service – Web Apps
    もう少し具体的に
    • WebアプリケーションをVMの管理(OSやミドルウェア)なく簡単にデプロイできるサービス
    • ⾃動スケールに対応
    • GitHub Actionsをはじめとした豊富なデプロイ⽅法がサポートされておりCI/CDワークフローが簡単に⽤意
    できる
    • コンテナを⽤いたデプロイも可能 (プレビューですが、docker-composeも利⽤可能)
    • 無料かつ更新不要なマネージド証明書
    • Azure ADを⽤いた認証も可能で、特定のユーザーにのみアプリを公開できる
    Webアプリケーションを簡単にホストできるサービス

    View full-size slide

  34. 34
    なぜAzure App Serviceか
    • デプロイまでが素早く簡単に構築できる
    • ローカルで動作するアプリケーションがあればすぐにデプロイ環境で動かせる
    • CI/CDのためのテンプレートもApp Serviceが⽤意してくれる(GitHub)
    • Easy Authで簡単ログイン
    • 社内ユーザー(Azure ADに登録されているユーザー)だけがアクセス可能なアプリを簡単に実現
    • アプリケーション側で追加のコードは必要ない
    • App Service Planに収まる範囲なら複数のアプリをデプロイできる
    • 複数アプリでも料⾦は変わらない

    View full-size slide

  35. 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/⽉

    View full-size slide

  36. 36
    CI/CD⽤の
    GitHub Action
    機械学習⽤の
    PaaS
    アプリケーション
    ホスト⽤のPaaS
    ID、アクセス管理⽤サー
    ビス
    機械学習関連をまとめるAzure Machine Learning

    View full-size slide

  37. 37
    Azure Machine Learning
    機械学習ライフサイクル全体をサポートするマネージドサービス
    モデルのデプロイまで含めた機械学習ライフサイクル
    データ準備
    学習⽤
    コード記述
    評価
    学習
    モデル
    デプロイ
    以下のような機能を提供
    • 学習⽤データの管理
    • 学習済みのモデル管理
    • どのパラメータ、どのデータを学習に使⽤したかなどの実験管理
    • 柔軟な計算リソース調達
    • 推論エンドポイントを容易に作成
    • その他、AutoMLや説明性、公平性の表⽰など多数の機能が存在

    View full-size slide

  38. 38
    Azure Machine Learningの便利なところ
    様々なユースケースやアプリケーションに少ない労⼒で対応可能
    1. データ、モデル、実験管理が容易
    • データ、パラメータ、モデル、精度、コードそれぞれが追加コードなしで正確に紐づく
    2. 機械学習モデルのAPI化が簡単にできる
    • API化されているとアプリケーション側でモデルの管理をしなくてよいため、バックエンドの開発が容易になる
    • ブラウザのAzure Machine Learning workspaceからエンドポイントのテストも可能
    • マネージドオンラインエンドポイントも登場
    • バッチ推論⽤のエンドポイントも作成可能
    3. 学習計算リソースを無駄なく使える
    • 学習時だけ計算リソースを使⽤できるためコストに無駄がない。
    • 必要であれば、学習を複数実⾏可能なため時間効率が上がる

    View full-size slide

  39. 39
    (⼩ネタ)Cognitive Servicesの利⽤も検討する
    画像認識、時系列異常検知、⾔語認識、
    翻訳などメジャーなAI機能を提供

    View full-size slide

  40. 40
    (⼩ネタ)もっと簡単なデモで⼗分な場合
    • 簡単に綺麗なUIのデモを作成するものとして streamlitやgradioが有名
    • 最⼩労⼒でデモを作成できるツールとしてMercuryがおすすめ
    →ライブラリ特有の記法が少なく、モデル開発⽤ノートブックに少し追記するだけでデモができる
    ※ 商⽤利⽤の場合はライセンスに注意

    View full-size slide

  41. 41
    新しいプロトタイプ開発⽅法導⼊の感想
    4#

    View full-size slide

  42. 42
    良かったこと
    • CI/CD基盤やローカル開発環境を⾒直す機会となった
    • ここで使⽤されているCI/CDワークフローや開発環境設定は他のプロジェクトでも活⽤されている
    • 汎⽤的な内容が多いため、他プロジェクトでの開発効率化も実現している
    → 組織やチームで共通のものを育てることが重要
    • PaaSの便利さを実感
    • PaaSはどんどん便利になっている
    • 特にAzure Machine Learning の進化に驚き。基本的に機械学習系のシステムではPaaSを活⽤した⽅が良い

    View full-size slide

  43. 43
    ⼤変だったこと、課題になっていること
    • PaaSはIaaSと異なり、問題が起きた時に原因を調べるのが難しい
    • ドキュメントをよく読み理解する必要がある
    • 必要に応じて技術サポートも活⽤する
    • フロントエンド(UI/UX)の知⾒が不⾜
    • AIエンジニアはどうしてもバックエンドに能⼒が偏りがち

    View full-size slide

  44. 44
    まとめ
    背景
    PoCの先に進むためには具体的な業務イメージを想起できるプロトタイプが有効
    AI機能を含むプロトタイプ開発の問題
    モデル開発、推論環境など考慮事項が通常のアプリケーションより開発に時間がかかる
    AI機能を含むプロトタイプ開発を効率化する3つのポイント
    1. CI/CD基盤の整備
    → GitHub Actionsを利⽤し⾃動化
    → CIではPoetryを利⽤した依存関係管理、Pysenを利⽤したコード品質を⾃動で保つ仕組み
    2. 要素技術の削減
    → DjangoとPython組み込み機能をフル活⽤し、学習コスト低減と開発の初動を⾼速化
    → むやみに新しいものを⼊れない
    3. PaaSの活⽤
    → アプリケーションをホストするためにAzure App Service、機械学習の様々な要求を実現するAzure Machine Learning
    本質的なコードを書く時間をいかに増やすかが重要

    View full-size slide

  45. 45
    Appen:中途採⽤の宣伝
    5#

    View full-size slide

  46. 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

    View full-size slide

  47. 47
    新卒採⽤もやってます
    ISIDでは、「データサイエンス職」という新卒応募枠をご⽤意しています。データサイエンス枠で合格され
    た⽅は、AIトランスフォーメーションセンターへの配属が確約されます。興味がある⽅、是⾮ご応募くださ
    い。
    問い合わせ先:
    株式会社 電通国際情報サービス ⼈事部 新卒採⽤・インターンシップ担当
    [email protected]

    View full-size slide