【エンジニア向け】MacでのGPUの使い方💻

Study

おつかれさまです!記事を読んでくださりありがとうございます🌞
今回はちょっとニッチな内容ですが、自分がつまずいた部分を共有していきます!

『みなさんはGPUつかってますか??』

・・・。

エンジニアで機械学習をしてます!とか動画編集ばりばりやってます!みたいな人じゃないと
縁がないかもです、、、

みなさんの中に実際にやってるよ🙌という人は共感していただけると思いますが、
機械学習(ディープラーニング)とかしようと思うと計算にめちゃくちゃ時間がかかってしまいます。。。

なのでGPUが使える環境の方はマストで使ったほうがいいです!!

そこで、MacのGPUを塩漬けにしてしまっていた私が簡単に使い方を解説します!!

それでは、ゆっくりしていってください🐱

私と同じような環境の方向けの記事です。別環境の方も考え方は同じだと思います。
(実施環境:VScode, Python 3.12.4)
windowsの方や外付けの方はごめんなさい。。。🙇

こんな人向けです

・そもそもGPUってなに??
・Mac(M1/M2)ってGPU使えるらしいけど、どう使うの?
・機械学習をやっているけどCPUじゃ計算が終わらない、、

この記事を読むと、、、

⭐️ MacでGPUを使う方法がわかる!

⭐️ GPUの概要が直感的にわかる!

そもそもGPUって??(初心者向け)

まずはGPUについて知ろう

知ってるよ〜🙌って人は飛ばしていただいても大丈夫です!

私もGPUについて詳しいわけではないので、
エンジニアとして最低限知っておいたら役立つかもぐらいの直感的な理解を目指します!

まずは結論です!!

グラフィックス処理や大規模な並列処理が得意!
機械学習動画編集高解像度のゲームを快適にプレイするために使われる!
・負荷が高いタスクに対応できるため値段は高くなりがち、、、

まだちょっとイメージ湧きづらいですよね、、、
次は、立場が似ているCPUと比較しながら見てみましょう!

CPUと比較してみる

パソコンについて調べているとCPUって聞いたことがあると思います。
用途は違いますが、比較しながら理解を深めていこうと思います!!

特徴を比較すると次のようになります。

こんな感じで特徴はありますが、処理方法の違いが特徴的なので深堀りしてみます!
料理人さんに例えるとこんな感じになります!

GPU(グラフィックス処理装置)の処理方法

大勢の料理人が1つのレシピで料理を同時に作る

大きな1つの料理を作るためにそれぞれの部分を分担して効率的に作業を進めます!

まとめると、、、
大勢のシェフが分担して大きな料理を並行して作るので効率的です!
しかし、みんなで同じものを作ろうとするので柔軟性は低くなります

CPU(中央処理装置)の処理方法

1人(少人数)のシェフが多様な料理を1つずつ作る

シェフは料理を作るたびに次の料理に取り掛かるので、全体の進行は順番になります!

まとめると、、、
シェフは料理の種類や調理法に柔軟に対応できるので、多様なタスクに対応可能です!
しかし、一つづつ順番に作業を進めるため時間がかかります。

実際にGPUを使ってみる!

大まかなイメージもついたところで、実際に使ってみましょう!

前提として、、、

今回は私のと同じような環境の方向けなのでwindowsの方や外付けの方はごめんなさい、、、🙇
機械学習タスクでGPUを使いたい場合を想定しています。

私の環境は次の通りです!

パソコン   :Macbook Air (M2)
エディター  :VScode
使用言語   :Python 3.12.4
使用ライブラリ:Pytorch

いざ実践!!

結論は次のコードでTrueが出れば使えます!!

import torch

device = torch.device('mps')

print(torch.backends.mps.is_available())
# 出力:True

device
# 出力:device(type='mps')

実際にGPU上で二乗和を計算してみましょう!

import torch

# 簡単な関数を定義 (二乗和を計算する関数)
def squared_sum(tensor):
    return torch.sum(tensor ** 2)

# テンソルを作成し、GPUに移動(上で定義したdevice)
tensor = torch.tensor([1.0, 2.0, 3.0, 4.0], device=device)

# 関数を呼び出して計算
result = squared_sum(tensor)

# 結果を出力
print("Result (GPU):", result)
# 出力:Result (GPU): tensor(30.)

ここで注意が必要なのですが、使用するデータをGPU上に乗せる必要があります。
深層学習モデルを学習させるときは、モデルと使用するデータをすべてGPU上にないとエラー出ます、、、

これだけです!簡単ですよね!!

自分で調べていると、次のコードに出会うかもしれません。

# GPUの設定
import torch

print(torch.cuda.is_available())
# 出力:False

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

device
# 出力:device(type='cpu')

このコードでFalseが出るのでてっきり自分のパソコンではGPUが使えないのかと思ってました🐥

原因は、MacではGPUを使いたかったら”mps”を選択する必要があり、“cuda”はNVIDIA製のGPUを搭載していないとTrueが返ってこないんですよね、、、

何も知らなかった私は一時期、CPUで頑張って計算させてました(笑)

まとめ

ここまで読んでいただきありがとうございます🎉

なんとなくGPUのイメージが付いたのではないのでしょうか??

機械学習(ディープラーニング)とかだと、GPU使っても全然時間かかるんですよね(笑)
ただ、圧倒的に時間効率がいいので使える方は実践してみましょう!

私は使えることを知らずに、時間を費やしていました、、、🐥

今回はニッチな内容でしたが、実際に分析してみたり、トラブルシューティングの事例などを発信して行ければと思います。引き続き読んでいただけるとうれしいです!

コメント

タイトルとURLをコピーしました