Slide 1

Slide 1 text

© GO Inc. AIをプロダクトに実装するならAPIで分離しよう 〜タクシーアプリ『GO』 アーキテクチャ実例紹介〜 Atsushi Morimoto (@74th) GO Inc. Postman API Night Tokyo 2025 Winter 2025-02-03

Slide 2

Slide 2 text

© GO Inc. ● タクシーアプリ『GO』とそ 周辺サービスで、 複数 AI機能を本番導入させています ○ 「AI = データ中心 アルゴリズムを使った機能」と定義します ● AI機能 マイクロサービスとしてAPIで構成しており、 AI機能特有 アーキテクチャについて、2つ 事例を例に説明します 今回 お話

Slide 3

Slide 3 text

© GO Inc. 3 GO株式会社 AI技術開発部 データプラットフォームグループ @74th 執筆 ・改訂新版Visual Studio Code実践ガイド(技術評論社) ・技術書典3~17サークル参加、新刊継続中 ・GO Inc. 有志メンバーでも技術書典参加中 普段 お仕事 ・AI組込プロダクト 開発・運用 Atsushi Morimoto (@74th) 自己紹介

Slide 4

Slide 4 text

© GO Inc.

Slide 5

Slide 5 text

© GO Inc. より「早く乗れる」体験に加え、ニーズに応じた豊富なオプションサービスを提供 6 タクシーアプリ『 GO』と ? GO優良乗務員 ※サービスによって提供エリア・提供条件が異なります 空気清浄機搭載 JPN TAXI AI予約 こだわり条件 空港定額 『GO PREMIUM』 複数台配車 アプリ り も続々開設中 2021年12月 福岡空港
 2022年4月 ららぽーと福岡
 2022年7月 羽田空港
 2022年9月 松山空港
 2023年11月 麻布台ヒルズ
 2023年12月 セントレア
 2024年1月 成田空港
 2024年6月 関西国際空港
 2024年7月 旭川空港


Slide 6

Slide 6 text

© GO Inc. 7 紹介するアーキテクチャ 経路推薦API 事前処理・定期バッチ 需要予測 アルゴリズム 特徴量 入力 経路推薦 アルゴリズム 共有ステート 出力 リアルタイム情報入力 リクエスト 受付API 短周期バッチ サービス リクエスト 出力 溜め込む ① 事前計算とリアルタイム処理 ② 溜め込んで短周期マイクロバッチ コアアルゴリズムAPI 配車マッチング アルゴリズム ※アイコン素材:OpenMoji https://openmoji.org/

Slide 7

Slide 7 text

© GO Inc. 8 サービス1 タクシー乗務員向け需要予測 01

Slide 8

Slide 8 text

© GO Inc. 9 ● タクシー 乗車地点を分析し、需要を予測 ● ナビ ルート案内 形で、タクシー お客さん いる場所へ導く サービス1: タクシー乗務員向け需要予測 予測需要可視化例 注: 図 例示 ため、実データで ありません

Slide 9

Slide 9 text

© GO Inc. ・道路情報 ・乗車実績 ・走行実績 ・車両位置 ・他 車両へ 推薦ルート 10 AIアルゴリズムを動かす アルゴリズム 入力 ・道路グラフ ・交通規制 ・車線数など 出力 ・今後5分間 走行ルート

Slide 10

Slide 10 text

© GO Inc. 11 実際 複数 アルゴリズムから構成される 需要予測 アルゴリズム 入力 出力 経路推薦 アルゴリズム 都内全域でまとめて計算 車両周辺に絞って計算 ・道路情報 ・乗車実績 ・走行実績 ・車両位置 ・他 車両へ 推薦ルート ・道路グラフ ・交通規制 ・車線数など ・今後5分間 走行ルート ・道路単位  走行価値

Slide 11

Slide 11 text

© GO Inc. 経路推薦API 経路推薦API 事前処理・定期バッチ 12 アルゴリズムをバッチとAPIとして構成 需要予測 アルゴリズム 特徴量 入力 経路推薦 アルゴリズム 経路推薦 アルゴリズム 共有ステート ルート 案内 リアルタイム 情報入力 ルート 案内

Slide 12

Slide 12 text

© GO Inc. 配車サービスAPI 配車サービスAPI 経路推薦API 経路推薦API 13 メイン 配車サービスAPI内に構築せず、 経路推薦API機能 みをマイクロサービスとして分割して構築した。 サービスとして分かれていることで、ワークロード 特性に応じてスケール 設定ができる。 今回AIサービス API 分離 配車サービスAPI 経路推薦API ・処理コスト 多く  DB処理と、他サービス連携 ・ほぼ計算(CPU)処理 ・メモリも多く必要

Slide 13

Slide 13 text

© GO Inc. 14 ● 定性・定量 両面で評価を実施。期待と異なるルート 傾向が見られた。 ○ 右左折が多い、需要 なさそうなエリアに向かっているなど ○ 多く 、需要予測時 データを見れ 良いが、それだけで 分からないことも ● こ 瞬間にしかないデータ(API間共有ステートや、車両位置)もあり、 ルート案内 形で出力された後に、再現したアルゴリズム 検証が難しい 起こったトラブル:再現が難しい 経路推薦API 経路推薦 アルゴリズム 車両位置 需要予測 道路情報 共有ステート ルート案内

