※りとらいんは広告を利用しています

AndroidのAI・機械学習ベンチマークを調べる&Snapdragon搭載機で実測する

匿名=サンから「(りとらいんでも)AIベンチネタもやってくれ」と言われたので、AndroidのAi・機械学習ベンチマークを調べ、手持ちのSnapdragon搭載機で実測してきました。

想定では単発記事にする予定は無かったのですが、思うところもあるので簡単な記事にまとめます。

AI・機械学習ベンチマーク一覧

とりあえず裏で調べた有用かもしれないAndroidのAI・機械学習ベンチマーク(と簡単な説明)を羅列。

Geekbench ML

クロスプラットフォーム対応の定番ベンチマーク”Geekbench”の開発元、Primate Labs Inc.が提供する機械学習性能を計測するベンチマークテストです。

機械学習にはTensorFlow Liteフレームワーク(Google)を用いて7つの項目を計測、Geekbench同様にクロスプラットフォームに対応し、CPU/GPU/Core ML(iOS)/NNAPI(Android)で同じバックエンドの場合比較可能。

CPU vs GPUやCore ML(iOS) vs NNAPI(Android)は性質が異なるため比較できません。一応、基準点はintel Core i7 10700のScore 1500とのこと。

MLPerf Mobile Inference benchmark

MLPerf(エムエルパーフ)は業界標準団体”MLCommons”が公開しているオープンソースかつ、AIプロセッサーを計る基準が近年まで無かったために策定された業界標準のベンチマークツール(だそう)。

創立及びメンバーには半導体を含めた業界の錚々たる面々が名を連ね、AIではお馴染みのNVIDIAやGoogle、QualcommにMediaTek等も参加しており、オープンソース故に自社NPUなどに最適化も可能。

MLPerf Mobileはそのモバイル版で、Github上でソースコードやAndroidデバイス向けのapkが公開されています。

AI Benchmark

AI Benchmarkは、Andrey Ignatov=サン(?)が開発・設計した(と説明されている)Android向けのAIタスク・性能を専門的に評価するらしいベンチマーク。

Android向け汎用SoCのランキングがあったり、Snapdragon/Dimensity(Helio)/Kirin/Exynos(Tensor)…と、大多数のSoCで動くっぽいですが…正直よく分からないアプリ。

AITuTu Benchmark

Antutuの開発元が提供しているAIベンチマーク。それ以上でも以下でもないです。

大手メディアや有名な個人レビュアー、果ては私みたいな有象無象含めて認知及び利用していて親の顔より見たとも言える”Antutu Benchmark”と違い、”AITuTu Benchmark”を使っている方は滅多に見かけません。

UL Procyon AI Inference Benchmark

最後はPCMarkや3DMarkでお馴染みのUL Benchmarksが公開している、AI推論処理性能を計測可能なベンチマーク”UL Procyon AI Inference Benchmark”に一応…軽く触れておきます。うちでは取り扱い不可能。

このツールはソフトウェアエンジニアや独立したツールを必要とするパワーユーザーを対象としているので、一般人はおろか、余程規模のデカいメディア運営 or 金が余っている場合でないと(金銭的に)利用不可。

プロフェッショナル向けの通り、年間のライセンス料は驚異の1495ドル(日本円で21万円前後)。しかしながら大手メディアによるAndroid等のレビュー(ベンチマーク)で見かけたことはありません…。

辛うじて”UL Procyon AI Inference Benchmark”を見かけたことがあるのは、エル◯タやPC Wa◯chでグラボ(GPU)ベンチマーク時かつ比較的名前を見かけるライターさんが書いている場合のみ。

簡易的に手持ちのSnapdragon達で実測してみる

手持ちの”Snapdragonちゃんず”で簡易的にAIベンチマークを実測してみます。新顔でPOCO F3(SD870)が加わり、丁度Snapdragon 870~8 Gen 2までの性能比較が可能に。

