OpenStreetMapから交通流予測モデルを構築し、異なる道路ネットワーク間転移へ挑戦する
第6回 複数道路ネットワークの同時推論を試す (Batch LoRA Inferenceを参考に)
この記事でわかること
- 複数道路ネットワークのトークン列を連結し、一回のTransformerで同時推論する方法
- EdgeLoRAで提案されている Batch LoRA Inference の考え方を交通流予測へ応用する方法
目次
- はじめに
- 複数Adapterによる同時推論
- 実装
- 実験条件
- 推論結果
- Batch LoRA Inferenceとの比較
- 考察
- まとめ
1. はじめに
本連載では、OpenStreetMapとUXsimを利用して交通流予測モデルの構築を進めています。
第1回では、OpenStreetMapから道路ネットワークを取得し、UXsimを利用して交通流データセットを作成しました。
- 第1回 OpenStreetMapから浅間下交差点周辺の交通流データセットを作る
https://qiita.com/ahaya/items/95567b4c44d0635bdbc8
第2回では、Graph EmbeddingとTransformerを用いた交通流予測モデルを構築し、
過去1時間
↓
未来1時間
の交通流予測を行いました。
- 第2回 交通流予測モデルを構築する
https://qiita.com/ahaya/items/c14e5d68538ac0d04391
第3回では、浅間下交差点周辺で学習したモデルを利用し、ノード数の異なる川崎市立幸高校周辺の道路ネットワークへの転移学習を試しました。
- 第3回 ノード数の異なる道路ネットワークへの転移学習を試す
https://qiita.com/ahaya/items/eb1ff83f522f2165f5ec
第4回では、複数の道路ネットワークが一つのTransformerを共有するマルチネットワーク交通予測モデルを試作しました。
- 第4回 浅間下交差点周辺と川崎市立幸高校周辺を対象としたマルチネットワーク交通予測モデルの試作
https://qiita.com/ahaya/items/90ef60e375a25a382123
そして第5回では、浅間下交差点周辺と川崎市立幸高校周辺のデータを用いてShared Transformerの共同学習を行いました。
- 第5回 複数道路ネットワークによる共同学習を試す
https://qiita.com/ahaya/items/f9a4af657a7982ca80fd
今回は第5回の研究で得られた2つの学習済みAdapterとShared Transformerを用いて、複数道路ネットワークを同時に推論できないかを検討します。
着想の元になったのは、EdgeLoRAで提案されている Batch LoRA Inference です。EdgeLoRAでは複数のLoRA Adapterを利用するリクエストを一度に処理することで推論効率を向上させています。
- 参考:”EdgeLoRA: An Efficient Multi-Tenant LLM Serving System on Edge Devices" https://arxiv.org/abs/2507.01438
本研究ではこの発想を交通流予測へ応用します。
具体的には、
浅間下ネットワーク
+
川崎ネットワーク
のトークン列を連結し、一回のShared Transformer推論で処理できるかを検証します。
2. 複数Adapterによる同時推論
第5回では、浅間下交差点周辺と川崎市立幸高校周辺のデータを用いて Shared Transformer の共同学習を行いました。
このときの推論は、
浅間下
↓
Shared Transformer
川崎
↓
Shared Transformer
のように、それぞれ独立に実行していました。
一方、近年の大規模言語モデルの分野では、一つのベースモデルに対して複数のLoRA Adapterを適用する Batch LoRA Inference が研究されています。EdgeLoRAでは複数のLoRA Adapterを利用するリクエストをまとめて処理することで推論効率を向上させています。
本研究ではこの発想を交通流予測へ応用します。
具体的には、
浅間下ネットワーク
122×12 = 1464 tokens
川崎ネットワーク
126×12 = 1512 tokens
を生成し、
浅間下トークン列
+
川崎トークン列
を連結して、一回のShared Transformerで推論を行います。
ただし単純にトークンを連結すると、
浅間下のトークン
↓
川崎のトークンを参照
川崎のトークン
↓
浅間下のトークンを参照
という Cross-Network Attention が発生する可能性があります。
そこで今回は、
浅間下 → 川崎
川崎 → 浅間下
の Attention を禁止する Network Isolation Mask を導入し、
個別推論と同等の結果を維持したまま Batch Inference を実現できるかを検証します。
図1に今回の推論構成を示します。
図1 推論の構成
3. 実装
第5回では、道路ネットワークごとに独立してShared Transformerを呼び出していました。
浅間下
↓
Shared Transformer
川崎
↓
Shared Transformer
今回は、EdgeLoRAで提案されている Batch LoRA Inference の考え方を参考に、一回のTransformer推論で複数道路ネットワークを処理することを試みます。
まず各道路ネットワークに対して Graph Embedding と Position Embedding を適用し、トークン列へ変換します。
token_s = temp_s.reshape(
batch_size,
122 * self.con_length,
self.n_embd
)
token_k = temp_k.reshape(
batch_size,
126 * self.con_length,
self.n_embd
)
浅間下交差点周辺は
122 × 12 = 1464 tokens
川崎市立幸高校周辺は
126 × 12 = 1512 tokens
となります。
これらを連結し、一つの入力系列としてShared Transformerへ入力します。
token_all = torch.cat(
[token_s, token_k],
dim=1
)
連結後の系列長は
1464 + 1512 = 2976 tokens
となります。
しかし、このままでは
浅間下のトークン
↓
川崎のトークンを参照
川崎のトークン
↓
浅間下のトークンを参照
という Cross-Network Attention が発生してしまいます。
そこで Network Isolation Mask を導入しました。
NS = 122 * self.con_length
NK = 126 * self.con_length
mask = torch.ones(
NS + NK,
NS + NK,
device=self.device
)
mask[:NS, NS:] = 0
mask[NS:, :NS] = 0
このマスクにより、
浅間下 → 浅間下 ○
川崎 → 川崎 ○
浅間下 → 川崎 ×
川崎 → 浅間下 ×
となり、道路ネットワーク間の相互参照を禁止します。
最後にShared Transformerの出力を元の位置で分離し、それぞれの道路ネットワーク固有のFully層へ入力します。
x_s = x[:, :1464]
x_k = x[:, 1464:]
out_s = adapter_s.fully(x_s)
out_k = adapter_k.fully(x_k)
これにより、一回のTransformer推論で複数道路ネットワークを同時に処理できるようになります。
4.実験条件
第5回で共同学習した Shared Transformer を利用し、Batch Inference を行いました。
実験には、
- 浅間下交差点周辺(122ノード)
- 川崎市立幸高校周辺(126ノード)
の2つの道路ネットワークを利用しました。
推論時には、
浅間下トークン列
1464 tokens
+
川崎トークン列
1512 tokens
を連結し、
2976 tokens
の系列として Shared Transformer に入力しました。
また、単純なトークン連結では道路ネットワーク間で相互に Attention が発生するため、Network Isolation Mask を導入しました。
表1に実験条件を示します。
表1 実験条件
| 項目 | 内容 |
|---|---|
| 対象ネットワーク① | 浅間下交差点周辺(122ノード) |
| 対象ネットワーク② | 川崎市立幸高校周辺(126ノード) |
| Shared Transformer | 第5回の共同学習済みモデルを利用 |
| Shared LayerNorm | 第5回の共同学習済みモデルを利用 |
| GraphEmbedding | ネットワークごとに保持 |
| PositionEmbedding | ネットワークごとに保持 |
| Fully | ネットワークごとに保持 |
| 推論方式 | Token連結によるBatch推論 |
| Batch Token数 | 1464 + 1512 = 2976 tokens |
| Attention制御 | Network Isolation Mask |
| 評価指標 | MAE, RMSE, MAPE |
5. 推論結果
まず、浅間下交差点周辺と川崎市立幸高校周辺のトークン列を単純に連結し、一回のShared Transformerで推論を行いました。
しかし、この方法では
浅間下トークン
↓
川崎トークンを参照
川崎トークン
↓
浅間下トークンを参照
する Cross-Network Attention が発生し、個別推論と比較して予測精度が悪化しました。
まず、第5回で構築した共同学習モデルによる個別推論の結果を表2に示します。
表2 個別推論結果(第5回)
| ネットワーク | MAE | RMSE | MAPE |
|---|---|---|---|
| 浅間下交差点周辺 | 2.931 | 5.231 | 36.05% |
| 川崎市立幸高校周辺 | 3.013 | 5.621 | 43.39% |
次に、浅間下交差点周辺と川崎市立幸高校周辺のトークン列を単純に連結し、一回のShared Transformerで推論を行った結果を表3に示します。
表3 Batch推論結果(Maskなし)
| ネットワーク | MAE | RMSE | MAPE |
|---|---|---|---|
| 浅間下交差点周辺 | 3.141 | 5.514 | 37.75% |
| 川崎市立幸高校周辺 | 3.481 | 6.020 | 47.48% |
このように単純なトークン連結では予測性能の悪化が確認されました。
そこで、
浅間下 → 川崎
川崎 → 浅間下
のAttentionを禁止する Network Isolation Mask を導入しました。
その結果を表4に示します。
表4 Batch推論結果の比較
| ネットワーク | 個別推論 | Batch推論 (Maskなし) |
Batch推論 (Maskあり) |
|---|---|---|---|
| 浅間下交差点周辺 MAE | 2.931 | 3.141 | 2.933 |
| 川崎市立幸高校周辺 MAE | 3.013 | 3.481 | 3.011 |
| 浅間下交差点周辺 RMSE | 5.231 | 5.514 | 5.230 |
| 川崎市立幸高校周辺 RMSE | 5.621 | 6.020 | 5.620 |
このように、Mask導入後の Batch 推論は個別推論とほぼ同一の性能となりました。
さらに、個別推論と Batch 推論(Maskあり)の出力差を確認したところ、
max(abs(out_individual - out_batch))
≈ 5.96 × 10^-7
でBatch推論と個別推論は実質的に同一の結果であることを確認しました。
6. Batch LoRA Inferenceとの比較
本研究の着想は、EdgeLoRAで提案されている Batch LoRA Inference にあります。
- 参考:”EdgeLoRA: An Efficient Multi-Tenant LLM Serving System on Edge Devices" https://arxiv.org/abs/2507.01438
EdgeLoRAでは、複数のLoRA Adapterを利用するリクエストをまとめて処理し、一回のBase Model推論で複数の要求を同時に処理します。
概念的には、図2のようになります。
図2. EdgeLoRAのBatch LoRA Inference
本研究では、この考え方を交通流予測へ適用しました。
対応関係を表4に示します。
表5 EdgeLoRAとの比較
| EdgeLoRA | 本研究 |
|---|---|
| LoRA Adapter | Network Adapter |
| Base Model | Shared Transformer |
| Request | 道路ネットワーク |
| Batch LoRA Inference | Batch Network Inference |
| Adapter Isolation | Network Isolation Mask |
7. 考察
単純にトークン列を連結した Batch 推論では、表3に示したように個別推論と比較して予測性能が低下しました。
これは異なる道路ネットワーク間で Cross-Network Attention が発生し、
浅間下ネットワーク
↓
川崎ネットワークを参照
川崎ネットワーク
↓
浅間下ネットワークを参照
する状態になったためと考えられます。
そこで
浅間下 → 川崎
川崎 → 浅間下
の Attention を禁止する Network Isolation Mask を導入しました。
その結果、表4のようになり、個別推論とほぼ同一の結果が得られました。
これは EdgeLoRA で提案されている Batch LoRA Inference の考え方を、交通流予測へ応用できる可能性を示す結果と考えています。
8. まとめ
本稿では、第5回で共同学習した Shared Transformer を利用し、複数道路ネットワークの同時推論に挑戦しました。
その結果、
- 浅間下ネットワーク(122ノード)
- 川崎ネットワーク(126ノード)
のトークン列を連結し、一回の Shared Transformer 推論で処理できることを確認しました。
また、単純なトークン連結では Cross-Network Attention により予測精度が低下することを確認しました。
そこで Network Isolation Mask を導入したところ、Batch推論と個別推論の出力差は
5.96 × 10^-7
誤差の範囲に収まりました。
今回の結果は、複数道路ネットワークに対するBatch推論が可能であることを示しました。
さらに、
- 個別推論
- Batch推論(Maskあり)
が実質的に同一の結果となることも確認できました。
このことは、道路ネットワークごとにTransformerを複製することなく、一つのShared Transformerを用いて複数道路ネットワークを同時に処理できる可能性を示しています。
道路ネットワーク数が増加した場合でも、Network Adapterを追加するだけで対応できる可能性があり、マルチネットワーク交通予測モデルの拡張性向上につながると考えられます。
本シリーズが、OpenStreetMap・UXsim・Transformer を利用した交通流予測モデルや、マルチネットワーク学習に興味のある方の参考になれば幸いです。