AIモデルをエッジデバイスにデプロイする方法|TensorFlow Lite vs ONNX Runtime
クラウドで学習したAIモデルをエッジデバイスで動かすには、モデルの変換・最適化が必要です。本記事では、代表的なエッジ推論フレームワーク「TensorFlow Lite」と「ONNX Runtime」の特徴を比較し、Raspberry PiやJetsonへのデプロイ手順を解説します。
※本記事の手順は参考情報です。各フレームワークの公式ドキュメントも必ずご確認ください。
エッジデプロイの基本概念
クラウドで学習したモデル(PyTorch, TensorFlowなど)をそのままエッジデバイスで動かすのは困難です。理由は以下の2点です。
そのためエッジデプロイでは「モデル変換」と「量子化」が鍵になります。
TensorFlow Lite(TFLite)
### 概要
Googleが開発したモバイル・エッジ向け推論フレームワーク。AndroidやRaspberry Piでの利用実績が豊富。
### 対応ハードウェア
### 変換手順
```python
import tensorflow as tf
# TFLite変換
converter = tf.lite.TFLiteConverter.from_saved_model('model_dir')
# INT8量子化の有効化
converter.optimizations = [tf.lite.Optimize.DEFAULT]
# 代表データセットで量子化
converter.representative_dataset = representative_data_gen
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
tflite_model = converter.convert()
with open('model_quant.tflite', 'wb') as f:
f.write(tflite_model)
```
### パフォーマンス目安(Raspberry Pi 4での画像分類)
ONNX Runtime
### 概要
Microsoftが主導するオープン標準フレームワーク。PyTorchモデルのエッジデプロイに最適。様々なバックエンドに対応。
### 対応ハードウェア
### 変換手順(PyTorchから)
```python
import torch
import torch.onnx
# PyTorchモデルをONNXに変換
model = MyModel()
dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(
model,
dummy_input,
'model.onnx',
opset_version=17,
input_names=['input'],
output_names=['output']
)
```
```python
# ONNX Runtimeでの推論
import onnxruntime as ort
import numpy as np
session = ort.InferenceSession('model.onnx')
result = session.run(None, {'input': input_array})
```
### JetsonでのTensorRT高速化
NVIDIA Jetsonでは、TensorRTプロバイダーを使ってGPU推論を大幅に高速化できます。
```python
session = ort.InferenceSession(
'model.onnx',
providers=['TensorrtExecutionProvider', 'CUDAExecutionProvider']
)
```
TFLite vs ONNX Runtime 比較表
| 比較項目 | TFLite | ONNX Runtime |
|---------|--------|-------------|
| 元のフレームワーク | TensorFlow | PyTorch・多数 |
| Raspberry Pi対応 | ◎ | ◎ |
| Jetson(GPU)対応 | △ | ◎(TensorRT) |
| マイクロコントローラー | ◎(TFLite Micro) | △ |
| 量子化サポート | ◎ | ○ |
| モデルの互換性 | TFモデルのみ | 多フレームワーク |
量子化の効果と注意点
### INT8量子化のメリット
### 精度低下のリスク
量子化により精度(Accuracy)が0.5〜2%程度低下することがあります。精度が重要な用途(医療、品質検査など)では、十分な検証データでの評価が必須です。
### 量子化の推奨手順
デバイス別推奨フレームワーク
**Raspberry Pi(ARM CPU)**
→ TFLite(INT8量子化)またはONNX Runtime(CPU provider)
**NVIDIA Jetson(GPU搭載)**
→ ONNX Runtime + TensorRTプロバイダー、またはTensorRT直接利用
**Google Coral(Edge TPU)**
→ TFLite(EdgeTPUコンパイル必須)
**マイクロコントローラー(ESP32等)**
→ TFLite Micro、またはEloquent ML
コスト比較ツールの活用
エッジデプロイによってどの程度コストを削減できるか、AI推論コスト計算機で試算できます。クラウドAPIを使い続ける場合との費用比較を行い、エッジ化の費用対効果を事前に把握してから移行を進めることをお勧めします。
まとめ
AIモデルのエッジデプロイには、フレームワーク選定・量子化・ハードウェア対応の3つを組み合わせた最適化が必要です。TFLiteはRaspberry Piやマイコン向けに充実しており、ONNX RuntimeはNVIDIA Jetsonでの本格GPU推論に強みがあります。まずAI推論コスト計算機でコスト見通しを確認し、ビジネスケースを固めてから実装に進みましょう。