>100 Views
May 08, 26
スライド概要
CyberAgent AI Lab リサーチエンジニア
マッチングアルゴリズムの社会実装に向けて 保育所利用調整システムの研究開発から現場提供 20241221 DevFest - Kwansai Developers Day サイバーエージェント AI Lab 大田 和寛
マッチングアルゴリズムの社会実装に向けて 大田 和寛 / Kazuhiro Ota リサーチエンジニア @ サイバーエージェント AI Lab ● エンジニアリングによる研究成果の最大化と事業還元 ● 研究者が研究に集中できる環境の構築 経歴 ● ~2011 会津大学大学院 ○ Sun Microsystems Campus Ambassador ○ 医用画像処理システムで修士取得 ● 2011~ サイバーエージェント ○ 2011~2014 アメーバピグ ■ SRE ○ 2014~2017 ライブ配信スマホサービス ■ 動画配信基盤エンジニア ○ 2017~ AI Lab ■ リサーチエンジニア 2
マッチングアルゴリズムの社会実装に向けて 提案モデルのデモサービス開発 データアノテーションツール開発 アルゴリズム実装・論文追試・実験サポート クラウドソーシング用の動画基盤構築 3
マッチングアルゴリズムの社会実装に向けて 直近は保育所利用調整のためのマッチングアルゴリズムのシステム化および 自治体導入を担当 https://chilmai.cyberagent.ai/ 福島県郡山市にて11月より稼働中! 今日はこのChilmAIにまつわる研究開発と導入についてお話します 4
マッチングアルゴリズムの社会実装に向けて 保育所入所選考と待機児童 自治体における保育所入所を希望する児童の受け入れ調整 以前、待機児童問題が話題になりましたね 5
マッチングアルゴリズムの社会実装に向けて 待機児童数は減った? こども家庭庁 令和6年4月の待機児童数調査のポイント 6
マッチングアルゴリズムの社会実装に向けて 待機児童数は減った? 定義上の待機児童数は減少傾向にあるものの… こども家庭庁 令和6年4月の待機児童数調査のポイント 7
マッチングアルゴリズムの社会実装に向けて 待機児童数は減った? 定義上の待機児童数は減少傾向にあるものの、「除外4 類型」に該当し、待機児童とみなされない入所保留児童 数は横ばいの状況 待機児童数の除外4類型 ● 育児休業中 ● 特定の保育園等のみ希望している ● 地方単独事業を利用している ● 求職活動を休止している こども家庭庁 令和6年4月の待機児童数調査のポイント 8
マッチングアルゴリズムの社会実装に向けて マッチングアルゴリズムによる解決 児童と保育所のマッチング問題とみなし、最適な割り当てを求めることで問題解決を 図りたいが… マッチングアルゴリズム 9
マッチングアルゴリズムの社会実装に向けて 入所選考の難しさ きょうだい きょうだい全員を同時に入園させた いか、別の時期でも構わないか 同じ保育所への入園だけを希望する か、別々の保育所への入園でも構わ ないか 転園 転園希望者について ● 希望する保育所に入園させる ● すでに入園している保育所(転園元)に 戻る のいずれかを実現し、待機児童にはしない 公平性・非浪費性 優先順位が高い人から順に割り 当てる 「その保育所を希望する応募者 がいるにもかかわらず受け入れ 枠に空きがある状況」をつくら ない 10
マッチングアルゴリズムの社会実装に向けて アルゴリズムの研究開発 きょうだいや転園についてカバーしたアルゴリズムがなかったため考案 これらに関する制約を数理モデル(制約プログラミング; CP)として定式化し、最適化 (入所できる人数の最大化)を行うことで児童と保育所のマッチングとする ● ● Daycare Matching in Japan: Transfers and Siblings [Sun+, AAAI 2023] Stable Matchings in Practice: A Constraint Programming Approach [Sun+, AAAI 2024] 実装にはOR-Tools CP-SATソルバを利用 11
マッチングアルゴリズムの社会実装に向けて アルゴリズムの研究開発 自治体データにおける実験を行い、実際の割り当て結果よりも少なくとも提案したCPモデル による割り当て結果のほうが同等以上に望ましい結果が得られることを確認🎉 多摩市2021 多摩市2022 渋谷区2021 渋谷区2022 郡山市2022 実際 CP 実際 CP 実際 CP 実際 CP 実際 CP マッチした児童数 558 560 464 470 1307 1307 1087 1087 979 1200 ブロッキング連合数 26 0 2 0 0 0 0 0 1059 0 ● マッチした児童数 ○ 保育所に内定した児童の数 ● ブロッキング連合数 ○ ある児童にとってより望ましい保育所に入所できた可能性があることを示唆 ○ ゼロであれば公平なマッチングが実現できている 12
マッチングアルゴリズムの社会実装に向けて システム化して自治体へ提供 自治体に使ってもらうべく、ChilmAI としてシステム化 郡山市のAI保育施設等入所選考シス テム導入業務委託事業に入札し、無事 落札 我々が研究開発した技術を独自実装し 社会へと導入するのはAI Lab初事例 (社内の既存事業へのコンサル・技術 提供は何度もあります) https://www.city.koriyama.lg.jp/uploaded/attachment/83829.pdf 13
児童データ 保育所データ
マッチングアルゴリズムの社会実装に向けて Hidden Technical Debt in Machine Learning Systems [Sculley+, NeurIPS 2015] 機械学習モデルやアルゴリズムを内包するシステ ムを構築する際についつい振り返りたくなる論文 MLシステムに生じてしまう技術的負債について 論じています 16
マッチングアルゴリズムの社会実装に向けて 技術的負債? 技術的負債(Technical Debt)は、ソフト ウェア開発において、短期的な利益や迅速 な成果を得るために、意図的に行う設計や 実装の妥協や簡略化のことを指します。こ れにより、将来的にシステムの保守性、拡 張性、性能などに悪影響を及ぼす可能性が 高くなります。技術的負債は、借金と同様 に、後で返済(修正や改善)する必要があ り、その返済には時間や労力がかかりま す。 ChatGPT 17
マッチングアルゴリズムの社会実装に向けて MLシステムにおける技術的負債 Hidden Technical Debt in Machine Learning Systems [Sculley+, NIPS 2015] 18
マッチングアルゴリズムの社会実装に向けて 若干ネタ入ってますが ChilmAIでも… CD-R経由のインストール Streamlit 自治体別の成果物ビルド マッチング機能 Excelデータ処理 スタンドアロン アプリ Windows ローカルマシンに出力されるログ すべてが技術的負債という訳ではないが(WindowsとかはただのOS環境差)、やることがシンプル(マッチン 19 グのみの単一機能)なのに他で考える・運用の手間になることが多すぎ…
マッチングアルゴリズムの社会実装に向けて スタンドアロンアプリ ChilmAIはインターネット 接続のないLGWAN内に配置 された共有マシンへの提供 弊社が強みとしているWeb SaaSでの開発・提供ノウハ ウが活かせない 総務省『「自治体の情報システムについて」』 20
マッチングアルゴリズムの社会実装に向けて 技術選定の方針 ● GUIアプリケーション ○ ○ ● ユーザは一般的な市役所職員 黒い画面の操作を避けるなど、使用ハードルを極力下げてあげたい AI Labメンバーでメンテナンスしていけること ○ ○ ソフトウェア開発経験のない研究職メンバーにも馴染みのある言語・ライブラリが望ましい 実験・分析(PythonでのOR-Tools利用)との行き来をスムーズに行いたい 21
マッチングアルゴリズムの社会実装に向けて Streamlitを採用してみることに ● Pythonで各種WebUIコンポーネントを手軽に扱えるフレームワーク ● モデルや計算の結果をデータとともに可視化可能 ● 今回のアプリケーションはマッチングアルゴリズムを動かすだけのシンプルな機能 22
マッチングアルゴリズムの社会実装に向けて (ChilmAIにおいて)Streamlitが厳しいトコロ ● 画面のカスタマイズ ○ ○ ● 状態管理 ○ ○ ○ ● デフォルトでもそこそこ見た目の良い画面が構築できるが、微調整したい場合にライブ ラリ標準のAPIでは対応しきれない 結局 unsafe_allow_html=True というオプションを指定しつつ独自CSSを出力する ハメに Streamlitはフレームワークとしてはステートレスな設計 ユーザインタラクションに伴う画面描画のたびにエントリポイントが全実行される ファイル入力済み・ボタン押下済みなどそれぞれの状態保持に伴うセッション変数とif 文が乱立 パッケージングとローカル起動 ○ ○ Streamlitはウェブアプリサーバとして起動するが今回はデプロイ先となるリモートマ シンはなし Pyinstallerを利用してPythonランタイムと依存関係をまるごとパッケージングした Windows用exeファイルを提供することに 23
マッチングアルゴリズムの社会実装に向けて Streamlitのスタンドアロンアプリ化 ちなみにPyinstallerでのexe化はマルウェアパターンとして検出されやすいとの報告も… 自治体が導入しているウイルスチェックに弾かれないかは持ち込むまでわからない… https://x.com/umiyuki_ai/status/1743226189035295075 24
マッチングアルゴリズムの社会実装に向けて 入力ファイルはExcelデータ 郡山市ChilmAIで処理する入力ファイルはExcelであり、入所選考担当職員の思わぬ キーボード入力でセルの値が変わってしまう… バリデーションを手厚く行い、誤りのある行・カラム・セルの特定まで行いたいが… IDが空になってない? 数値カラムに文字列が 含まれてたりしない? 必要なカラムはすべて揃ってる? 申込児童データと保育所デー タとで整合性はとれてる? 25
マッチングアルゴリズムの社会実装に向けて 入力ファイルはExcelデータ 要約値が最下行にメモされた程度で、ChilmAI内でデータフレームとして扱う際に影響 を及ぼしてしまう…(想定外の行追加が発生) 26 実際の保育所データ
マッチングアルゴリズムの社会実装に向けて 入力ファイルはExcelデータ 保育所データにおいてIDの役割をもつ施設番号が記入されていないため、画面上の メッセージでエラーとなっている箇所を示すのが難しい… 27
マッチングアルゴリズムの社会実装に向けて Windows 開発メンバー全員がMac/Linuxマシンを利用していた… リリースを見据え、いざ市役所で使われているOSであるWindows上で起動を試してみるとOS間 での差異に直面 ● Python tempfileモジュール ○ ○ 一時ファイルについて読み書きを連続的に行うようなワークロードにおいてPermissionErrorが起 こるようになる tempfile --- Generate temporary files and directories — Python 3.11.10 ドキュメント 28
マッチングアルゴリズムの社会実装に向けて Windows ● int型に対するPanderaスキーマ定義 ○ ○ ChilmAIではPanderaを用いて入力ファイルのデータバリデーションを行っているが、 データの型について単に int と書かれた場合にOS間で扱いが異なる https://github.com/unionai-oss/pandera/issues/726 29
マッチングアルゴリズムの社会実装に向けて Windows その他細かいもの ● Mac/Linuxで動いていた依存関係のバージョンをWindowsで動く状態にFix ● GitHub ActionsワークフローをWindows Runnerを利用する形で途中のコマンド 群もほぼ置き換え 自分はこの影響でChilmAI用にWindows PCを申請… Windowsでの利用が決まっているなら最初からWindowsで開発・CI/CDやっておくべ き、という超初歩的な反省… 30
マッチングアルゴリズムの社会実装に向けて 各自治体向けの成果物提供 今後ChilmAIは郡山市だけではなく他の自治体へも提供予定 コア機能であるマッチングは共通で使い回すものの、画面の見た目や入出力ファイル処理は各自治体向け に仕立ててあげる必要があり、同じコードベースからの成果物書き出しもその分だけ増えていく… 郡山市Streamlit A市Streamlit B市Streamlit マッチング機能 自治体数分のStreamlitアプリがリポジトリに生えていく… コア機能にバグ修正が出たら各自治体のアプリを置き換え 31
マッチングアルゴリズムの社会実装に向けて ローカルマシンに出力されるログ ウェブサービスのようにリアルタイムなアプリログ収集は不可能 ChilmAI使用中に発生したシステムエラーや操作ログについてはインストールフォルダ 内のログファイルをメールで送付してもらう運びに 32
マッチングアルゴリズムの社会実装に向けて CD-R経由での現地インストール 郡山市役所のポリシーとしてUSBフラッ シュメモリでの提供はNG❌ リリースのたびにCD-Rに成果物を焼いて 持っていき、PCのドライブから読み込ま せてインストール💿 リリース用のISO(ディスクイメージ)作 成を行うワークフローも整備 33
マッチングアルゴリズムの社会実装に向けて 郡山市からのフィードバック ● 直観的なUIで使いやすくなった ● エラー箇所がわかるようになり、入所選考作業の効率化につながっている 保育課長 11月稼働開始(12月入所選考分から利用開始)のため、利用調整についてのフィードバック がまだ届いていない状態… これまでのシステムに比べて、バリデーションなど非機能面での実装を頑張った結果が現れ てはいそう 引き続き、実際の割り当て結果にどういう影響を与えられ たかを詳しくヒアリングし、さらなるデータ化および状況 改善に努めていく 34
マッチングアルゴリズムの社会実装に向けて ChilmAI郡山市提供を通して ● 弊社が普段おこなっているWeb開発ではなかなかできない経験 ○ エンドユーザがどういうツール操作をするのか直接見ることができ、使用フィードバッ クの生声を聞ける ■ ○ もちろんウェブならではのリアルタイム性・スケール性はなく、デプロイ運用も泥臭い ■ ● 利用人数が少ないことでリクエストも取り入れやすい SIerだったり自治体向けのシステム提供経験者であれば当たり前の話かもしれないが… 郡山市民として自分もお世話になるかもしれないプロダクト ○ ○ もし将来自分が利用調整対象になったとしたらそれは最高のドッグフーディング 現地職員と直接会える場所に住んでるので地の利を活かしていきたい 35
マッチングアルゴリズムの社会実装に向けて エンジニアによるマッチングアルゴリズムの社会実装 ● コスパの良い開発・成果創出が狙える ○ ○ ● 業務理解、状況・課題の把握、要件定義 ○ ○ ● 特に今回のような経済学を発端とするアプローチの社会実装については、基礎的な開発 テクニックを抑えたエンジニアリングで出せる社会的価値が大きそう 昨今流行りの生成AIモデルの研究開発・運用と比べるとPDCAが回しやすい いくらアルゴリズムやモデルが良くても社会実装としての評価はそこに限らない システムの実装・導入後に副作用としてネガティブに働く要因がないか確認する 数理モデリング ○ ○ 変数と制約条件の数式化 エンジニアとして必須ではないがマッチング要件のモデリングと既存手法の実践までで きると、専門家・研究者とのコミュニケーションが取りやすい ■ いまは実務に即した技術書・入門記事がたくさんでています 36
マッチングアルゴリズムの社会実装に向けて リサーチエンジニアリングへの招待 AI Lab 経済学社会実装チームでは リサーチエンジニアを募集しています ● 実験・分析によって裏付けされた技術で社会を良くしたい ● アカデミックな領域にエンジニアリングで貢献したい 【AI Lab】リサーチエンジニア(経済学) | サイバーエージェントグループ 37