Slide 14

Slide 14 text

© GO Inc. 15 ● アルゴリズム コア 計算処理 ステートレスモジュール化 ● インプットにもちいるデータを、APIリクエスト毎にバックアップ ● 異常経路が検出されたら、バックアップを使ってローカル上で検証し、 どこから問題が混入したか追う 対策: ステートレス関数化して、引数バックアップ 経路推薦API 経路推薦 アルゴリズム 車両位置 需要予測 道路情報 共有ステート ルート案内

Slide 15

Slide 15 text

© GO Inc. 16 ● タクシー 運行を模擬するシミュレータを作成 ○ パラメータチューニングや、更新されるモデル 監視を、シミュレータで評価する ● A/Bテスト ○ シミュレーションできる範囲に 限界があり、 実環境でA/Bテストでチューニングする ○ そ 際、事前にシミュレータで 実施した上で、 大きく毀損しない事 確認してから進める アルゴリズム 改善 どうやってた?

Slide 16

Slide 16 text

© GO Inc. 17 サービス2 配車マッチング 全体最適化 02

Slide 17

Slide 17 text

© GO Inc. 複数 配車注文(ユーザ)と、車両がある中で、 ど 配車注文と車両を対応させるかを決定する サービス2: 配車マッチング 全体最適化 マッチング前 最短優先 全体最適

Slide 18

Slide 18 text

© GO Inc. ● 配車依頼をDBにため込む。 ● 「数秒間隔」x「エリア」ごとにバッチを起動して、一括して処理する。 ● 短周期で実行するため、ニアリアルタイムとなる。 配車マッチングシステム アーキテクチャ

Slide 19

Slide 19 text

© GO Inc. 短周期バッチサービス 20 ● コアアルゴリズムと、永続化・バッチ起動 役割を分割し、 コアアルゴリズムをステートレス化 ● 数秒周期 バッチ起動など、リアルタイム処理が要求される処理 Go言語で実装 バッチサービスをさらにマイクロサービスを分けた ステートレスAPI コアアルゴリズム リクエスト 受付API gRPC DB 短周期バッチ サービス ・ステート管理 ・「エリアx一定周期」    バッチ起動 ・マッチング  アルゴリズム演算

Slide 20

Slide 20 text

© GO Inc. ステートレスAPI ステートレスAPI 21 ● 正確に「一定短周期 x エリア」で 「重複なく」起動するバッチ管理システムが欲しい ● 配車サービス コア機能となるため、高可用性が求められた 課題: バッチ管理システム 単一障害点になりやすい ステートレスAPI 短周期バッチ サービス DB ここも可用性を担保したい コアアルゴリズム

Slide 21

Slide 21 text

© GO Inc. 集中管制システムを置くとしたら、それが単一障害点

Slide 22

Slide 22 text

© GO Inc. ● 各プロセスにタスク管理ルーチンを置いて、 Redisで共有。 ● 1つ プロセスが落ちても他 プロセスが処理できる。 解:各プロセスに管制システムを置いて、Redisで共有

Slide 23

Slide 23 text

© GO Inc. ● Redis 単一障害点だが、Redisであれ 、 利用するクラウドサービスプロバイダによって 高可用性オプションが提供されたり、 アプリケーションで なくインフラ レイヤーで可用性を 高められる。 ● 各ワーカープロセス内にタスク管理ルーチンがいること で1つ プロセス いつでも終了できるようになったた め、 ローリングアップデートできて、リリースが手軽に。 なぜこ ような複雑なも になり、何が良くなったか

Slide 24

Slide 24 text

© GO Inc. 25 まとめ 03

Slide 25

Slide 25 text

© GO Inc. 26 紹介したアーキテクチャ 経路推薦API 事前処理・定期バッチ 需要予測 アルゴリズム 特徴量 入力 経路推薦 アルゴリズム 出力 リアルタイム情報入力 リクエスト 受付API 短周期バッチ サービス リクエスト 出力 溜め込む ① 事前計算とリアルタイム処理 ② 溜め込んで短周期マイクロバッチ ● APIを中心としたAIプロダクト アーキテクチャ事例を 2つ紹介 ● 再現性を確保するため、コア アルゴリズム ステートレス化がポイント コアアルゴリズム API 全体最適化 アルゴリズム

Slide 26

Slide 26 text

© GO Inc. 27 ● 様々なプロダクト アーキテクチャーを図録 形で解説 ● 今回 システム より詳しい部分や アルゴリズム 中身 部分 アーキテクチャも ● 技術書典マーケットにて無料PDFを配布中 第1弾: https://techbookfest.org/product/5873782252109 824 第2弾: https://techbookfest.org/product/upUucBBzMTdG j6dSMEKb6T ● エンジニア積極採用中! 様々なアーキテクチャー 会社 同人誌に

Slide 27

Slide 27 text

文章・画像等 内容 無断転載及び複製等 行為 ご遠慮ください。 © GO Inc.