ハードウェアからサーバ・アプリまでワンストップで開発

Orange Pi 5で人工知能の記事まとめ

前編です

今まで書いたOrange Pi 5で人工知能の諸々を動かしてみた記事のまとめです。

これらの記事はCPUだけを使ったもので、内蔵NPUは使っていません

Orange Pi5でC3TR-Adapterを試す
Orange Pi 5で「ELYZA-japanese-Llama-2-13b」を動かしてみた
Orange Pi 5でRWKV-5-World-v2を試す
Useful Transformersを試してみる
Orange Pi 5でStable Diffusionを試す
Orange Pi 5でVALL-E-Xを試す
Orange Pi 5のJupyterLabを使ってphi-1.5を動かしてみる
Orange Pi 5にJupyterLabを入れてFaster Whisperを動かしてみる
Orange Pi 5でWhisperを試す
Orange Pi 5でCode Llamaを試す
Orange Pi 5でELYZAを試す
VOICEVOX COREをOrange Pi 5(Ubuntu)で動かす

概要

いずれも、せいぜいコンパイルをする程度でOrange Pi 5で動いています。

公式のドキュメントで十分でない部分については、上記記事の中で「とりあえず動かす」ところまでは持って行けるようなTIPSを書いています。

そういったことを思えば、「とりあえず動かす」という目的であれば、Orange Pi 5でも十分機能してくれることがわかります。

パフォーマンスで言えば、Whisper.cppやLlama.cppを使ったもの、あるいは「特別に高速化した」という類のものであれば、「実用に使えないわけではない」という程度の速度が出ています。去年の今頃であれば、LLMはOrange Pi 5のようなSBCで動かすどころか、ローカルで動かすことも夢のまた夢のような状態でしたが、技術の進歩は凄いですね。「混んでる時のChatGPT」くらいの速度では動いてくれるわけですし。Whisper.cppも大きなモデルと比較すれば認識精度が低かったりしますが、従来の音声認識の精度と比較したらはるかに高精度の認識をリアルタイムよりも高速で処理してくれるわけですから、なかなかのものだと言えます。

他方、Pythonを使ったものは問題の規模とか性質、チューニングの都合(モデルや処理がfloat32しか対応してない)とかあるせいか、ちょっと実用には遠い感じです。これは別にPythonが遅いせいと言うよりは、PyTorchがRK3588にうまく対応しきれてないということが大きいのだろうと思います。

展望

今回は全てCPUだけの処理です。つまり「8コアのARM64プロセッサ」としての結果です。内蔵NPUは使っていません。

カタログスペックとしては内蔵NPUは結構なパフォーマンスを持っていることになっていて、少なくとも表向きはPyTorchのモデルを読み込んで使えるということを謳っています。

ではなぜ今回使わなかったかと言えば、少なくとも表向きはPyTorchのモデルを読み込んで使えるとはなっていても、じゃあ実際に使えるかとなるとそう簡単ではないからです。内蔵NPUに対応したPyTorchがあるわけではありません。モデル変換をしたら読み込めるというだけです。そのままでは使えないのです。

なので、仮にこの先どうこうするのであれば、内蔵NPUを使う実験をすることになります。ここで試したような用途に使えるかどうかもよくわかりませんが。それは多かれ少なかれコードを書くことにもなるので、今回のようなペースで試してみることは出来ませんし、必要なものを厳選することになると思います。

可能性

現在のところ、今動いている状態の延長で実用になるかと言えば、各エントリの最後に書いているように「実用にはちょっと」と言うのが正直なところです。「近頃流行りの人工知能」を動かすには貧弱過ぎます。

とは言え、Whisper.cppやLlama.cppのようなggmlを使ったものについては、今でも「ギリギリ実用になる」程度のパフォーマンスがあるので、もうちょっと頑張ればという感じだと言えます。いわゆる「エッジAI」として実用にするのであれば、結局はこういったアプローチを取るべきなのだろうと思います。

ただ、私も誤解していたのですが、Stable DiffusionのPython版とCPP版で試してみた範囲では、単純にCPP版が速いということはありません。CPUだけを使う範囲であれば、同じだったりCPP版の方が遅かったりします。量子化によってメモリの節約はされてはいますが、演算速度を上げる工夫はされていません。この辺はデータ幅で速度の変わるGPUとは違うところのようです。逆にggmlはその辺の改良の余地があるとも言えます。

とは言え、本当に実用にしたいのであれば内蔵NPUを使えるようにするべきで、CPUだけでは無理だと思っておくのが間違いはないでしょう。

こういったことをやっていて思ったのは、「近頃流行りの人工知能」をエッジで使うためには結局NVIDIAのJetsonを使うのが近道で、それ以外の環境でやるのはそれなりの「覚悟」を持ってやらなければならないということです。なんだかんだ言って

PyTorchがGPUで使える

というのは、少なくとも実験の時にはとても大事なことです。それ以外のSoCを使うのはあくまでも展開のためであって、試作とかではありません。

弊社としては、Orange Piに力を入れて行きたいと思っていますが、現状でこの用途を誰にでもお勧めできるかと言えば、否定的にならざるをえません。キラーアプリ的な何かとか、ブレイクスルー的な何かがない限り「人工知能応用に最適」とかは言えませんね。

まとめ

そんなわけで、かなり否定的なことばかりを並べましたが、それでも

使えば使えるし速度以外は遜色ない

ということは案外に大きいようにも思います。総額3万円程度(国内調達の場合)でここまでやれるのは技術の進歩を感じますね。特に今回Pythonを使ったものに関しては、Raspberry Pi(最大メモリ8GB)で動かすにはメモリの使い方に工夫が必要なので、16GBのメモリを持つというのは大です。

本当に実用になるのかならないのかは、次回エントリになると思います。

最近のエントリー

Hieronymusのインボイス番号対応について

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル