Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

Info

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

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

Table of Contents

การติดตั้ง

...

Mambaforge

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

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

Code Block
wget https://github.com/conda-forge/miniforge/releases/download/repo24.continuum1.io/miniconda/Miniconda3-latest2-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/miniconda3 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 เข้ามาใหม่แทนขั้นตอนนี้ได้)

...

Code Block
(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 โดยใช้คำสั่ง

...

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

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

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

...

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
[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 ต่างๆเหมือนเดิมได้โดยมาขึ้นตอนดังนี้

...

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

Code Block
conda env export > environment.yml
Expand
titleสำหรับระบบปฎิบัติการ Windows

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

Code Block
conda env export --no-build > environment.yml

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

Code Block
Microsoft Windows [Version 10.0.19044.1766]
(c) Microsoft Corporation. All rights reserved.

(base) C:\Users\myuser>                   # เข้ามาจะอยู่ใน user directory ของเราซึ่งคือ C:\Users\myuser
(base) C:\Users\myuser> cd Desktop        # ใช้คำสั่ง cd เปลี่ยนเปลี่ยนไปที่ Desktop

(base) C:\Users\myuser\Desktop>           # สังเกตว่า path ด้านหน้ามี Desktop เพิ่มเข้ามา

(base) C:\Users\myuser\Desktop> conda env export --no-build > environment.yml
# ที่ desktop จะมีไฟล์ environment.yml เพิ่มขึ้นมา (สามารถใช้คำสั่ง dir ดูใน cmd prompt ได้เช่นกัน)

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


การเปิด CMD Prompt สำหรับ Anaconda

สามารถเปิดได้หลายวิธี เช่น

a. เปิดจากแถบค้นหาของ Windows ให่ระบุ Anaconda ลงในแทบค้นหาจากนั้นเลือก Anaconda Prompt

Image Added

b. เปิด Anaconda Navigator จากนั้นเลือก CMD.exe Prompt

Image Added

3. คัดลอก environment.yml มาไว้บนระบบ TARA HPC

...

Code Block
conda env create -f environment.yml

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

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

...

Note

การใช้ conda install มีความแตกต่างจากการใช้ pip install อาจจะให้ผลลัพท์ที่แตกต่างกันขึ้นอยู่กับ software

การออกจาก virtual environment

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

...

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 memory                      # specific partition (compute, memory, gpu)
#SBATCH -N 1 -c 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                        # job name
#SBATCH -A 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  

python my_model_CPU.py 

...

บรรทัดที่ 9 คำสั่ง module purge จะทำการ unload module ออกทั้งหมด เพื่อป้องกันการ conflict ของ software/library ต่างๆ

บรรทัดที่ 10 คำสั่ง source $HOME/miniconda3/bin/activate myenv เป็นการเรียกใช้งาน -11 เป็นเรียกใช้งาน conda ที่ set ไว้ใน ~/.bashrc และเรียกใช้งาน conda virtual environment ที่ชื่อ myenv

บรรทัดที่ 1213 รันคำสั่ง python my_model_CPU.py

2. กรณี multithread โดยใช้ MPI

Info

สังเกตจากการที่ต้องระบุคำสั่ง mpirun (หรือเทียบเคียง) เวลาใช้งาน application นั้นๆ

Code Block
#!/bin/bash
#SBATCH -p dgx-preempt                 # specific partition (compute, memory, gpu)
#SBATCH -N 1                           # specific number of nodes and task per node
#SBATCH -t 1:00:00                     # job time limit
#SBATCH -J testmpi                     # 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 myenv2
module load cuDNN

srun -n 8 python my_model_GPU.py 

...

บรรทัดที่ 8 คำสั่ง module purge จะทำการ unload module ออกทั้งหมด เพื่อป้องกันการ conflict ของ software/library ต่างๆ

บรรทัดที่ 9 คำสั่ง source $HOME/miniconda3/bin/activate myenv2 เป็นการเรียกใช้งาน -10 เป็นเรียกใช้งาน conda ที่ set ไว้ใน ~/.bashrc และเรียกใช้งาน conda virtual environment ที่ชื่อ myenv2

บรรทัดที่ 1011 คำสั่ง module load cuDNN เป็นการเรียกใช้ software หรือ library ที่ติดตั้งไว้ในระบบ module เข้ามาใช้งานเพิ่มเติม ในที่นี้คือเรียกใช้ library cuDNN โดยที่การเรียกใช้ software ในงานระบบ module จะต้องเรียกหลังจากทำการ conda activate แล้วเท่านั้น

บรรทัดที่ 1213 รันคำสั่ง 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)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@48ae393
showSpacefalse
sortmodified
showSpacetypefalsepage
reversetrue
typelabelspagesingularity python container
cqllabel in ( "conda" , "jupyter" ) and type = "page" and space = "UG"labelssingularity python container