- vừa được xem lúc

Tìm hiểu về Slurm Workload Manager ( Phần 1)

0 0 27

Người đăng: TinhTran

Theo Viblo Asia

What is a cluster?

Viết tắt computer clusters, kết nối các máy tính có cấu hình thấp với nhau ( thay vì 1 super computer). Mỗi máy tính được gọi là 1 node. Có 2 loại node đó là head nodecomputer node.

Generalized architecture of a typical Servercluster

Terminology

Head Node:

Là nơi đăng nhập vào cluster, là nơi chỉnh sửa script, compile code, và submit jobs tới scheduler. Head Node được chia sẽ với các user khác nên các Job không nên được chạy ở Head Node. ( sẽ được nhắc lại ở quy tắc 10 - 10 bên dưới )

Compute Node:

Là nơi mà các Job được chạy, nhưng để được chạy ở các Node này chúng ta phải thông qua Job Scheduler bằng việc Submitting Job. Job sẽ được tự động chạy trên node này khi yêu cầu về resources ok.

Cores:

Có thể hiểu như là số lượng processor CPU-cores. Nó sẽ xử lí và thực hiện các yêu cầu phần lớn các công việc yêu cầu.

How Do HPC Clusters Work?

Để chương trình có thể chạy được trên cluster, bạn phải chuẩn bị các file sau ở trên Head Node:

  1. Code chạy chương trình ( ví dụ file .py)

  2. Một file SLURM script, file này sẽ yêu cầu resources bạn cần. Ví dụ ( Memory, number cpu, number node, …)

Khi file slurm được submited, scheduler sẽ kiểm tra nếu các yêu cầu về resources ok thì job sẽ được chạy, nếu không sẽ đưa vào hàng chờ.

Important Notes on Using HPC Clusters

The 10-10 Rule:

Một điều quan trọng bạn cần lưu ý đó là bạn có thể sử dụng các câu lệnh nhanh chóng trên các head node nhưng.

- Không quá 10 phút
- Không sử dụng quá 10% cores và memory Nếu vượt quá thì bạn sẽ làm ảnh hưởng đến người khác. Có một số cách để bạn có thể check thông tin của head node như: 
  • uname -a ( hiển thị thông tin hệ thống )

  • lscpu ( hiển thị liên quan đến cpu, số lượng cores, speed … )

  • free -m ( Hiển thị memmory)

  • df -h ( check bộ nhớ lưu trữ ( disk ) )

  • top ( hiển thị các thông tin đang chạy (cpu, mem..))

    Mỗi câu lệnh bạn có thể google thêm để biết thêm chi tiết.

No Internet Access on the Compute Nodes

  • Điều này có thể xảy ra trên một vài Compute Node ( hpc ) về vấn đề bảo mật. Bạn không thể downloading dữ liệu, packages. Nếu gặp vấn đề download 1 dữ liệu lớn bằng slurm không được, bạn có thể chỉnh sửa file slurm bằng cách thay đổi sang node khác.

Introducing Slurm

Trên tất cả các hệ thống cluster, người dùng chạy chương trình bởi việc submitting scripts tới Slurm job scheduler. Một Slurm script phải chứa 3 thứ:

  1. Quy định các tài nguyên cho Job

  2. Set enviroment

  3. Chỉ định công việc cần thực hiện dưới lệnh shell

Dưới đây là mẫu Slurm script để chạy code Python sử dụng Conda enviroment.

 #!/bin/bash #SBATCH --job-name=myjob # create a short name for your job #SBATCH --nodes=1 # node count #SBATCH --ntasks=1 # total number of tasks across all nodes #SBATCH --cpus-per-task=1 # cpu-cores per task (>1 if multi-threaded tasks) #SBATCH --mem-per-cpu=2G # memory per cpu-core (4G is default) #SBATCH --time=00:01:00 # total run time limit (HH:MM:SS) #SBATCH --mail-type=begin # send email when job begins #SBATCH --mail-type=end # send email when job ends #SBATCH --mail-user=<YourNetID>@gmail.com module purge module load anaconda3/2020.11 conda activate pytools-env python myscript.py

Dòng đầu tiên của script chỉ định Unix shell được sử dụng. Tiếp theo đó là các dòng với bắt đầu bằng #SBATCH . Script trên yêu cầu 1 Cpu-core và 4 GB memory cho 1 phút run time. Ba dòng tiếp theo chỉ định môi trường cần chạy. Dòng cuối cùng đó là chương trình sẽ chạy những câu việc từ file myscript.py

Nếu Job của bạn bị fails trước khi specified time limit thì nó sẽ bị kill để nhường tài nguyên cho các Job khác chay. bạn nên ước tính chinhs xác thời gian chạy cộng thêm với 20 %. Một job script tên job.slurm sẽ được submit tới Slurm scheduler với câu lệnh sbatch.

 $ sbatch job.slurm

Để check trạng thái của job, sử dụng command sau:

 $ squeue -u <YourNetID>

Để xem thời gian bắt đầu dự kiến của các công việc đang xếp hàng:

 $ squeue -u <YourNetID>

Bình luận

Bài viết tương tự

- vừa được xem lúc

Các chỉ số đánh giá được sử dụng cho bài toán Image Generation: IS, FID, PSNR, SSIM,...

1. Giới thiệu về bài toán Image Generation.

0 1 98

- vừa được xem lúc

Tìm hiểu về kiến trúc Transformer

Giới thiệu. Với sự ra đời của cơ chế attention thì vào năm 2017 paper Attention is all you need đã giới thiệu một kiến trúc mới dành cho các bài toán NLP mà không có sự xuất hiện của các mạng nơ-ron h

0 0 387

- vừa được xem lúc

Sinh tín hiệu hình sine với mô hình GAN

Giới thiệu. Các ứng dụng về GAN ở domain về ảnh thì vô cùng nhiều nhưng trong domain tín hiệu time-series thì chưa có nhiều.

0 0 41

- vừa được xem lúc

Imbalance Problem in Object Detection

1. Giới thiệu.

0 0 37

- vừa được xem lúc

Từ lý thuyết lượng tử đến Quantum Neural Network

Một số kiến thức cần nắm. Mình khuyến khích mọi người trước khi đọc bài này thì nên tìm hiểu Quantum Computing hoặc đọc bài giới thiệu cơ bản về tính toán lượng tử mà mình đã viết để có thể hiểu rõ hơ

0 0 34

- vừa được xem lúc

TensorFlow in 100 Seconds

TensorFlow is a tool for machine learning capable of building deep neural networks with high-level Python code. It provides developer-friendly APIs that help software engineers train, analyze, and dep

0 0 31