ການຕິດຕັ້ງ ແລະ ນຳໃຊ້ Cloud GPU ສຳລັບ Deep Learning (Google Colab & AWS)
ການຕິດຕັ້ງ ແລະ ນຳໃຊ້ Cloud GPU ສຳລັບ Deep Learning (Google Colab & AWS)
ສະບາຍດີນັກພັດທະນາທຸກຄົນ! ຖ້າທ່ານເຄີຍພະຍາຍາມຝຶກອົບຮົມ (Train) ໂມເດວ Deep Learning ຂະໜາດໃຫຍ່ ເຊັ່ນ: ໂມເດວວິເຄາະຮູບພາບເພື່ອຈຳແນກພະຍາດໃບກາເຟຢູ່ປາກຊ່ອງ ຫຼື ໂມເດວພະຍາກອນລະດັບນ້ຳຂອງ ດ້ວຍຄອມພິວເຕີໂນດບຸກທຳມະດາ, ທ່ານອາດຈະພົບກັບບັນຫາເຄື່ອງຮ້ອນ ແລະ ຕ້ອງລໍຖ້າການປະມວນຜົນເປັນເວລາຫຼາຍມື້.
ໃນວຽກງານ Deep Learning, ການຄິດໄລ່ທາງຄະນິດສາດ (Matrix Multiplications) ມີຈຳນວນມະຫາສານ ດັ່ງນັ້ນ ການນຳໃຊ້ CPU ຈຶ່ງບໍ່ພຽງພໍ. ວິທີແກ້ໄຂທີ່ດີທີ່ສຸດແມ່ນການນຳໃຊ້ GPU (Graphics Processing Unit). ແຕ່ການຈະລົງທຶນຊື້ GPU ແຮງໆໄວ້ໃຊ້ເອງຢູ່ລາວອາດມີລາຄາແພງຫຼາຍຫຼັກພັນໂດລາ. ດ້ວຍເຫດນີ້, “Cloud GPU” ຈຶ່ງເປັນທາງອອກທີ່ດີ, ປະຢັດ ແລະ ເຂົ້າເຖິງງ່າຍທີ່ສຸດ.
ບົດຄວາມນີ້ຈະພາທ່ານໄປຮຽນຮູ້ວິທີການເຊື່ອມຕໍ່ ແລະ ຕິດຕັ້ງ Cloud GPU ຜ່ານ 2 ແພລດຟອມຍອດນິຍົມຄື: Google Colab ແລະ AWS ເຊິ່ງເໝາະສຳລັບຜູ້ທີ່ມີພື້ນຖານການຂຽນໂຄດພາສາ Python ມາແລ້ວ.
ທາງເລືອກທີ 1: Google Colab (ງ່າຍ, ໄວ ແລະ ຟຣີ)
Google Colab ແມ່ນບໍລິການ Jupyter Notebook ທີ່ເຮັດວຽກເທິງ Cloud ສາມາດໃຊ້ງານໄດ້ຟຣີ ແລະ ມີ GPU ໃຫ້ໃຊ້. ມັນເໝາະສຳລັບການທົດລອງ (Prototyping) ຫຼື ໂປຣເຈັກຂະໜາດນ້ອຍເຖິງກາງ.
ຂັ້ນຕອນການເປີດໃຊ້ງານ GPU ໃນ Colab
- ເຂົ້າໄປທີ່ເວັບໄຊທ໌ colab.research.google.com ແລ້ວສ້າງ Notebook ໃໝ່ (New Notebook).
- ໄປທີ່ເມນູດ້ານເທິງ ເລືອກ Runtime > Change runtime type.
- ໃນຊ່ອງ “Hardware accelerator”, ໃຫ້ປ່ຽນຈາກ CPU ເປັນ T4 GPU (ຫຼື GPU ອື່ນໆຖ້າທ່ານໃຊ້ Pro version).
- ກົດ Save.
ການທົດສອບວ່າ GPU ພ້ອມໃຊ້ງານດ້ວຍ PyTorch
ເພື່ອໃຫ້ແນ່ໃຈວ່າການຕັ້ງຄ່າສຳເລັດ, ໃຫ້ພິມໂຄດນີ້ລົງໃນ Cell ແລ້ວກົດ Run:
import torch
# ກວດສອບວ່າ GPU ພ້ອມໃຊ້ງານຫຼືບໍ່
if torch.cuda.is_available():
device = torch.device("cuda")
print(f"✅ ຢືນຢັນ! GPU ທີ່ກຳລັງໃຊ້ງານ: {torch.cuda.get_device_name(0)}")
else:
device = torch.device("cpu")
print("❌ ບໍ່ພົບ GPU, ກຳລັງນຳໃຊ້ CPU")
ທ່ານຍັງສາມາດກວດສອບລາຍລະອຽດຂອງ GPU ໄດ້ດ້ວຍການພິມຄຳສັ່ງ Linux:
!nvidia-smi
ທາງເລືອກທີ 2: AWS EC2 (ສຳລັບການນຳໃຊ້ແບບມືອາຊີບ ແລະ ໂປຣເຈັກຂະໜາດໃຫຍ່)
ເມື່ອໂມເດວຂອງທ່ານມີຂະໜາດໃຫຍ່ຂຶ້ນ ເຊັ່ນ: ການໃຊ້ໂມເດວປະມວນຜົນວິດີໂອເພື່ອກວດຈັບລົດຕິດຢູ່ໄຟແດງດົງປ່າລານແບບ Real-time, Google Colab ອາດຈະຕັດການເຊື່ອມຕໍ່ (Timeout) ຖ້າປິດໜ້າຈໍດົນເກີນໄປ. ໃນກໍລະນີນີ້, Amazon Web Services (AWS) ຈະເປັນທາງເລືອກທີ່ດີກວ່າ ເພາະທ່ານສາມາດເປີດເຄື່ອງປະໄວ້ໄດ້ຕະຫຼອດ 24 ຊົ່ວໂມງ.
ຂັ້ນຕອນການສ້າງ EC2 Instance ທີ່ມີ GPU
- ເຂົ້າສູ່ລະບົບ AWS Management Console ແລະໄປທີ່ບໍລິການ EC2.
- ກົດ Launch Instance.
- ເລືອກ AMI (Amazon Machine Image): ຄົ້ນຫາຄຳວ່າ
Deep Learning AMI GPU PyTorch. ການເລືອກ AMI ນີ້ຈະຊ່ວຍໃຫ້ທ່ານບໍ່ຕ້ອງມາປວດຫົວກັບການລົງ NVIDIA Drivers, CUDA, ຫຼື PyTorch ເອງ ເພາະທຸກຢ່າງຖືກຕິດຕັ້ງມາໃຫ້ແລ້ວ. - ເລືອກ Instance Type: ແນະນຳໃຫ້ຄົ້ນຫາ
g4dn.xlargeເຊິ່ງຈະມາພ້ອມກັບ NVIDIA T4 GPU. ມັນເປັນລຸ້ນທີ່ມີລາຄາສົມເຫດສົມຜົນສຳລັບການເລີ່ມຕົ້ນ (ປະມານ $0.52 ຕໍ່ຊົ່ວໂມງ). - ຕັ້ງຄ່າ Key Pair: ສ້າງ ແລະ ດາວໂຫຼດໄຟລ໌
.pemໄວ້ສຳລັບ Login (ຢ່າໃຫ້ໄຟລ໌ນີ້ຫາຍເດັດຂາດ). - ກົດ Launch Instance.
ການເຊື່ອມຕໍ່ຜ່ານ SSH ໄປຍັງ Server
ເປີດ Terminal (ຫຼື Command Prompt ຖ້າໃຊ້ Windows) ໃນເຄື່ອງຂອງທ່ານ ແລ້ວພິມຄຳສັ່ງ:
# ປ່ຽນສິດການເຂົ້າເຖິງໄຟລ໌ pem (ສຳລັບ Mac/Linux)
chmod 400 your-key.pem
# ເຊື່ອມຕໍ່ເຂົ້າໄປຫາ Server
ssh -i "your-key.pem" ubuntu@<Public-IP-ຂອງ-EC2-ທ່ານ>
ເມື່ອເຂົ້າສູ່ລະບົບສຳເລັດ, ພຽງແຕ່ພິມ source activate pytorch_p310 ທ່ານກໍພ້ອມສຳລັບການ Train ໂມເດວເລີຍ!
ໝາຍເຫດສຳຄັນ: ເມື່ອສຳເລັດການ Train ໂມເດວ, ໃຫ້ເຂົ້າໄປກົດ Stop Instance ທຸກຄັ້ງ ເພື່ອບໍ່ໃຫ້ AWS ຕັດເງິນໃນບັດເຄຣດິດຂອງທ່ານຖິ້ມລ້າໆ!
ຕົວຢ່າງການນຳໃຊ້: ການສົ່ງໂມເດວເຂົ້າຮຽນຮູ້ໃນ GPU
ບໍ່ວ່າທ່ານຈະໃຊ້ Colab ຫຼື AWS, ໃນການຂຽນໂຄດດ້ວຍ PyTorch ທ່ານຕ້ອງ “ຍ້າຍ (Move)” ທັງ ໂມເດວ (Model) ແລະ ຂໍ້ມູນ (Data) ເຂົ້າໄປໄວ້ໃນ Memory ຂອງ GPU.
ລອງມາເບິ່ງຕົວຢ່າງການສ້າງ Convolutional Neural Network (CNN) ເພື່ອກວດຈັບພະຍາດໃບກາເຟ:
import torch
import torch.nn as nn
# 1. ກຳນົດ Device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 2. ສ້າງໂມເດວ CNN ງ່າຍໆສຳລັບຈຳແນກໃບກາເຟ (ປົກກະຕິ ຫຼື ເປັນພະຍາດ)
class CoffeeLeafCNN(nn.Module):
def __init__(self):
super(CoffeeLeafCNN, self).__init__()
self.conv1 = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3)
self.fc1 = nn.Linear(16 * 26 * 26, 2)
def forward(self, x):
x = torch.relu(self.conv1(x))
x = x.view(x.size(0), -1) # Flatten
x = self.fc1(x)
return x
# 3. ເອີ້ນໃຊ້ໂມເດວ ແລະ "ຍ້າຍ" ໄປໄວ້ໃນ GPU (ຈຸດນີ້ສຳຄັນຫຼາຍ!)
model = CoffeeLeafCNN().to(device)
# 4. ຈຳລອງຂໍ້ມູນຮູບພາບ (Batch size 8, 3 Channels RGB, 28x28 pixels)
# ແລະ "ຍ້າຍ" ຂໍ້ມູນເຂົ້າໄປໃນ GPU ເຊັ່ນກັນ
dummy_images = torch.randn(8, 3, 28, 28).to(device)
dummy_labels = torch.randint(0, 2, (8,)).to(device)
# 5. ທົດລອງ Forward Pass
outputs = model(dummy_images)
print(f"ຂະໜາດຂອງ Output Tensor: {outputs.shape}")
print("🎉 ສຳເລັດການປະມວນຜົນຜ່ານ GPU!")
ຖ້າທ່ານລືມ .to(device) ໄວ້ທີ່ຕົວປ່ຽນໃດໜຶ່ງ, ລະບົບຈະແຈ້ງເຕືອນ Error ວ່າ Tensor ຢູ່ຕ່າງ Device ກັນ (CPU ກັບ GPU ລົມກັນໂດຍກົງບໍ່ໄດ້).
ສິ່ງສຳຄັນທີ່ຄວນຈື່ (Key Takeaways)
- Google Colab: ງ່າຍທີ່ສຸດ, ຟຣີ, ບໍ່ຕ້ອງຕັ້ງຄ່າ Server. ເໝາະສຳລັບການທົດລອງ ແລະ ຊອກຫາ Model Architecture ທີ່ເໝາະສົມ.
- AWS EC2: ເໝາະສຳລັບໂປຣເຈັກຈິງຈັງ, ຕ້ອງການເວລາ Train ດົນໆ ຂ້າມມື້ຂ້າມຄືນ ໂດຍບໍ່ຢ້ານການຕັດການເຊື່ອມຕໍ່. ຄວນເລືອກໃຊ້
Deep Learning AMIເພື່ອຄວາມວ່ອງໄວໃນການເຊັດອັບ. - Best Practice ໃນ PyTorch: ຈົ່ງຈື່ສະເໝີວ່າ ໂມເດວ ແລະ ຂໍ້ມູນ ຕ້ອງຖືກຍ້າຍໄປໃນ Device ອັນດຽວກັນ (
.to(device)) ກ່ອນທຳການເທຣນ. - ຕື່ນຕົວເລື່ອງຄ່າໃຊ້ຈ່າຍ (Cost Control): ປິດ ຫຼື Terminate EC2 Instance ທຸກຄັ້ງທີ່ບໍ່ໄດ້ໃຊ້ງານ ເພື່ອຮັກສາງົບປະມານຂອງທ່ານ.
ການນຳໃຊ້ Cloud GPU ຈະຊ່ວຍເປີດປະຕູສູ່ການສ້າງນັດວັດຕະກຳໃໝ່ໆໃນປະເທດລາວ. ບໍ່ວ່າຈະເປັນການເອົາ AI ມາຊ່ວຍຊາວສວນຢູ່ຕ່າງແຂວງ, ການຊ່ວຍອະນຸລັກພາສາລາວ (NLP), ຫຼື ການພັດທະນາ Smart City. ຂໍໃຫ້ມ່ວນຊື່ນກັບການເທຣນໂມເດວ Deep Learning ຂອງທ່ານໃນ Cloud!