Slide 1

Slide 1 text

⾃動運転開発の実験管理と Kagglerたちの実験管理術 チューリング株式会社 岩政 公平 W&Bミートアップ 2025/03/27

Slide 2

Slide 2 text

● 岩政 公平 ● チューリング株式会社 E2E⾃動運転チーム MLエンジニア ○ 2022年8⽉~ インターン ○ 2023年4⽉~ ⼊社 ⾃⼰紹介

Slide 3

Slide 3 text

Agenda ● 会社紹介 ● End-to-End⾃動運転チームの実験管理 ● Kagglerたちの実験管理術

Slide 4

Slide 4 text

会社概要 名称
 Turing株式会社 創業
 2021年8⽉20⽇ 
 事業内容
 完全⾃動運転AIの開発 本社所在地
 東 京 都 品 川 区 ⼤ 崎 1 丁 ⽬ 11−2 ゲートシティ⼤崎 イースト棟4階 資本金
 3000万円(累計70億円調達) 社員数
 社 員 数 92 名 (正社員66名、アルバイト‧インターン26名)

Slide 5

Slide 5 text

チューリングのAI開発 Hu+ (2023), “Planning-oriented Autonomous Driving”, CVPR 2023.より引⽤ 物体検出 マップ予測 運動予測 占有率予測 ⾏動計画 BEV特徴 E2Eチーム: 単⼀のモデルで画像を⼊⼒に⾏動計画を⾏うモデルの開発 基盤AIチーム: 特に困難な状況に対応するためのモデルの開発 視覚-⾔語モデル ⽣成的世界モデル 画像では、⼯事現場の近くにある 交 差 点 で、 ⽩ いヘルメットをか ぶった男性が、交通整理をしてい ます。この男性は交通の流れを管 理し、事故を防ぎ、すべての道路 利⽤者の安全を確保する責任があ ります。

Slide 6

Slide 6 text

⽇本語VLMベンチマーク: Heron-Bench ⽇本語VLMのベンチマーク ● ⽇本特有の画像や⽂化理解に関する質問 ● CVPR 2024 The 3rd Workshop on Computer Vision in the Wildに採択 Heron-VLM Leaderboardの公開 ● W&B様と技術協⼒して⽇本語VLMの リーダボードを整備! ● Heron-Bench, LLaVA-Bench (in-the-wild) を⽤いた⾃動評価

Slide 7

Slide 7 text

Heron-Benchを⽤いた開発 Q. この建物は何⾊でしょうか?

Slide 8

Slide 8 text

Heron-Benchを⽤いた開発 🤖「この建物は⾦⾊です。」

Slide 9

Slide 9 text

Heron-Benchを⽤いた開発 W&B上でVLMの推論結果やスコアが確認できる!

Slide 10

Slide 10 text

Heron-Benchを⽤いた開発 リーダーボード機能も⽤いることで他のモデルとの相対評価も可能に! https://zenn.dev/turing_motors/articles/bf84fad186a23b

Slide 11

Slide 11 text

E2E⾃動運転チームの 実験管理

Slide 12

Slide 12 text

Tokyo30 2025年末までに、カメラと AIだけで 東京エリアを30分以上介入なしで走行し続ける自 動運転モデルを開発します

Slide 13

Slide 13 text

チューリングが開発しているE2Eモデル 2025/03現在のモデル ● カメラ画像のみで学習‧推論 ● データ量は約1,000時間 ● 学習はH100 48枚で1週間

Slide 14

Slide 14 text

E2Eモデル開発まで必要なこと データ収集⾞ アノテーション データ準備 モデル学習 ● センサ構成決め ● センサの配置 ● キャリブレーション ● 収集⾞の施⼯ ● メンテナンス ● 異常データ検知 ● データアップロード ● ⾛⾏ルート⽣成 ● データ正規化 ● メタデータ付与 ● キャプショニング ● 埋め込みベクトル化 ● データバリデーション ● 学習データセット作成 ツール ● 2次元物体ラベル ● 3次元物体ラベル ● ベクターマップ ● 占有状態 ● オートラベリング ● E2Eモデル開発 ● E2Eモデル学習 ● 実験管理 ● SDK ● 可視化ツール ● モデルデプロイ ● リアルタイム推論 ● 制御     など ⾞両 クラウド上 モデル運⽤

Slide 15

Slide 15 text

何の実験を管理するか ● データセットの管理 ● モデルの管理

Slide 16

Slide 16 text

