...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Info |
---|
ทางทีมแนะนำให้ใช้ Mambaforge ซึ่งมี channel เริ่มต้นเป็น conda-forge เนื่องจากเป็น opensource การทำงานของ conda และ mamba มีลักษณะคล้ายคลึงกัน |
Table of Contents |
---|
การติดตั้ง
...
Mambaforge
ขั้นตอนการติดตั้ง
1. ทำการ download ตัว installer ของ miniconda3 Mambaforge version ล่าสุด และทำการติดตั้งโดยระบุคำสั่งดังนี้
Code Block |
---|
wget https://github.com//repo.continuum.io/miniconda/Miniconda3-latestconda-forge/miniforge/releases/download/24.1.2-0/Mambaforge-24.1.2-0-Linux-x86_64.sh bash Miniconda3-latestMambaforge-24.1.2-0-Linux-x86_64.sh |
2. ดำเนินการตามขั้นตอนที่ปรากฏบนหน้าจอ โดยระบุ yes
และ กด Enter เพื่อยอมรับข้อตกลงการใช้งาน (license ของ minicondaMambaforge)
3. ระบุ path ที่ต้องการติดตั้ง และกด Enter (สามารถเว้นว่างไว้และกด Enter โดยโปรแกรมจะถูกติดตั้งที่ $HOME/mambaforge หรือ ~/miniconda3mambaforge)
หากต้องการใช้งานร่วมกันภายในโครงการ สามารถระบุ path ไปที่ project home ได้
...
5. ระบุคำสั่ง conda config --set auto_activate_base false
เพื่อตั้งค่าเริ่มต้นให้เข้า shell ปกติ (ถ้าข้ามขั้นตอนนี้ conda จะ auto activate ตัว base environment ทุกครั้งที่ login)
ตรวจสอบการติดตั้ง
1. ใช้คำสั่ง source ~/.bashrc
เพื่อตั้งค่า environment (สามารถ log-out จากนั้น log-in เข้ามาใหม่แทนขั้นตอนนี้ได้)
2. ทดลองเรียกคำสั่ง conda activate base
สังเกตจากจะมี (base) ขึ้นที่ด้านหน้า
Code Block | ||
---|---|---|
| ||
[hpcuser@tara-frontend-1 ~]$ conda activate base (base) [hpcuser@tara-frontend-1 ~]$ |
3. ทดลองเรียกคำสั่ง python -V
จะแสดง python version ของ base environment ใน conda
Code Block |
---|
(base) [vjarerat@tara-frontend-1 ~]$ python -V
Python 3.9.7 |
4. ออกจาก conda base environment โดยใช้คำสั่ง conda deactivate
โดย (base) จะหายไปและเมื่อทดลองใช้ คำสั่ง python -V
จะแสดง python version ของระบบแทน
Code Block |
---|
การสร้าง local conda environment
...
(base) [vjarerat@tara-frontend-1 ~]$ conda deactivate
[vjarerat@tara-frontend-1 ~]$ python -V
Python 2.7.5 |
การจัดการ conda environment
บนระบบ TARA HPC ผู้ใช้งานสามารถ จัดการกับ conda environment ได้เอง โดยใช้คำสั่งเหมือนการจัดการบน Linux โดยสามารถอ่านข้อมูลเพิ่มเติมได้ที่ Managing environments — conda documentation
การสร้าง virtual environment
สามารถสร้าง virtual environment โดยใช้คำสั่ง
Code Block |
---|
conda create --name myenv |
จากนั้นตามดำเนินการตามขั้นที่แสดงบนหน้าจอ (ระบุ y
เพื่อยืนยันการติดตั้ง)
หมายเหตุ ถ้าไม่ได้ระบุ python version ระบบจะสร้าง environment สำหรับ python version ล่าสุด ถ้าต้องการใช้งาน version อื่นๆ สามารถระบุ version ตามหลังได้เช่น conda create -n myenv python=3.7
(-n
เป็นแบบย่อของ --name
)
การดูรายชื่อ virtual environment
สามารถดูรายชื่อ virtual environment ทั้งหมดที่ติดตั้งไว้โดยใช้คำสั่ง
Code Block |
---|
conda env list |
เช่น
Code Block |
---|
[hpcuser@tara-frontend-1 ~]$ conda env list # conda environments: base * /tarafs/data/home/hpcuser/miniconda3 myenv /tarafs/data/home/hpcuser/miniconda3/envs/myenv myenv2 /tarafs/data/home/hpcuser/miniconda3/envs/myenv2 |
การเรียกใช้งาน virtual environment
สามารถใช้งาน virtual environment ได้โดยใช้คำสั่ง
Code Block |
---|
conda activate [envname] |
โดย [envname]
คือชื่อของ environment ที่ต้องการเรียกใช้ โดยเมื่ออยู่ใน virtual environment จะมี (envname) แสดงขึ้นที่ด้านหน้า เช่น
Code Block |
---|
[hpcuser@tara-frontend-1 ~]$ conda activate |
...
myenv
(myenv) [hpcuser@tara-frontend-1 ~]$
(myenv) [hpcuser@tara-frontend-1 ~]$ python -V
Python 3.7.12 |
การสร้าง virtual environment บน TARA จาก virtual environment เดิมที่มีในเครื่อง
หากมี environment ที่ต้องการใช้งานอยู่แล้วใน computer เครื่องอื่นๆ ผู้ใช้งานสามารถบันทึกคุณสมบัติของ environment นั้นๆลงใน environment.yml และทำมาสร้าง environment บน TARA ให้ software ต่างๆเหมือนเดิมได้โดยมาขึ้นตอนดังนี้
1. บนเครื่องที่มี environment ที่ต้องการคัดลอก (local workstation) เรียกใช้งาน environment ที่ต้องการ
Code Block |
---|
conda activate local_env |
2. ทำการสร้าง environment.yml โดยใช้คำสั่ง
Code Block |
---|
conda env export > environment.yml |
Expand | ||||
---|---|---|---|---|
| ||||
กรณี export จากเครื่องที่เป็นระบบปฏิบัติการ Windows (ที่ไม่ได้ติดตั้งเป็น Linux subsystem) ให้ใช้เป็น
โดยระบุใน CMD/Anaconda Prompt ใน environment ที่ต้องการ โดน default แล้วจะเป็น base environment สังเกตจากจะมี (base) ที่ด้านหน้า ไฟล์
สามารถเปลี่ยนเป็น environment ที่ต้องการ export ได้ใน CMD Prompt เลยโดยใช้คำสั่ง การเปิด CMD Prompt สำหรับ Anaconda สามารถเปิดได้หลายวิธี เช่น a. เปิดจากแถบค้นหาของ Windows ให่ระบุ Anaconda ลงในแทบค้นหาจากนั้นเลือก Anaconda Prompt b. เปิด Anaconda Navigator จากนั้นเลือก CMD.exe Prompt |
3. คัดลอก environment.yml มาไว้บนระบบ TARA HPC
4. บนระบบ TARA HPC ที่ทำการติดตั้ง miniconda เรียบร้อยแล้ว สามารถสร้าง environment จาก environment.yml โดยใช้คำสั่ง
Code Block |
---|
conda env create -f environment.yml |
การติดตั้ง software เพิ่มเติมลงใน virtual environment
1. ทำการเรียกใช้งาน virtual environment ที่ต้องการติดตั้ง
2. ติดตั้ง software ที่ติดการโดยใช้คำสั่ง pip install [package]
หรือ conda install [package]
เช่น
Code Block |
---|
[hpcuser@tara-frontend-1 ~]$ conda activate myenv (myenv)[hpcuser@tara-frontend-1 ~]$ pip install tensorflow==2.4.3 |
...
pip install numpy #ติดตั้ง numby package
...
pip list #ตรวจสอบ package ที่มี
...
python -V #ตรวจสอบ python version
...
(myenv)[hpcuser@tara-frontend-1 ~]$ pip list |
Note |
---|
การใช้ conda install มีความแตกต่างจากการใช้ pip install อาจจะให้ผลลัพท์ที่แตกต่างกันขึ้นอยู่กับ software |
การออกจาก virtual environment
สามารถออกจาก virtual environment ได้โดยใช้คำสั่ง
Code Block |
---|
conda deactivate |
เมื่อออกจาก virtual environment แล้ว (envname) ด้านหน้าจะหายไป เช่น
Code Block |
---|
(myenv) [hpcuser@tara-frontend-1 ~]$ conda deactivate
[hpcuser@tara-frontend-1 ~]$ |
การลบ virtual environment
สามารถลบ virtual environment ที่ไม่ต้องการใช้งานแล้วโดยใช้คำสั่ง
Code Block |
---|
conda env remove --name myenv |
การลบ caches และ packages ไม่ที่มีการใช้งาน
สามารถใช้คำสั่ง conda clean
Info |
---|
หมายเหตุ caches กินพื้นที่แต่ช่วยย่นระยะเวลาการติดตั้ง packages ในกรณีที่มีการใช้ packages คล้ายๆกันในหลายๆ environments ผู้ใช้งานสามารถเลือก option ของ conda clean ตามความเหมาะสมได้ โดยวิธีการใช้งานคำสั่งโดยละเอียดสามารถดูได้จาก conda clean — conda documentation |
ตัวอย่าง sbatch submit.sh
1. กรณี multithread
...
โดยไม่ใช้ MPI
Code Block |
---|
#!/bin/bash #SBATCH -p gpu memory # specific partition (compute, memory, gpu) #SBATCH -N 1 -c 40 192 # specific number of nodes and task per node #SBATCH --mem=MaxMemPerNode # specific amout of memory (RAM),delete this line if using default #SBATCH -t 1:00:00 # job time limit #SBATCH -J test testtest # job name #SBATCH -A thaisc projxxxx # Specify Project account which will be received after Register ** If you do not specify in this section, the job will not be able to run. module purge # purge all module source $HOME/miniconda3/bin/~/.bashrc conda activate myenv module load cuDNN python my_model_main_tf2CPU.py --model_dir=models/ --pipeline_config_path=models/pipeline.config |
บรรทัดที่ 1-7 เป็นการระบุทรัพยากรที่ต้องการใช้งาน โดยเป็นการเรียกใช้งาน memory partition (-p memory
) เรียกใช้ 1 Node (-N 1
) 192 cores (-c 192
) ใช้ RAM จำนวนสูงสุด (3 TB สำหรับ memory node) (--mem=MaxMemPerNode
) เป็นเวลา 1 ชั่วโมง (-t 1:00:00
) โดยตั้งชื่อ job ว่า test (-J test
) ภายใต้โครงการ projxxxx (-A projxxxx
)
บรรทัดที่ 9 คำสั่ง module purge
จะทำการ unload module ออกทั้งหมด เพื่อป้องกันการ conflict ของ software/library ต่างๆ
บรรทัดที่ 10-11 เป็นเรียกใช้งาน conda ที่ set ไว้ใน ~/.bashrc และเรียกใช้งาน conda virtual environment ที่ชื่อ myenv
บรรทัดที่ 13 รันคำสั่ง python my_model_CPU.py
2. กรณี multithread
...
โดยใช้ MPI
Info |
---|
สังเกตจากการที่ต้องระบุคำสั่ง mpirun (หรือเทียบเคียง) เวลาใช้งาน application นั้นๆ |
Code Block |
---|
#!/bin/bash #SBATCH -p gpu dgx-preempt # specific partition (compute, memory, gpu) #SBATCH -N 1 -n 40 # specific number of nodes and task per node #SBATCH -t 1:00:00 # job time limit #SBATCH -J testmpi testtest # job name #SBATCH -A projxxx # Specify Project account which will be received after Register ** If you do not specify in this section, the job will not be able to run. module purge # purge all module source $HOME/miniconda3/bin/~/.bashrc conda activate myenvmyenv2 module load cuDNN srun -n 8 python my_model_GPU.py |
บรรทัดที่ 1-6 เป็นการระบุทรัพยากรที่ต้องการใช้งาน โดยเป็นการเรียกใช้งาน dgx-preempt partition (-p dgx-preempt
) จำนวน 1 node (-N 1
) เนื่องจากการใช้งาน dgx หรือ dgx-preempt เป็นการใช้งานทั้ง node อยู่แล้ว จึงไม่ได้ระบุค่าอื่นๆ เพิ่มเติม เป็นเวลา 1 ชั่วโมง (-t 1:00:00
) โดยตั้งชื่อ job ว่า testmpi (-J testmpi
) ภายใต้โครงการ projxxxx (-A projxxxx
)
บรรทัดที่ 8 คำสั่ง module purge
จะทำการ unload module ออกทั้งหมด เพื่อป้องกันการ conflict ของ software/library ต่างๆ
บรรทัดที่ 9-10 เป็นเรียกใช้งาน conda ที่ set ไว้ใน ~/.bashrc และเรียกใช้งาน conda virtual environment ที่ชื่อ myenv2
บรรทัดที่ 11 คำสั่ง module load cuDNN
เป็นการเรียกใช้ software หรือ library ที่ติดตั้งไว้ในระบบ module เข้ามาใช้งานเพิ่มเติม ในที่นี้คือเรียกใช้ library cuDNN โดยที่การเรียกใช้ software ในงานระบบ module จะต้องเรียกหลังจากทำการ conda activate แล้วเท่านั้น
บรรทัดที่ 13 รันคำสั่ง srun python my_model_CPU.py
เป็นการสั่งรันแบบ MPI โดย -n 8
จะเป็นการบอกให้ srun ใช้ MPI 8 ranks (run 8 processes) ซึ่งสำหรับบาง application ที่ต้องการใช้จำนวน processes เท่ากับจำนวน GPU cards ที่ต้องการใช้ (บน DGX-1 มี V100 8 cards)
...
Related articles
Filter by label (Content by label) | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|