NVIDIAのオープンソースアクセラレータ「NDVLA」
NVIDIAはVolta、TuringなどのGPUとは別に、「NVDLA(NVIDIA Deep Learning Accelerator)」というものを発表した。NVDLAはディープラーニング用のアクセラレータで、GitHubでソースが公開されており、NVIDIAのOpen NVDLAライセンスでローヤリティーフリーで利用できるようになっている。
なお、NVIDIAの自動車向けのディープラーニング用のXavierチップにはNVDLAが組み込まれている。
次の図に示すように、NVDLAはFP16とINT16では1024個のMAC、INT8では2048個のMACを持ち、それにデータの入力とデータの出力のDMA、メモリインタフェースがついている。さらに、疎な重みの伸長回路、入力のWinograd変換回路などがついたディープラーニング用のアクセラレータである。
NVIDAのXavierチップは、NVDLAに加えて、GPUやPVAによるComputer Vision処理などを行う各種のエンジンを搭載している。Volta GPUは512個のCUDAコアを搭載し、 Tensorコアによる20TOPSのディープラーニング性能を持つ。DLAはFP16で5TFlops、ビデオプロセサはエンコードでは1.2GPIX/s、デコードでは1.8GPIX/s、PVAは1.6TOPSでステレオ表示やイメージ処理ができる。さらに、8コアのArm64 CPUを搭載している。
自動運転に必要な信頼度を実現するため、Arm64 CPUは2重化されており、メモリにはECC/Parityがつけられており、診断回路やBISTでエラーを検出を行っている。
NVIDIAはDrive AGXという自動運転用のプラットフォームを作っている。Drive AGX XavierはXavierチップ1個を使うもので、Level2+からLevel3の自動運転用である。Drive AGX PegasusはXavierチップを2個使い、Level4やRobo Taxiの自動運転用の製品である。
自動運転車では、周囲の認識だけでなく、次にどこに進めるかというフリースペースの認識、前の車までの距離の認識、天候の認識、LiDARでの周囲の認識、カメラに基づくマッピング、カメラに基づくHDマップでの位置認識、LiDARを使うHDマップでの位置認識、進路の認識、景色の認識など、この例では10種類の認識を行っている。
しかし、実車で公道を走って学習したり、安全性を確認したりするのは容易ではない。また、事故につながるような危険な状況は、ほとんど出てこず、安全性の確認という観点では実走行は効率が悪い。
そのため、NVIDIAではシミュレーションで車を走らせるということを行っている。たくさんの実走行データを集め、モデルの学習を行う。そして、実走行で集めたLiDARやカメラなどのセンサからの情報を再生し、それを入力として自動運転システムを使って走行させる。このようにすれば、安全な状況での走行は減らし、危険がある状況での走行を重点的に実行することも可能であり、検証の効率が上がる。
米国では1Billionマイルの車の走行あたり770回(おおよそ200万kmに1回)の事故が発生している。実車で1B(10億)マイル走るには20台の車で(50年間にわたって)年間100万マイル走る必要がある。これは時間が掛かるし、費用も膨大にかかる。
NVIDIA DRIVE SIMは8台のカメラとRadarとLiDARのシグナルを再生して、まれな運転の難しいケースをシミュレートする。そして、1万台のDGX-1を使うCONSTELLATIONでシミュレーションを行えば年間3Bマイルの走行をシミュレーションすることができる。
DGX-1を並べたCONSTELLATIONはBit精度のセンサ入力を再現し、ハードウェアをループ内に含むシミュレーションを実施する。そして、コーナーケースや稀なケースを再現して検証を行うことができる。
次の図は一例で、DRIVE CONSTELLATIONを使えば、周囲の明るさや天候が違う場合の環境を作り出して、走行を検証することができる。つまり、仮想的なテスト環境とテスト車群をクラウドの中に作り出して走らせることができる。
このような環境が整備されていけば、実車での走行を減らして経済的、かつ、効率的に自動運転車のテストが行なえるようになると期待される。