データセットの管理 ● 学習するデータセットも様々なパターンで作成するため再現性の担保 ● オートラベリングなどはキャッシュすることで同じ計算を複数⾏わない ● 各データセットの詳細(e.g., シーン数, ⾛⾏場所)はNotion上で管理 https://www.youtube.com/watch?v=_S1q6c-2if4 詳細なデータレイク設計はこちら

Slide 17

Slide 17 text

モデル学習の管理 ● 評価値や可視化動画をW&B上で管理 (特に動画を⽐較できるのがいい👍) ● 学習したモデルの重み実験コードと共にはオンラインストレージ上で管理 学習ログ 動画での可視化

Slide 18

Slide 18 text

uvを⽤いたモデル連携 ● モデルに応じて必要な前処理‧⼊出⼒‧後処理が異なる ● ⾛⾏実験中に複数モデルを変更可能な状態にしたい モデルとその処理を含めて1つのパッケージとしてビルドしておく! 学習環境 デプロイ環境 workspaces機能でモノレポっぽい開発 ⾃動運転システム pip install build / push - [email protected] - [email protected] - [email protected] - 前処理 - 後処理 - 学習 - 評価 など - 前処理 - 後処理 - モデル最適化 - ONNX など テスト プライベートPyPIサーバー

Slide 19

Slide 19 text

どのデータ、どのモデルの組み合わせがいいのか知るには

Slide 20

Slide 20 text

どのデータ、どのモデルの組み合わせがいいのか知るには 正しい評価指標 が必要

Slide 21

Slide 21 text

運転ポリシーの評価 オープンループ評価 ● 実際のデータを⽤いて⾃動運転システムが実際の⾛⾏データと どれだけ誤差なく同様の操作ができているかを評価 ● e.g., 将来の予測運転軌道と実際の運転軌道との回帰誤差 クローズドループ評価 ● シミュレータなどを⽤いて、⾃⾞と他の交通エージェントの⾏動が タイムステップごとに相互作⽤するような世界で⾛⾏能⼒を評価 ● e.g., 衝突性, ルートの逸脱性, 交通ルールの厳守性 正解点列 予測点列

Slide 22

Slide 22 text

これらの評価は相関しない Codevilla+ (2018), “On Offline Evaluation of Vision-based Driving Models, ECCV 2018.より引⽤ オープンループ評価 クローズドループ評価 👍 👎 👍 👎 ● Codevillaら [ECCV18] はシミュレータを⽤いて、オープンループ評価で 同じスコアのモデルでも実際の運転性能に⼤きな違いがあると⽰した ● 我々の経験則にも⼀致 ⾚枠はオープンループ評価では ⾼精度なもののクローズドループ 評価による運転性能が悪い 緑点線はオープンループ評価は 同じもののミュレータを⽤いた クローズドループ評価による 運転性能は⼤きく異なる

Slide 23

Slide 23 text

E2Eモデルは運転性能評価が難しい 様々なギャップと評価の困難さがある ● シミュレーションと現実世界のドメインギャップ ● オープンループ評価とクローズドループ評価のギャップ ● クローズドループ評価の定量評価をどうするか ● 複数の指標のうち、どの指標を最適化するのが望ましいか 複数のモデルの実験管理と再現性の困難さがある ● ⾃動運転システム⾃体の更新に対する再現性の担保 ● 現実世界では同じ現象に⼆度と遭遇しない ● 複数のモデルを効率的にシステムに組み込むか など

Slide 24

Slide 24 text

解決策 シミュレータを活⽤する ● CARLAやMetaDriveを活⽤した 簡易的な運転性能の評価 ● 制御システムを介して⾛⾏ 実際に⾞両にデプロイ ● 予測結果に問題なければ実際に⾞両にモデルを載せて⾛⾏させる ● リアルタイム推論が必要なためモデルの推論速度に制限あり ○ 量⼦化やTensorRT化などのモデル最適化を⾏う ● ⾛⾏ログを残し机上で再現を⾏うシステムも構築 (モデルを差し替えも可能) MetaDrive https://github.com/metadriverse/metadrive

Slide 25

Slide 25 text

将来的な解決策: データ駆動のシミュレータ NAVSIM [Dauner+ NeurIPS2024] ● 実際の⾛⾏データを⽤いた⾮反応型のシミュレータの活⽤ ● 中間的な評価⽅法で、クローズドループ評価に⽐較的相関する https://www.youtube.com/watch?v=Qe76HRmPDe0 Dauner+ (2024), “NAVSIM: Data-Driven Non-Reactive Autonomous Vehicle Simulation and Benchmarking”, NeurIPS 2024. https://opendrivelab.com/challenge2024/#end_to_end_driving_at_scale CVPR 2024/2025ではWorkshop competitionも開催

