Skip to content

Hands-on tutorial for PyTorch on Apple Silicon Mac, featuring MPS backend setup and MNIST deep learning examples with CNN implementation

Notifications You must be signed in to change notification settings

timeless-residents/handson-python-apple-mx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyTorch ハンズオン on Apple Silicon (M2) Mac Studio

このリポジトリでは、Apple Silicon(M2)搭載の Mac Studio 上で、Miniforge と Conda を使用して PyTorch 環境を構築し、MPS(Metal Performance Shaders)バックエンドを利用するための手順とサンプルコードをまとめています。さらに、MNIST データセットを用いたディープラーニングモデルのウォークスルー(学習、評価、視覚的な結果確認)も提供しています。

概要

  • 対象プラットフォーム: Apple Silicon (M2) Mac Studio
  • 目的:
    • PyTorch を用いたディープラーニング開発環境の構築
    • MPS バックエンドの動作確認
    • CNN を用いた MNIST 手書き数字認識タスクの実装と視覚的評価
  • 主なツール:
    • Miniforge (Conda 環境管理ツール)
    • PyTorch (ディープラーニングフレームワーク)
    • pip
    • matplotlib (ビジュアル表示用)

前提条件

  • macOS(Apple Silicon 対応)
  • Homebrew のインストール済み
  • ターミナル(zsh 推奨)

インストール手順

1. Miniforge のインストール

Homebrew を利用して Miniforge をインストールします。

brew install miniforge

インストール完了後、以下のメッセージが表示されるので、シェルを初期化します。

conda init "$(basename "${SHELL}")"

設定を反映させるため、シェルを再起動するか、以下のコマンドで再読み込みしてください。

source ~/.zshrc

2. 新規環境の作成とアクティベート

新規の Python 環境(例: pytorch_env)を作成し、アクティベートします。

conda create -n pytorch_env python=3.9
conda activate pytorch_env

3. PyTorch および関連パッケージのインストール

pip を使用して、MPS サポート対応の PyTorch、torchvision、torchaudio、さらにビジュアル表示に必要な matplotlib をインストールします。

pip install torch torchvision torchaudio matplotlib

動作確認

1. MPS デバイス確認 (check.py)

以下のコードを check.py として保存し、MPS デバイスが利用可能か確認します。

import torch

if torch.backends.mps.is_available():
    print("MPSデバイスが利用可能です!")
else:
    print("MPSデバイスは利用できません。")

実行例:

python check.py

出力例:

MPSデバイスが利用可能です!

2. サンプル計算 (sample.py)

次に、MPS を利用した簡単なテンソル計算のサンプルコードを sample.py として保存します。

import torch

# 使用可能なデバイスを設定
device = torch.device("mps" if torch.backends.mps.is_available() else "cpu")
print(f"使用デバイス: {device}")

# ランダムなテンソルの生成と計算
x = torch.randn(3, 3, device=device)
y = torch.randn(3, 3, device=device)
z = x + y
print("計算結果:\n", z)

実行例:

python sample.py

出力例:

使用デバイス: mps
計算結果:
 tensor([[ 0.4715, -1.0022, -0.3917],
         [ 1.7549,  0.8535,  0.2699],
         [ 2.9066, -2.1618,  2.4611]], device='mps:0')

ディープラーニングモデルのウォークスルー

このセクションでは、MNIST データセットを用いた CNN モデルの学習、評価、そして学習済みモデルを活用した予測結果の視覚的確認方法について解説します。

コード構成

  • deeplearning/model.py
    CNN モデルの定義を行います。

  • deeplearning/train.py
    トレーニングと評価のためのルーチンを記述します。

  • deeplearning/train_mnist.py
    データセットの読み込み、モデルの構築、トレーニングおよび評価を実行するメインスクリプトです。

  • deeplearning/visualize.py
    学習済みモデルを用いて、テスト画像の予測結果を 3x3 のグリッドで視覚的に確認するコードです。

実行方法

  1. 環境のアクティベート
    Conda 環境(例: pytorch_env)をアクティベートします。

    conda activate pytorch_env
  2. モデルの学習と保存
    MNIST データセットのダウンロードおよびトレーニングを実行します。
    実行後、モデルのパラメータは mnist_cnn.pth として保存されます。

    python deeplearning/train_mnist.py
  3. 学習結果のビジュアル表示
    学習済みモデルを用いて、テスト画像の予測結果を確認します。
    3x3 のグリッドに、各画像の予測ラベルと正解ラベルが表示されます。

    python deeplearning/visualize.py

次のステップ

  • PyTorch を用いたより複雑なモデルの構築・学習
  • torchvision やその他ライブラリを活用したデータセットの取り扱い
  • ハイパーパラメータの最適化やモデル改善
  • MPS バックエンドを活かした高速な計算処理のさらなる最適化

ライセンス

MIT

連絡先

ご質問や改善提案は、Issue または Pull Request でお気軽にお知らせください。

About

Hands-on tutorial for PyTorch on Apple Silicon Mac, featuring MPS backend setup and MNIST deep learning examples with CNN implementation

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages