การติดตั้ง PyTorch package บน TARA
สมมุติว่าท่านต้องการเรียกใช้ library ดังแสดงใน header ของโปรแกรม python หนึ่งที่เรียกใช้ torch3D torchvision torchsummary
import numpy as np
import torch
import torch.nn as nn
import torchvision
from torchvision import models
from torchsummary import summary
และท่านมี requirements-3DDL.txt ที่ได้จากการ pip freeze จากเครื่อง development ของท่าน ดังนี้
$ cat requirements-3DDL.txt
cycler==0.10.0
fvcore==0.1.5.post20210812
imageio==2.9.0
iopath==0.1.9
kiwisolver==1.3.1
matplotlib==3.4.3
networkx==2.6.2
numpy==1.21.2
opencv-python==4.5.3.56
Pillow==8.3.1
plotly==5.2.1
portalocker==2.3.0
pyparsing==2.4.7
python-dateutil==2.8.2
PyTorch3d==0.5.0
PyWavelets==1.1.1
PyYAML==5.4.1
scikit-image==0.18.2
scipy==1.7.1
six==1.16.0
tabulate==0.8.9
tenacity==8.0.1
termcolor==1.1.0
tifffile==2021.8.8
torch==1.9.0
torchaudio==0.9.0
torchsummary==1.5.1
torchvision==0.10.0
tqdm==4.62.1
typing-extensions==3.10.0.0
yacs==0.1.8
ท่านสามารถติดตั้ง library ดังกล่าวได้บน project home directory ของท่านบน TARA HPC ใน Virtual Environment (source activate) ของท่าน หรือติดตั้งใน Singularity container เพื่อการใช้งานบน TARA HPC ได้
ติดตั้ง Package module ใน virtualenv และทดสอบใช้งาน
อย่าลืม load module ซอฟแวร์ที่ต้องการใช้งานก่อนเริ่มทำงานใน TARA
สร้าง Virtual Environment ใน TARA
ในตัวอย่างด้านล่าง ได้ทำการ module load Python แล้วสร้าง virtualenv ไว้ในโฟลเดอร์ venv-3DDL จากนั้น activate virtualenv ที่สร้างขึ้นด้วยคำสั่ง source venv-3DDL/bin/activate
แล้วจึงเริ่มทำการติดตั้ง Package ที่ต้องการ เช่น pip install -r requirement.txt
หรือ การติดตั้ง Package แบบระบุที่อยู่
[uaccount@tara-frontend-1 segmed]$ module load Python
[uaccount@tara-frontend-1 segmed]$ virtualenv venv-3DDL
...
[uaccount@tara-frontend-1 segmed]$ source venv-3DDL/bin/activate
(venv-3DDL) [uaccount@tara-frontend-1 segmed]$ pip list
Package Version
---------- -------
pip 21.1.3
setuptools 57.4.0
wheel 0.36.2
(venv-3DDL) [uaccount@tara-frontend-1 segmed]$ pip install -r requirements-3DDL.txt
...
ERROR: Could not find a version that satisfies the requirement PyTorch3d==0.5.0 (from versions: 0.0.1)
ERROR: No matching distribution found for PyTorch3d==0.5.0
ERROR: Could not find a version that satisfies the requirement PyTorch3d==0.5.0 (from versions: 0.0.1)
ERROR: No matching distribution found for PyTorch3d==0.5.0
จาก error ข้างต้นและผลการค้นบนอินเตอร์เน็ต (อ่านเพิ่มเติม) ทำให้ติดตั้ง specific version ของ PyTorch3D ที่เหมาะสมกับเวอร์ชั่นของ Python, cuda, และ PyTorch ที่กำลังใช้งานอยู่บนระบบ TARA ได้ดังนี้
ทดสอบใช้งานด้วย sinteract
sinteract -p gpu
หลังจากติดตั้งเสร็จสิ้นจึงทดสอบโปรแกรมที่ต้องการรันต่อ $ python basic-multigpu-pytorch.py
โดยในกรณีนี้เราต้องการใช้งาน gpu จึงจองทรัพยากรแบบ sinteract
เพื่อทำการทดสอบโปรแกรมเบื้องต้น
ซึ่งจะสังเกตเห็นว่าตอนนี้เราสามารถจองทรัพยากรสำเร็จและได้เปลี่ยนจาก frontend-1 node มาอยู่บน tara-g-001 หรือ gpu node เบอร์ 001 แล้วนั่นเอง
output
จากนั้นเรียกใช้งาน virtual environment ที่เราต้องการ แล้วทดสอบโปรแกรมกับ package ต่างๆที่ได้ติดตั้งไว้แล้วใน vitualenv
ติดตั้ง Package module ใน Singularity container และทดสอบใช้งาน
อ้างอิงการสร้าง Singularity Container อย่างง่ายใน 5 ขั้นตอน
สร้าง Singularity container
ตัวอย่างด้านล่างนี้ทำใน local machine ที่ติดตั้ง singularity ไว้บน Linux machine โดยทำตามเอกสารอ้างอิง และเพิ่มเติมการทดสอบรันตัวอย่างโปรแกรม Python (basic-multigpu-pytorch.py
) ภายใน container เพื่อยืนยันว่าได้ติดตั้ง package module ที่ถูกต้องพร้อมใช้งานจริง
จะเห็นจาก output ที่ทดสอบภายใน container ว่าไม่มี cuda device เนื่องจากเรากำลังอยู่ใน linux machine ที่ไม่มี GPUs แต่จากผลลัพธ์แสดงให้เห็นว่าสามารถใช้งาน package modules ต่างๆที่จำเป็นได้แล้ว
ทดสอบใช้งานด้วย sbatch
เตรียม Slurm submission script
ใน submission script นี้กำหนดให้ใช้งาน partition “dgx-preempt” โดยเราทราบอยู่แล้วว่า dgx node มีจำนวน 8 GPUs ด้วยกัน
output
สังเกตจากผลลัพธ์จะเห็นได้ว่า nn.DataParallel
ทำการแบ่งข้อมูลกระจายไปรันใน GPUs ทุกตัวของ dgx node
Related articles