Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

22 過去の失敗

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

28 PaaSの活⽤ 3#

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

30 なぜPaaSを使うか

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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