2023年9月22日、iPhone 15 Proが発売されました。新しい計算機を手に入れたらやることと言えばニューラルネットワークのベンチマークですよね。Apple独自開発の機械学習専用チップNeural Engineのベンチマークを行いました。使用した深層学習モデルはdlshogi(将棋ソフト)用のものです。今後余裕があればより一般的なモデル(ResNet50等)に取り組みます。
モデルやCore MLを用いたコードの実装方法については過去の記事をご覧ください。
使用機種
機種 | SoC | OS | 発売日 |
---|---|---|---|
iPhone 15 Pro | Apple A17 Pro | iOS 17.0.2 | 2023-09-22 |
iPhone 13 Pro | Apple A15 Bionic | iOS 17.0.1 | 2021-09-24 |
iPhone 11 | Apple A13 Bionic | iOS 16.6.1 | 2019-09-20 |
iPad 第9世代 | Apple A13 Bionic | iOS 17.0.1 | 2021-09-24 |
測定条件
- 推論する深層学習モデル: dlshogi(将棋ソフト)用の10層192チャンネルのものをCore ML形式(Apple独自形式)に変換したもの。バッチサイズ1での推論コストは1.1GFLOPS(積和演算=2FLOPS)。
- 測定時間: 10秒間。推論1回が完了したら、すぐに次の推論を行う。発熱による速度の低下を回避するため、測定と測定の間に50秒以上空ける。最初の1回の推論は、ライブラリの初期化などが発生して遅い可能性があるので測定対象から除外。
- 計算に使用するデバイス: Neural EngineまたはCPU。Core MLの設定ではGPUも利用可能だが、今回のモデルではエラーが発生し計算できなかった。iOS16よりCPU and Neural Engineという設定が追加されたが、今回の実験ではallを指定した場合(Neural Engineが利用可能であれば利用される)と速度の差は見られなかった。
- バッチサイズ: 1, 8, 64を試した。
測定結果
下表に、Neural Engineを使用した際に1秒間に推論できたサンプル数を示します。
機種/バッチサイズ | 1 | 8 | 64 |
---|---|---|---|
iPhone 15 Pro | 1604 | 5682 | 5476 |
iPhone 13 Pro | 1331 | 424 | 4595 |
iPhone 11 | 664 | 885 | 964 |
iPad 第9世代 | 683 | 1118 | 1092 |
本実験で利用したデバイスの中では、iPhone 15 Proがどのバッチサイズでも最速でした。バッチサイズ64の場合で、iPhone 15 ProはiPhone 13 Proより20%程度高速です。iPhone 15 Proはバッチサイズ8の場合が最も効率的でした。iPhone 13 Proのバッチサイズ8は特異的に悪い値となりました。バッチサイズ7であれば4000以上の値となるため、内部構造上苦手なパターンがあるようです。
下表に、CPUの場合も示します。
機種/バッチサイズ | 1 | 8 | 64 |
---|---|---|---|
iPhone 15 Pro | 382 | 509 | 584 |
iPhone 13 Pro | 324 | 437 | 484 |
iPhone 11 | 131 | 195 | 315 |
iPad 第9世代 | 129 | 192 | 338 |
CPUについてもiPhone 15 Proが最速となりました。バッチサイズ64の場合で、iPhone 15 ProはiPhone 13 Proより20%程度高速です。
計算誤差について
Neural EngineはCPUより低い精度の浮動小数点数演算を行っているようで、同じ入力であっても誤差が大きくなります。誤差の評価方法は、モデルの学習に使用したPyTorchにおける出力との差です。要素ごとの差の絶対値の最大値を誤差の指標とします。モデルには「policy」「value」の2種類の出力があるため、それぞれについて誤差が得られます。
機種 | 演算器 | policy誤差 | value誤差 |
---|---|---|---|
iPhone 15 Pro | NE | 0.11 | 0.0039 |
iPhone 13 Pro | NE | 0.11 | 0.0039 |
iPhone 11 | NE | 0.0081 | 0.0035 |
iPhone 15 Pro | CPU | 5.9e-05 | 1.7e-06 |
iPhone 13 Pro | CPU | 5.9e-05 | 1.7e-06 |
iPhone 11 | CPU | 5.9e-05 | 1.6e-06 |
NE: Neural Engine
iPhone 15 ProとiPhone 13 Proは同じ誤差になりました。そしてこの誤差はiPhone 11より大きいという結果になりました。新しい世代の演算器は精度が低下することと引き換えに高速化を達成している可能性があります。
おわりに
Neural Engine, CPUとも、旧世代機からの進歩がみられる結果となりました。iPhone 15 ProはiPhone 13 ProよりNeural Engine、CPUとも20%程度高速との結果が得られました。
ベンチマーク用のコードはこちらにあります。
Release iOS17リリース時の測定 · select766/dlshogi-model-on-coreml · GitHub