テスト端末構成
端末・Redmi K60 Pro
・POCO F4 GT
・Redmi Note 12 Turbo
・Xiaomi Mi 11i
・POCO F3
OS・Android 13(Xiaomi.eu 14)
・Android 13(Xiaomi.eu 14)
・Android 13(Evolution X for marbel)
・Android 13(Xiaomi.eu 14)
・Android 13(MIUI Global 14)
SoC・Snapdragon 8 Gen 2
・Snapdragon 8 Gen 1
・Snapdragon 7+ Gen 2
・Snapdragon 888
・Snapdragon 870
RAM・8GB(LPDDR5X)
・8GB(LPDDR5)
・8GB(LPDDR5)
・8GB(LPDDR5)
・6GB(LPDDR5)
ストレージ・256GB(UFS 4.0)
・128GB(UFS 3.1)
・256GB(UFS 3.1)
・128GB(UFS 3.1)
・128GB(UFS 3.1)
備考動作制御(ガバナー等):SoC定格動作

ちなみにAI Benchmark・AImark・AITuTu Benchmarkの3つに関しては、比較用に動作させてもベンチマークのダウンロードすら始まらなかったり、Snapdragon 8 Gen 2(1)は動かない or 870だけ落ちるとかいう謎挙動でテストとしてアウトだったので比較しません。

結果的に計測している方が多いGeekbench MLと、業界標準ツールのMLPerf Mobileに絞られてしまいました。

Geekbench ML

まずはクロスプラットフォーム対応かつ今のところ利用者の多い”Geekbench ML”から。TensorFlow Liteフレームワークで、Androidにて利用可能なバックエンド3つ(CPU/GPU/NNAPI)全てを実行させました。

ベンチマーク結果を比較するとバックエンドにCPU/GPUを利用した場合の結果は、概ね1世代毎の性能差が反映されている…様に見えます。Snapdragon 8 Gen 2は流石、8 Gen 1も888や870から順当に伸びてます。

Snapdragon 7+ Gen 2がCPU Scoreで8 Gen 1に劣り、GPUで888(Adreno 660)と同じという結果は違和感を覚えますが…AOSPとMIUIの違いもあり厳密に性能差を計るならMIUIに戻す必要あり…?。

問題はNNAPI(Android Neural Networks API)の結果で、Snapdragon 8 Gen 1がぶっちぎりの性能を発揮する一方、7+ Gen 2はおろか8 Gen 2まで870以下のNNAPI Scoreになりました。

ネット上の結果を色々参照すると…どうやらSnapdragon 8 Gen 2と7+ Gen 2でNNAPIを利用した場合、400~700の間になるのが普通の様で、8(+)Gen 1だと何故か3000超えを拝めるみたいです。その原因は分かりません。

Geekbench公式のCPU/GPU/NPUの結果一覧を見ても、NPUではSnapdragon 8 Gen 2の結果はXiaomi 13が509、K60 Proで568となっていて”スコアだけで言えば”やっぱり855~870以下の水準です。

普通に考えてSnapdragon 7+ Gen 2のNPU(DSP)は詳細が判明していないものの、SoC全体のアーキテクチャは8+ Gen 1と同じ(起源・ベース)になっており、採用するHexagonの性能もそれに近くなるはずで、8 Gen 1にここまで劣るのはいくら何でもおかしい…というか意味不明です。

Geekbench MLをAIベンチマークに利用するのは「他にベンチマークが少ないから」という暫定的に留め、NNAPIの値は過信しないで参考程度で見ておくべきだと感じました。

MLPerf Mobile Inference benchmark

ある意味で本命となった業界標準のベンチマークツール”MLPerf”でテスト。Snapdragon 870はv3.0だとサポート外なので4端末での比較になります。設定は初期値”pefomanceOnly”で計測してます。

画像分類・物体検出・画像セグメンテーション・言語理解・超解像・オフラインでの画像分類の6つをテストするため非常に時間が掛かり、1回のベンチマークで約30分とアニメ1話分の時間を要します。

結果はグラフの通りで、流石は業界標準かつオープンソースで30分も掛かるベンチマークだけあって、他のAIベンチマークを謳うアプリよりマトモだと思えるデータが計測できました。

画像分類2つ(Image Classification/offline)と物体検出(Object Detection)、超解像(Super Resolution)は各世代毎の性能差がしっかり反映され、Snapdragon 8 Gen 2>7+ Gen 2>8 Gen 1>888の順になっています。

言語理解(Languge Understanding)ではSnapdragon 7+ Gen 2が8 Gen 1に遅れていますが、この結果は私が参考にしているGeekerwan=サンによる、Qualcommのエンジニアリングモデルを使ったMLPerfテストでも近い傾向です。

