Raspberry Pi で機械学習

どうでも良いことですが、私の大学(院)時代の専門は機械学習やパターン認識の近接領域です。

当時は侵入検知や一般物体認識など、一部の限られた研究者のあいだで非線形手法が流行していたところに、古臭くて見向きもされていなかったニューラルネットが圧倒的な性能を見せつけ、シンギュラリティという言葉が生まれて一躍、大ブームが巻き起こりました。

流行の波に乗って、多くの人が新たに機械学習ライブラリに触れてみる機会が多くなった一方で、個人的には徐々に機械学習から距離を置いていきました。

それは、数十台のサーバコンピュータを数日連続して動かし続けたり、国内に数えるほどしかない大型計算機システム(つまりはスパコン)の利用申請をしたり、要するに計算資源だよりの力技でゴリ押しする風潮に魅力を感じなかったわけです。

特定の環境に依存しすぎていて、少しでも条件が変わったときにプロジェクトの再現や継続が難しいのはどうなのかなと。

Raspberry Pi(ラズパイ)は、ある意味、その対局にあります。

スマートフォンよりも小さく物理的に持ち運ぶことも容易、処理性能は玩具かせいぜいが低価格PCと比較できるくらい、学習データは外付け HDD に頼ればいいとして、それを取り込んでモデルを構築する際にメモリに載せられるかどうかというスペックです。




Raspberry Pi で行う意義

正直、それほど古くないノートPCをお持ちなら、それに Linux をインストールしたほうがより快適な機械学習環境を構築できるはずです。

敢えて非力な Raspberry Pi で計算負荷の高い行列計算や確率計算をやろうとするなんて玄人好みだなと思っていましたが、最近、すこし考えをあらためました。

単純ベイズなどの例外を除いて、機械学習のモデル構築やクラスタリングは CPU や GPU、メモリなどを食い潰す勢いで消費しながら数時間から数日間に及ぶ処理を実行します。

例えば、『吾輩は猫である』(347,704字)を訓練データにして一般的なニューラルネットワークで 140 字のマイクロブログ・テキストを生成しようとした場合、10GB以上のメモリを使用して10時間以上の処理時間が掛かります

たとえ処理性能に自信のあるハイエンド・ゲーミングPCをお持ちだったとしても、バックグラウンドで常時こんな処理が動いていては、もはや快適な環境とは言えません。

平気で数十秒間フリーズします。

ここで「機械学習はメインPCでやるべきではない」と開き直れると Raspberry Pi の可能性が見えてきます。

価格やスペース的にもノートPCより気軽に購入できますし、ほかの処理を行わないのであればディスプレイもスピーカーも必要ありません。

処理能力の低さは実行時間を増やすことでカバーするほかにありませんが、どうせハイスペックなデスクトップPCを使用しても長時間掛かることは避けられない問題です。メインPCのリソースを占有されるよりも Raspberry Pi に処理を任せて放置していたほうが気楽という発想の転換です。

もちろん Raspberry Pi では実現できないこともあります後述するように Raspberry Pi の CPU や OS はやや特殊なので、一部のライブラリやフレームワークは使用できません。

また処理能力が非力でメモリ容量も乏しいため、通常のPCに比べて実現できることも限られます。それでも株価などの時系列データの分析を行ったり、訓練されたモデルを用いてリアルタイムで画像認識を行うことぐらいは十分にできます。

前述のように業務や研究とは異なり、個人が遊びで動かすぐらいの用途であれば、それほど問題になることはないかと思われます。

どのモデルを選ぶべきか

これは簡単で、入手時点でもっともメモリ容量の大きな最新のモデルです。

機械学習はいかに質の良い訓練データを大量に準備して、それを限られたメモリに載せられるかという点にほぼ全てが掛かっているので、メモリ容量が少ないとできることが限定されます。

ちなみに、ほかの要素はパラメータ調整という素人には真似できない職人芸なので、ご自身で偏微分したくなったりしない限りは下手にプリセットを変更しないほうが良いです。

モデル一覧は公式サイトから確認できます。


Buy a Raspberry Pi – Raspberry Pi
https://www.raspberrypi.com/products/


2022年1月現在では Raspberry Pi 4 Model B (8GB) 一択です。


ラズベリーパイ 4 コンピューターモデルB 8GB Raspberry Pi 4 ラズパイ 4 TELEC認定取得済み (Raspberry Pi 4 8GB)

Zero 系統や Pico 系統は (1) メモリ容量が少ないこと、 (2) USB Type-Aポートを備えていないことから機械学習用途にはあまり向いていません。

これらは我が家ではサーバからバックアップデータを取得してきたり、各所のセンサデータを記録するロガー、または NAS (SAMBA) として活躍ていますが、機械学習に使おうとは思わないですね。

リアルタイム画像分類用の安価な USB ウェブカメラや 100GB 単位の訓練データを保存しておく外付けハードディスクとアダプタなしに接続できないですし。

セットアップ

いざ Raspberry Pi を購入し、OSをインストールして、最初に気をつけるべきことは CPU です。

最近のハイエンド PC は 64 ビットのものが多いのに対して Raspberry Pi は 32 ビットが普通に使われています。

いつものPCと同じ感覚でライブラリをインストールされると動作しない可能性があります。

CPU情報

OS情報

基本設定

まずは基本設定です。パッケージを更新して、ビルドツールを導入して、デフォルトで使用する Python を Python3 に変更します。

MiniConda

つぎにデータ分析便利セットこと Anaconda を導入したいところなのですが、 Raspberry Pi の限られた記憶領域(というか SD カード)にインストールするには Anaconda のファイルサイズはやや大き過ぎるので、その縮小版パッケージの MiniConda をインストールします。

縮小版と言えど、これだけあれば大体のことが可能になります。

TensorFlow

最後は定番の TensorFlow です。Raspberry Pi で動作するのは訓練済みの TensorFlow モデルを実行するためのフレームワークである TensorFlow Lite です。

こちらは基本的にはモデル構築には用いることができませんが、更新頻度が高く、流動的なのでご閲覧時点では機能が変更されているかもしれません。

ドキュメントの指示に従ってインストールできれば話がはやいのですが tensorflow/lite/tools/make/download_dependencies.sh は2021年8月以降は非推奨になっていて使用できません。

どうも Raspberry Pi の非力な CPU やメモリを用いてのコンパイルは忌避されている感があり、公式ページに示されている Docker コンテナを用いたデスクトップやサーバ環境でのクロスコンパイルのほうが簡単です。

RNN実行例

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Us