Apple-ийн M1, M2, M3 чипүүд нь Neural Engine болон Metal API-г ашиглан гүн сургалтын загваруудыг үр ашигтайгаар сургах боломжийг олгодог. Энэхүү нийтлэлд бид MAC M1, M2, M3 GPU-г ашиглан TensorFlow дээр Fashion MNIST өгөгдөл дээр загвар сургах талаар тайлбарлах болно.
Яагаад гүн сургалтанд GPU хэрэгтэй вэ?
Гүн сургалт (Deep Learning) нь их хэмжээний өгөгдөл дээр үндэслэн олон давхар мэдрэлийн сүлжээний (Neural Network) параметрүүдийг оновчлох процесст тулгуурладаг. Энэ нь матрицын үйлдлүүд болон олон давхар нейроны холболтыг ашигладаг тул ихээхэн тооцоолох хүчин чадал шаарддаг.
Машин сургалтын сангуудын дэмжлэг. TensorFlow, PyTorch зэрэг сангууд GPU-ийг ашиглан гүйцэтгэлийг нэмэгдүүлэх боломжийг олгодог.
Параллель тооцоолол. GPU нь олон мянган жижиг цөмүүдтэй тул их хэмжээний матриц үржвэрийг нэгэн зэрэг хийж чаддаг.
Илүү хурдтай сургалт. CPU-тэй харьцуулахад GPU ашиглах үед гүн сургалтын загварын сургалт хэд дахин хурдан хийгддэг.
Tensor Operations. Машин сургалт, гүн сургалтын процессууд нь матриц болон тенcорын тооцоололд суурилдаг тул GPU нь энэ төрлийн үйлдлүүдийг илүү хурдан боловсруулж чадна.
1. Apple-ийн GPU-ийг Гүн Сургалтанд Ашиглах
Apple-ийн M1, M2, M3 чипүүд нь өндөр хурдтай GPU болон Neural Engine-тэй бөгөөд гүн сургалтын ажлуудыг хурдан боловсруулахад зориулагдсан байдаг. Мөн TensorFlow болон PyTorch нь Apple-ийн Metal Performance Shaders (MPS) backend-ийг дэмждэг болсон.
Давуу талууд:
- Metal API ашиглан Apple-ийн GPU-ийг бүрэн дэмждэг.
- Neural Engine нь бага энергээр өндөр гүйцэтгэл гаргана.
- Unified Memory Architecture (UMA) нь CPU болон GPU-ийн санах ойг хуваалцаж хурдан өгөгдөл дамжуулах боломжтой.
2. Apple GPU болон NVIDIA GPU Харьцуулалт
Гүн сургалт, машин сургалтын хувьд Apple GPU болон NVIDIA GPU-ийн ялгаа, давуу талуудыг дараах байдлаар харьцуулж болно:
Шинж чанар | Apple GPU (M1/M2/M3) | NVIDIA GPU (RTX 30/40 Series) |
Архитектур | Unified Memory Architecture (UMA) | CUDA + VRAM |
Програмчлалын API | Metal API, MPS backend | CUDA, cuDNN, TensorRT |
Тусгай Neural Engine | Байгаа (16-32 core) | Байхгүй (гэхдээ Tensor Core-той) |
Гүйцэтгэл (FP32 матриц үржвэр) | Дунд зэрэг | Өндөр |
Эрчим хүчний хэрэглээ | Бага (MacBook дээр илүү батерей ашиглалт) | Өндөр (Ялангуяа desktop GPU) |
Машин сургалтын дэмжлэг | TensorFlow, PyTorch (MPS) дэмждэг | TensorFlow, PyTorch (CUDA) бүрэн дэмждэг |
VRAM (GPU санах ой) | CPU-тай хуваалцдаг UMA | Тусдаа VRAM (8GB-24GB) |
CUDA болон Tensor Cores | Байхгүй | Байгаа |
Apple GPU: Гүн сургалтын энгийн хэрэглээ болон хөгжүүлэлт хийхэд тохиромжтой. Бага энерги зарцуулж, Metal API-тай сайн ажиллана.
NVIDIA GPU: Машин сургалт, AI судалгаанд илүү тохиромжтой. CUDA, Tensor Core, TensorRT зэрэг технологиудтай тул том хэмжээний загвар сургахад илүү үр дүнтэй.
Хэрэв Mac хэрэглэгч бол TensorFlow + MPS ашиглах нь тохиромжтой. Харин том neural network загвар сургах бол NVIDIA GPU бүхий workstation эсвэл Cloud GPU ашиглах боломжтой.
3. Хэрэглээний Орчин Бэлтгэх
3.1 TensorFlow суулгах (MPS дэмжлэгтэй)
conda create --name tf-metal python=3.9
conda activate tf-metal
pip install tensorflow-macos
pip install tensorflow-metal
3.2 PyTorch суулгах (MPS дэмжлэгтэй)
pip install torch torchvision torchaudio
MPS ашиглаж буй эсэхээ шалгах:
import torch
print(torch.backends.mps.is_available()) # True байх ёстой
4. Fashion MNIST Өгөгдөл дээр Гүн Сургалтын Загвар Бэлтгэх
Fashion MNIST нь 10 ангилал бүхий 28×28 хэмжээтэй хар, цагаан зурагнууд агуулсан компьютер харааны өгөгдөл юм. Бид энэхүү өгөгдлийг ашиглан CNN загвар сургах болно.
4.1 Өгөгдөл ачаалах
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
# Fashion MNIST өгөгдлийг татах
fashion_mnist = keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
# Өгөгдлийг нормчлох
x_train, x_test = x_train / 255.0, x_test / 255.0
4.2 CNN Загвар Бэлтгэх
model = keras.Sequential([
keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Conv2D(64, (3,3), activation='relu'),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Flatten(),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
4.3 Загвар Сургах
model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
5. Apple M1/M2/M3 GPU-ийг Ашиглаж Байгаа Эсэхийг Шалгах
Apple-ийн M1/M2/M3 GPU дээр загвар сургалтын явцад GPU ашиглагдаж байгаа эсэхийг дараах байдлаар шалгаж болно.
import tensorflow as tf
print("Available devices:")
print(tf.config.list_physical_devices())
Эсвэл дараах кодыг ашиглан GPU дээр ажиллаж байгаа эсэхийг шалгах боломжтой.
import torch
print(torch.device("mps")) # mps (Metal Performance Shaders) байх ёстой