全体を通してSnapdragon 8 Gen 2のMLPerf MobileにおけるAI性能はぶっちぎりで、Qualcommが近年でリリースした8シリーズのAI性能が順当に進化していることを、MLPerf Mobile Inference benchmarkで確認できました。

…実はMLPerfのガイドラインに従って、素晴らしい文言を記載しないといけないようで…。

未検証 MLPerf™ Mobile App v3.0 オフライン MLCommons Association により検証されていません。
MLPerf™の名称およびロゴは、米国およびその他の国における MLCommons Association の商標です。
無断複写・転載を禁じます。無断使用は固くお断りします。詳しくは www.mlcommons.org をご覧ください。

おまけ:RealSR-NCNN-Android

AIベンチマークテストについて簡単に触れつつ、Snapdragonちゃんずで簡易測定したは良いものの”結果だけ”を見ても正直、”ほーん…”って感じなのは否めません。AIベンチって具体的な基準値みたいなものが無いですから。

てことで、おまけとして今後ベンチマークに追加するかもしれない”機械学習を用いた画像の高画質化(超解像)”をテスト。

Androidで動作する画像アップスケーラーは、Waifu2x-NCNNとかReal-ESRGANに基づいた”RealSR-NCNN-Android-GUI”と、CUNetやUpConv-Animeモデルをサポートする”Waifu2x ncnn: Image upscaler”があり、他にも最近は何かとAIのバーゲンセールで、ゲーミングが如く”AI技術”をアピールする有象無象のツールがあるっぽいです。

今回はモデル数が多く、処理にGPU(一応CPU)が使えてシンプルな”RealSR-NCNN-Android-GUI”を使用します。

適当にStable Diffusionで生成した1080×1920の画像1枚を、モデル”real-esrganv3-anime”を使って2・4倍にアップスケーリングし、Resultで確認できる合計処理時間(秒)で比較します。

1080×1920から2160×3840(4K)にGPU処理で2倍アップスケーリングした場合、概ね他のGPUベンチマーク結果に比例しSnapdragon 8 Gen 2(Adreno 740)が圧倒的。順当にAdreno 730、725、660…と続きます。

real-esrganv3-anime-X4で4320×7680(8K)に4倍アップスケーリングした場合の傾向も同じです。

CPUに処理をさせた場合でも性能差がちゃんと反映されて、Snapdragon 8 Gen 2、7+ Gen 2、8 Gen 1…という結果に。GPUに比べてCPUに処理させると大体1.5倍の時間が掛かります。

やっぱりGeekbench MLとかのスコアだけ見るより「実際に何をしていて、どのくらい差が出るのか」みたいなことは、AI(機械学習)を用いたアップスケーリングとかの方が分かりやすいです。

あとがき

最初は「まぁ…そのうち」ぐらいの感覚で、匿名=サンに言われてからもあまり乗り気では無く、正直に言えば今もそんなにAI関連は興味ないです。とはいえ無視していい存在でもないです。

様々な影響でGoogle Pixelが多くの人に受け入れられつつある現状で、有名YouTuberや大手ITメディア等では「PixelのAIが凄い!音声認識が凄い!」みたいなふわふわした”具体性”があまりないAIアピールがされてます。

できればPixelに限らず、具体的に言語化した情報が欲しいところですが、国内はおろか海外のレビュアーを参考にしようとしてもAI関連には言及しない or 避ける傾向にありますが…仕方ない部分があると感じています。

AIベンチマークについて調べて”関連する情報の少なさ”、AI性能を計るための環境整備が業界的にもまだ成熟しておらずMLPerfが”業界標準”を謳う背景等に加え、自分で動かしてみてマトモに動くベンチマークが2つしかなく”基準”も無い故に、AI性能をベンチマークして分かりやすく言語化する難しさを何となくですが…感じました。

本当は個人で利用可能なAIベンチを複数見つけた時点で、読者アンケート的なものを作成して”今後利用するAIベンチマークテストを選んでもらう”ことを考えていましたが…予定が狂いました。

とりあえず今後はプレーンな”MLPerf”と機械学習を用いた”RealSR-NCNN-Android-GUI”を活用、”Geekbench ML”についてはMLPerfがサポートしていないSoCに出くわした場合のみ利用予定でいます。

タイトルとURLをコピーしました