M1 Macで機械学習やるぜ
M1 Mac買ったぜ
M1 Macちょーイケてるぜ。
安くて速くて長持ち。
あまりにも性能が良すぎるので、機械学習をやってみるぜ。
機械学習といっても、推論する部分を実行する。
モデルは、Appleが提供しているCoreMLのモデルを使用する。
参考ページは、これだ。
MovieAnalyzer
githubからコードを持ってきて、
xcodeのプロジェクト設定で適当にiPad/macにすれば、M1 Macで動くようになる。
ビルドするためには、モデルとテストデータが必要になる。
Appleのサイトから、YOLOv3というモデルをダウンロードする。
ダウンロードしたファイルをModelsの下に置く。
Mediaの下にテストデータを置く必要がある。
自転車のムービーをダウンロード(h256形式)
を持ってきて、1分に切って、実行してみた。
Mediaの下に置くときには、xcode上で配置して、リソースコピーを有効にする必要がある。
CoreML動かすぜ
一応、1分の動画の物体認識に1分程度で実行できた。
(動画の再生速度に処理速度が動機しているような気がする。。もっと速度がでるかも。)
30フレームレートの動画なので、1分程度で1799フレームあった。
instruments(プロファイラ)で見てみると一応Neural Engineで動いているみたい。
Neural EngineでCore MLの処理が行われているか調べる方法
同じYOLOv3モデルをLinuxで動かして比較してみるぜ
RTX3070が動くLinuxマシンが手元にあるので、比較してみる。
RTX3070は、最新のCUDA11でないとダメなので、ちょっと環境構築が面倒だ。
PyTorch版のYOLOv3モデルで動画の物体認識を実行するぜ。
Docker
そこでDocker様のお出まし。
# NVIDIAのdockerイメージを持ってくる
docker pull nvcr.io/nvidia/pytorch:20.12-py3
# コンテナ作成
docker run -it --gpus all --name pt-yolo nvcr.io/nvidia/pytorch:20.12-py3
# 以下はコンテナ内で実行
# 必要なライブラリをインスコ
apt update && apt upgrade
apt install -y git
apt install -y gcc
apt install -y libgl1-mesa-dev
apt install -y libopencv-dev
# コードを持ってくる
git clone https://github.com/ultralytics/yolov3.git
cd yolov3
# Pythonライブラリをインスコ
pip install -r requirements.txt
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
実行
テスト用の動画ファイル(test.mp4)をコピーしておき実行。
python detect.py --source ../test.mp4
やっぱ、RTX3070はえーわ。
1799コマで、21.064sだった。
Discussion