การติดตั้งและการใช้งาน conda หรือ mamba

ทางทีมแนะนำให้ใช้ Mambaforge ซึ่งมี channel เริ่มต้นเป็น conda-forge เนื่องจากเป็น opensource

การทำงานของ conda และ mamba มีลักษณะคล้ายคลึงกัน

การติดตั้ง Mambaforge

ขั้นตอนการติดตั้ง

1. ทำการ download ตัว installer ของ Mambaforge version ล่าสุด และทำการติดตั้งโดยระบุคำสั่งดังนี้

wget https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Mambaforge-24.1.2-0-Linux-x86_64.sh bash Mambaforge-24.1.2-0-Linux-x86_64.sh

2. ดำเนินการตามขั้นตอนที่ปรากฏบนหน้าจอ โดยระบุ yes และ กด Enter เพื่อยอมรับข้อตกลงการใช้งาน (license ของ Mambaforge)

3. ระบุ path ที่ต้องการติดตั้ง และกด Enter (สามารถเว้นว่างไว้และกด Enter โดยโปรแกรมจะถูกติดตั้งที่ $HOME/mambaforge หรือ ~/mambaforge)

หากต้องการใช้งานร่วมกันภายในโครงการ สามารถระบุ path ไปที่ project home ได้

4. ระบุ yes และ กด Enter เพื่อให้ conda ทำการ setup ~/.bashrc โดยอัตโนมัติเพื่อ set ค่า environment ต่างๆ

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) ขึ้นที่ด้านหน้า

[hpcuser@tara-frontend-1 ~]$ conda activate base (base) [hpcuser@tara-frontend-1 ~]$

3. ทดลองเรียกคำสั่ง python -V จะแสดง python version ของ base environment ใน conda

(base) [vjarerat@tara-frontend-1 ~]$ python -V Python 3.9.7

4. ออกจาก conda base environment โดยใช้คำสั่ง conda deactivate โดย (base) จะหายไปและเมื่อทดลองใช้ คำสั่ง python -V จะแสดง python version ของระบบแทน

การจัดการ conda environment

บนระบบ TARA HPC ผู้ใช้งานสามารถ จัดการกับ conda environment ได้เอง โดยใช้คำสั่งเหมือนการจัดการบน Linux โดยสามารถอ่านข้อมูลเพิ่มเติมได้ที่ Managing environments — conda documentation

การสร้าง virtual environment

สามารถสร้าง virtual environment โดยใช้คำสั่ง

จากนั้นตามดำเนินการตามขั้นที่แสดงบนหน้าจอ (ระบุ y เพื่อยืนยันการติดตั้ง)

หมายเหตุ ถ้าไม่ได้ระบุ python version ระบบจะสร้าง environment สำหรับ python version ล่าสุด ถ้าต้องการใช้งาน version อื่นๆ สามารถระบุ version ตามหลังได้เช่น conda create -n myenv python=3.7 (-n เป็นแบบย่อของ --name)

การดูรายชื่อ virtual environment

สามารถดูรายชื่อ virtual environment ทั้งหมดที่ติดตั้งไว้โดยใช้คำสั่ง

เช่น

การเรียกใช้งาน virtual environment

สามารถใช้งาน virtual environment ได้โดยใช้คำสั่ง

โดย [envname] คือชื่อของ environment ที่ต้องการเรียกใช้ โดยเมื่ออยู่ใน virtual environment จะมี (envname) แสดงขึ้นที่ด้านหน้า เช่น

การสร้าง virtual environment บน TARA จาก virtual environment เดิมที่มีในเครื่อง

หากมี environment ที่ต้องการใช้งานอยู่แล้วใน computer เครื่องอื่นๆ ผู้ใช้งานสามารถบันทึกคุณสมบัติของ environment นั้นๆลงใน environment.yml และทำมาสร้าง environment บน TARA ให้ software ต่างๆเหมือนเดิมได้โดยมาขึ้นตอนดังนี้

1. บนเครื่องที่มี environment ที่ต้องการคัดลอก (local workstation) เรียกใช้งาน environment ที่ต้องการ

2. ทำการสร้าง environment.yml โดยใช้คำสั่ง

กรณี export จากเครื่องที่เป็นระบบปฏิบัติการ Windows (ที่ไม่ได้ติดตั้งเป็น Linux subsystem) ให้ใช้เป็น

โดยระบุใน CMD/Anaconda Prompt ใน environment ที่ต้องการ โดน default แล้วจะเป็น base environment สังเกตจากจะมี (base) ที่ด้านหน้า ไฟล์ environment.yml ที่ออกมานั้นจะอยู่ใน path ขณะระบุคำสั่ง โดยปกติจะอยู่ที่ user ถ้าต้องการเปลี่ยนไป path อื่น สามาถใช้คำสั่ง cd ได้ เช่น

สามารถเปลี่ยนเป็น environment ที่ต้องการ export ได้ใน CMD Prompt เลยโดยใช้คำสั่ง conda activate [envname] โดยที่ด้านหน้า (base) จะเปลี่ยนเป็น (envname) ที่ activate มา


การเปิด 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 โดยใช้คำสั่ง

การติดตั้ง software เพิ่มเติมลงใน virtual environment

1. ทำการเรียกใช้งาน virtual environment ที่ต้องการติดตั้ง

2. ติดตั้ง software ที่ติดการโดยใช้คำสั่ง pip install [package] หรือ conda install [package] เช่น

การออกจาก virtual environment

สามารถออกจาก virtual environment ได้โดยใช้คำสั่ง

เมื่อออกจาก virtual environment แล้ว (envname) ด้านหน้าจะหายไป เช่น

การลบ virtual environment

สามารถลบ virtual environment ที่ไม่ต้องการใช้งานแล้วโดยใช้คำสั่ง

การลบ caches และ packages ไม่ที่มีการใช้งาน

สามารถใช้คำสั่ง conda clean

ตัวอย่าง sbatch submit.sh

1. กรณี multithread โดยไม่ใช้ MPI

บรรทัดที่ 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

บรรทัดที่ 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