Slide 26

Slide 26 text

将来的な解決策: 世界モデル 動画と予測経路を ⼊⼒に将来の動画を⽣成 ⽣成的世界モデル: Terra ● シミュレーションと現実のギャップを減らすために世界モデルを活⽤したい ● 動画⽣成に時間がかかり、また複数のセンサシミュレーションにも課題

Slide 27

Slide 27 text

Kagglerの実験管理術

Slide 28

Slide 28 text

合わせてコンペメダル ⾦28枚 銀52枚 銅16枚! チューリングのKaggler

Slide 29

Slide 29 text

Kagglerアンケート 以下についてアンケートしました! ● コンペで⼀番使っている実験管理サービスは何ですか?(e.g., W&B, MLFlow) ● 環境構築には何を使いますか? (e.g., uv, Poetry) ● ⼀番使っている深層学習フレームワークは何ですか? ○ 画像認識タスクで使っている深層学習フレームワークは何ですか? ○ NLPタスクで使っている深層学習フレームワークは何ですか? ● Kaggleでの実験スタイルは何ですか?(e.g., 1実験1スクリプト) ● Kaggleでチームでの実験管理するときに気をつけていることはありますか?

Slide 30

Slide 30 text

⼀番使っている実験管理サービスは何ですか W&B スプレッドシート

Slide 31

Slide 31 text

環境構築には何を使いますか? uv venv + poetry venv + pip

Slide 32

Slide 32 text

画像タスクで使う深層学習フレームワークは PyTorch 物体検出はmmdet。それ以外はフレームワークの機能をフルで使うことはあまりない。 拡散モデルの学習の際に⼀部機能だけDiffusersを使⽤する。 画像分類などはPyTorch。物体検出系はmmdet, detectron2, Transformers を使う。 GitHubのコード (YOLOX や Grounded-SAMとか) を直接使うことも多い。 Semantic segmentationはSegmentation Models PyTorch (SMP) を使う。 PyTorch 。画像分類などでしか画像タスクをやったことがない。 PyTorch Lightning (pl) をメインで使う。Semantic segmentationならSMP+ pl。 Instance segmentationならmmdet、物体検出ならそのモデルに合わせる(e.g., YOLOX)

Slide 33

Slide 33 text

NLPタスクで使う深層学習フレームワークは Keras Transformersを使うことが多いが、trainerは使わない。学習部分は⽣PyTorch Transformersを使う。Trainerを使う。 PyTorch, Transformers Transformersをメインで使う。最近はTrainerも使う。

Slide 34

Slide 34 text

実験スタイルは何ですか commit ID+configスクリプト 1実験1スクリプト 1実験1スクリプトを⼼がけている。 実験増えてくるとスプレッドシートで実験名とスコアをまとめる。 1実験1スクリプト 1実験1スクリプト。汎⽤的に使うコードはmoduleとして分けておく。

Slide 35

Slide 35 text

チームでの実験管理に気をつけていることは 実験にモデル番号と名前をつけて他のメンバーが⾒ても何のログか分かるようにしている。 実験の再現をしやすいようにどのような環境でどのような設定で実験を⾏なっていたかは 記録するようにしている。 環境構築。他メンバーのコード実⾏できるように、ライブラリのバージョンをチーム内で できるだけそろえる。 何もない気がする。最初は⾊々揃えた⽅が良いと思っていたが、 直近のKaggleだと「うんうん、それも多様性だよね」という考えになった。 コンペならインターフェイスや評価⽅法を揃える(出⼒csvは揃える、foldは揃えない)。 Submit時は、それぞれの推論コードは%%pythonでセルごとに管理する。 業務ならlinterをつける。特に最近はjaxtypingでテンソルのshapeの型付けするのが好き。

Slide 36

Slide 36 text

イベント情報 Kaggler向けイベントを⾏います!connpassで申し込みお願いします! https://turing.connpass.co m/event/347982/

Slide 37

Slide 37 text

応募待っています!(カジュアル⾯談も!) ● MLエンジニア(⾃動運転エンジニア‧リサーチャー) ● ソフトウェアエンジニア (プラットフォーム / MLOps) ● ⾞やセンサが好きな⼈‧運転が上⼿い⼈ ● GPU使うことが好きな⼈ などなど \インターン‧新卒も!∕

Slide 38

Slide 38 text

No content