注意事項
- この資料は画像認識に関係の無い会社内でのLT会のもののため、基本的な内容から説明し詳細をかなり端折っています。
- ひとつだけのモデルとデータセットを使った検証なので、これを持ってすべてのケースで Apple シリコンによるディープラーニングは良くないという主張はしません。ひとつの技術的雑談のネタとしての位置づけです。
ディープラーニングによる画像分類やってます
画像分類とは
画像を渡すとそれが何であるか複数の候補のうちのどれかを教えてくれる。
画像分類の事例
Google Cloud では株式会社LIFULLの導入事例が紹介されている。
不動産の室内画像に対して、洗面台、キッチン、リビングなどのラベルをつけてくれて、サイトへの登録作業を省力化する。
私の活用方法
分類モデルの作成には NVIDIA の GPU が搭載されているゲーミングPCを使用
一般的には NVIDIA の GPU が搭載された PC でモデルを作成する。
ゲームの3Dグラフィック描画もディープラーニングもたくさんの行列演算なので、GPU との相性が良い。
NVIDIA の株価がエグい理由(Google 検索より引用)
分類モデルを作るプログラムはこんな感じ
画像をありもののニューラルネットワークのモデルに5万枚読み込まされているだけ。
M1 Ultra 搭載の Mac Studio も手元にある
ディープラーニングは Windows の WSL2 上の Ubuntu を使っているが、普段スマホアプリ開発で Mac を使っている私からすると、キーバインドの違いから使いづらい。
Apple シリコンも GPU を内蔵している。
Mac で画像分類モデルを作れるならば、それで良いと思った。
まずは Windows PC と Mac のスペック紹介
Windows PC | Mac | |
---|---|---|
製品名 | HP OMEN 30L | Mac Studio |
GPU | RTX 3080 | M1 Ultra 64コアGPU |
CPU | Core i7-10700KF | M1 Ultra 20コアCPU |
メモリ | DDR4-3200MHz 32GB | 128 GB |
購入時期 | 2021年9月 | 2022年3月 |
買ったときの値段 | 25万円 | 72万円 |
学習速度の比較
GPU 名 | NVIDIA RTX 3080 | Apple M1 Ultra |
---|---|---|
時間 | 53分35秒 | 1時間02分53秒 |
対象の学習モデルはこちら
Mac でディープラーニングは悪くないのでは?
価格を考えると Windows PC が良いが、Mac も使う必要があり、2台維持するのが大変な場合はディープラーニングを Mac でやるのありかも?
しかし計算結果が異なる
縦軸は正解率 = 正しく分類された枚数/検証用画像枚数
横軸は学習の進み度合い
Apple M1 Ultra の方は結果が安定しない。
原因の推測
推測だがニューラルネットワークのオペレータを GPU に対する低レベルAPI(Metal)に変換する部分に不具合がある可能性がある。(その後の対応案は後述)
結論
個人的な結論だが、ディープラーニングもやるモバイルアプリ開発者は Windows 機と Mac の2台を維持しないといけない。
以下、細かくて LT 会では説明しない補足
使用パッケージ
tensorflow = "^2.15.0"
numpy = "^1.26.1"
scikit-learn = "^1.3.2"
pandas = "^2.1.2"
h5py = "^3.10.0"
tqdm = "^4.66.1"
tensorflowjs = "^4.12.0"
pillow = "^10.1.0"
tensorflow-metal = "^1.1.0"
M1 Mac では TensorFlow を 2.15.0 にしないとインストールできなかった。GPU を使用するために tensorflow-metal パッケージを使用する。
Apple の開発エコシステムへの貢献を考える
理想的な振る舞いとしては、再現可能なミニマムなコードを作成して、Apple Developer Forums に報告することだが、他に優先したいことがあるので、この件はこれで終了にする。