💭
M1 Macで機械学習やるぜ(CoreML YOLOv3編)
振り返り
前回は、CoreMLとPyTorchのYOLOv3の比較を行った。
結果としては、GPU(RTX3070)上で動作するPyTorchの方が3倍速かった。
そりゃ金額が違うからあたりまえ。
むしろコストの割に、M1 Macが健闘していると思う。
ソースコード
CoreMLの処理が動画再生と同期しているのではないかと気になって、
コンソールアプリにしてみた。
Githubにソースコードを置いたので、cloneして試してほしい。
手順
- git clone https://github.com/forest1040/MovAna.git
- CoreMLのモデルダウンロード
Appleのサイトから、YOLOv3というモデルをダウンロードする。
ダウンロードしたファイルをModelsの下に置く。 - コードの以下を適当に修正する。(urlに適当な動画ファイルを指定する。)
import Foundation
print("start")
//let url = Bundle.main.url(forResource: "test", withExtension:"mp4")
let url = URL(fileURLWithPath: "/Users/tmori/temp/metal/sample-movie/1min/test.mp4")
let m = MovAna()
let startTime = CFAbsoluteTimeGetCurrent()
m.processMovie(url: url)
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
print(timeElapsed)
print("end")
- XCodeで実行する。
結果
俺のM1 Macでは、52.702553033828735秒で実行できた。
(リリースビルド版 デバッグビルドだと1秒ぐらいの差がでる。)
モデル読み込み後から計測しているので、純粋に60秒の動画ファイルの推論時間だ。
60秒を切っているので、動画再生とは同期していない。
つまり、GPU(RTX3070)PyTorchとの性能差は、3倍ということだ。
Discussion