AI・テクノロジー
AlexNet:2012年のブレイクスルーを支えたCUDAエンジニアリング

2012年、AlexNetのブレイクスルーは、CUDA対応GPUと組み合わせた深層ニューラルネットワークが数十年にわたる従来のコンピュータビジョン工学を上回ることを証明しました。ImageNet Large Scale Visual Recognition Challenge(ILSVRC)において、Alex Krizhevsky、Ilya Sutskever、Geoffrey Hintonはトップ5エラー率15.3%を達成し、2位の26.2%を11ポイント近く上回りました。
ハードウェアのボトルネックと解決策
当時、PyTorchやTensorFlowのようなディープラーニングフレームワークは存在せず、コンシューマーGPUには深刻なメモリ制限がありました。
- コンシューマー向けゲーミングハードウェア:チームは2枚のコンシューマー向けNVIDIA GTX 580 GPUを使って寝室でネットワークを学習しました。各カードのVRAMはわずか3 GBで、6,000万パラメータのネットワーク全体を1枚のチップに収めることはできませんでした。
- CUDAによるモデル並列化:Alex KrizhevskyはカスタムCUDA C++カーネル(cuda-convnet)を記述し、ネットワークを2枚のGPUに垂直に分割しました。各GPUは自身の3 GBメモリプールにニューロンとカーネルの半分を格納しました。
- 選択的なGPU間通信:マザーボードのPCIeバス経由でGPU間のデータ転送が遅かったため、Krizhevskyは特定のレイヤー(レイヤー3など)でのみ通信するようにGPUをプログラミングしました。他のレイヤーは各カード上で完全に独立して動作し、帯域幅のボトルネックを最小限に抑えました。
重要なアーキテクチャ上のブレイクスルー
生のCUDA計算能力を手にしたことで、チームは以前は大規模にテストするには遅すぎたいくつかの重要な技術を組み合わせることができました:
- 深層アーキテクチャ:AlexNetは8つの学習可能なレイヤー(5つの畳み込みレイヤーに続く3つの全結合レイヤー)を積み重ねており、以前のニューラルネットワークよりはるかに深い構造でした。
- ReLU活性化関数:従来のtanhやsigmoidの代わりに、Rectified Linear Unit(ReLU)を採用しました。ReLUはCUDA上で計算が単純で、勾配消失を起こさずに深層ネットワークの学習を約6倍高速化しました。
- データ拡張とDropout:GPUが行列演算を処理する間、CPUはリアルタイムの画像変換(切り出しと反転)を生成して過学習を防ぎました。またDropoutを適用し、学習中にニューロンをランダムに無効化して、ネットワークに堅牢な特徴を学習させました。
なぜディープラーニング革命を引き起こしたのか
2012年9月以前、ほとんどのコンピュータビジョン研究者はエッジや形状を検出するために手作りのアルゴリズム(SIFTやHOGなど)に依存しており、深層ニューラルネットワークを行き詰まった理論と見なしていました。
- 学習時間:カスタムCUDAによる最適化を施しても、AlexNetは120万枚の高解像度画像の学習に5~6日かかりました。CUDAがなければ、同じ実験はCPUで数か月かかったでしょう。
- 業界の転換:AlexNetがImageNetであらゆる従来手法を圧倒すると、AI研究コミュニティ全体がほぼ一夜にして手作り特徴を放棄しました。研究者たちは殺到してNVIDIA GPUを購入し、NVIDIAはAIへと方向転換し、2年後にcuDNNをリリースしました。