๐Ÿ› ๏ธ Engineering/Distributed Training

GPU ํด๋Ÿฌ์Šคํ„ฐ: SuperPOD์™€ Slurm์˜ ๊ฐœ๋…๊ณผ ํ™œ์šฉ๋ฒ•

๋ญ…์ฆค 2025. 7. 3. 20:24
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ GPU ํด๋Ÿฌ์Šคํ„ฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

 

GPU ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ GPU ์„œ๋ฒ„๋ฅผ ๊ณ ์† ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํ“จํŒ… ํ™˜๊ฒฝ์ด๋‹ค. ์ตœ๊ทผ AI ๋ชจ๋ธ๋“ค์€ ๊ทœ๋ชจ๊ฐ€ ์ ์  ์ปค์ง€๊ณ  ๋ณต์žกํ•ด์ง€๊ณ  ์žˆ์–ด, ๋‹จ์ผ GPU๋งŒ์œผ๋กœ๋Š” ํšจ์œจ์ ์ธ ํ•™์Šต์ด ์–ด๋ ค์›Œ์กŒ๋‹ค. ์ด๋•Œ GPU ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์—ฌ๋Ÿฌ GPU์˜ ์ž์›์„ ๋™์‹œ์— ํ™œ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ณ  ํšจ๊ณผ์ ์œผ๋กœ AI ๋ชจ๋ธ์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, OpenAI์˜ GPT-4๋‚˜ Meta์˜ LLaMA์™€ ๊ฐ™์€ ์ดˆ๊ฑฐ๋Œ€ ๋ชจ๋ธ๋“ค์€ ์ˆ˜๋ฐฑ์—์„œ ์ˆ˜์ฒœ ๊ฐœ์˜ GPU๋ฅผ ๋™์‹œ์— ํ™œ์šฉํ•˜์—ฌ ํ•™์Šต๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ดˆ๊ฑฐ๋Œ€ ๋ชจ๋ธ ํ•™์Šต ํ™˜๊ฒฝ์ด ๋ฐ”๋กœ GPU ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์ด๋‹ค.

 

๐Ÿ“Œ NVIDIA SuperPOD๋ž€?

 

NVIDIA SuperPOD๋Š” NVIDIA๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ดˆ๊ณ ์„ฑ๋Šฅ GPU ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ GPU ์„œ๋ฒ„ ์—ฌ๋Ÿฌ ๋Œ€๋ฅผ ๋‹จ์ˆœํžˆ ๋ฌถ์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ณ ์† ํ†ต์‹ ์„ ์œ„ํ•œ NVLink์™€ InfiniBand์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋„คํŠธ์›Œํฌ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ GPU ๊ฐ„์˜ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

ํŠนํžˆ SuperPOD๋Š” ๋Œ€๊ทœ๋ชจ AI ํ•™์Šต์— ์ตœ์ ํ™”๋œ ํ™˜๊ฒฝ์œผ๋กœ, NVIDIA A100 ๋˜๋Š” ์ตœ์‹ ์˜ H100 GPU ์ˆ˜๋ฐฑ ๋Œ€๋ฅผ ๋™์‹œ์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ GPU ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์†๋„๊ฐ€ ๋งค์šฐ ๋นจ๋ผ ๋ชจ๋ธ ํ•™์Šต์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋ฉฐ, ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ง€์›ํ•œ๋‹ค. NVIDIA SuperPOD๋Š” ์ด๋ฏธ OpenAI์˜ GPT ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ์ดˆ๊ฑฐ๋Œ€ AI ๋ชจ๋ธ์˜ ํ•™์Šต์— ํ™œ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, AI ๋ชจ๋ธ ๊ฐœ๋ฐœ ๋ฐ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ์ธํ”„๋ผ๋กœ ์ž๋ฆฌ์žก์•˜๋‹ค.

 

- NVLink: NVIDIA๊ฐ€ ๊ฐœ๋ฐœํ•œ ๊ณ ์† GPU ๊ฐ„ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๊ธฐ์ˆ ๋กœ, GPU ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ†ตํ•ฉํ•˜์—ฌ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํฌ๊ฒŒ ์ค„์—ฌ์ค€๋‹ค. 
- InfiniBand: ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋‚ด ๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ…(HPC) ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉํ•˜๋Š” ์ดˆ๊ณ ์† ๋„คํŠธ์›Œํฌ ๊ธฐ์ˆ ๋กœ, ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ๋†’์€ ๋Œ€์—ญํญ์„ ์ œ๊ณตํ•œ๋‹ค.

 

๐Ÿ“Œ Slurm์ด๋ž€?

 

Slurm(Simple Linux Utility for Resource Management)์€ ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ์ž์› ๊ด€๋ฆฌ ๋ฐ ์ž‘์—… ์Šค์ผ€์ค„๋ง ์‹œ์Šคํ…œ์ด๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์—ฐ๊ตฌ์ž๋‚˜ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋™์‹œ์— ๋ชจ๋ธ ํ•™์Šต์„ ์š”์ฒญํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ GPU์™€ CPU ๋“ฑ์˜ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๋ถ„๋ฐฐํ•˜์—ฌ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด, Slurm์€ GPU ํด๋Ÿฌ์Šคํ„ฐ์—์„œ '๊ตํ†ต ๊ฒฝ์ฐฐ'๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์ถœํ•œ ์ž‘์—…(Job)์„ ๋ฐ›์•„์„œ ์–ธ์ œ ์–ด๋–ค ๋…ธ๋“œ์—์„œ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ณ , ์ž์›์„ ์ ์ ˆํžˆ ๋ฐฐ๋ถ„ํ•ด ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

Slurm์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด?

Slurm์„ ์‚ฌ์šฉํ•ด ์ž‘์—…(์•„๋ž˜ ์ฐธ๊ณ )์„ ์ œ์ถœํ•˜๋ ค๋ฉด, ๋ฐ˜๋“œ์‹œ ๋ฏธ๋ฆฌ GPU ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ตฌ์ถ•๋œ ์ƒํƒœ์—ฌ์•ผ ํ•œ๋‹ค. ์ฆ‰ ๋ฌผ๋ฆฌ์ ์œผ๋กœ GPU ์„œ๋ฒ„(๋…ธ๋“œ)๋“ค์ด ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , Slurm์ด ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ์„ค์ •๋œ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค.

AWS EC2๋ฅผ ๋‹จ์ˆœํžˆ ์—ฌ๋Ÿฌ ๊ฐœ ๋„์šฐ๊ณ  SSH๋กœ ์ ‘์†ํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค. Slurm์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด

  1. ์—ฌ๋Ÿฌ GPU ์„œ๋ฒ„(๋…ธ๋“œ)๊ฐ€ ๋ฌผ๋ฆฌ์ ·๋…ผ๋ฆฌ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด๋ค„์•ผ ํ•œ๋‹ค.
    • ๋ณดํ†ต ๊ฐ™์€ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ๋ž™ ๋‚ด์—์„œ InfiniBand ๊ฐ™์€ ๊ณ ์† ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ
  2. ๋ชจ๋“  ๋…ธ๋“œ์— Slurm ๋ฐ๋ชฌ(slurmd)์ด ์„ค์น˜๋˜์–ด Slurm ์ปจํŠธ๋กค๋Ÿฌ(slurmctld)์™€ ํ†ต์‹ ํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  3. ๋™์ผํ•œ ํŒŒ์ผ์‹œ์Šคํ…œ(์˜ˆ: NFS)์ด ๋งˆ์šดํŠธ๋˜์–ด ์žˆ์–ด ์ž‘์—… ์Šคํฌ๋ฆฝํŠธ์™€ ๋ฐ์ดํ„ฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ณต์œ  ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ Slurm์„ ์‚ฌ์šฉํ•ด sbatch๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ด๋Ÿฐ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ด๋ฏธ ์ค€๋น„๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” Slurm์ด ์ž˜ ๊ตฌ์ถ•๋œ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์— SSH๋กœ ์ ‘์†ํ•ด sbatch๋ฅผ ํ†ตํ•ด ์ž‘์—…๋งŒ ์˜ฌ๋ฆฌ๋ฉด ๋œ๋‹ค.

 

์ด์™€ ๋Œ€๋น„๋˜๋Š” ์˜ˆ๋กœ, ๋‹จ์ˆœํžˆ AWS EC2 ์—ฌ๋Ÿฌ ๋Œ€๋ฅผ ๋„์›Œ์„œ python train.py๋ฅผ ๋”ฐ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋…ธ๋“œ๋ผ๋ฆฌ ์ž๋™์œผ๋กœ ํ˜‘์—…ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋•Œ๋Š” ์ˆ˜๋™์œผ๋กœ IP๋ฅผ ์ง€์ •ํ•ด torch.distributed.launch ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋Œ๋ ค์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ฉด Slurm์€ ์ด๋Ÿฐ ๋ถ„์‚ฐ ํ•™์Šต ํ™˜๊ฒฝ(IP, ํฌํŠธ, ํ”„๋กœ์„ธ์Šค ์ˆ˜)์„ ์ž๋™์œผ๋กœ ์„ธํŒ…ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ํŽธ๋ฆฌํ•˜๋‹ค. ์ฆ‰ Slurm์€ ๋‹จ์ˆœํ•œ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ด๋ฏธ ๊ตฌ์ถ•๋œ GPU ํด๋Ÿฌ์Šคํ„ฐ ์œ„์—์„œ ์ž์›์„ ํ• ๋‹นํ•˜๊ณ  ๋ถ„์‚ฐ ํ•™์Šต์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ํ•ต์‹ฌ ๋„๊ตฌ์ด๋‹ค.

 

Slurm์œผ๋กœ ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋‹จ๊ณ„

 

1๏ธโƒฃ Job ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ

์‚ฌ์šฉ์ž๋Š” ๋จผ์ € Slurm์— ์ œ์ถœํ•  ์ž‘์—…์„ bash ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ์—๋Š” ๋ช‡ ๊ฐœ์˜ GPU๋ฅผ ์‚ฌ์šฉํ• ์ง€, ๋ช‡ ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ• ์ง€, ์ตœ๋Œ€ ์–ผ๋งˆ ๋™์•ˆ ์‹คํ–‰ํ• ์ง€ ๋“ฑ์„ ์„ค์ •ํ•œ๋‹ค.

 

#!/bin/bash
#SBATCH --job-name=large_model_train  # ์ž‘์—… ์ด๋ฆ„
#SBATCH --nodes=2                     # ์‚ฌ์šฉํ•  ๋…ธ๋“œ(์„œ๋ฒ„) ๊ฐœ์ˆ˜
#SBATCH --gres=gpu:4                  # ๋…ธ๋“œ๋‹น GPU ๊ฐœ์ˆ˜ (์ด 8 GPU)
#SBATCH --ntasks-per-node=4           # ๋…ธ๋“œ๋‹น ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค ์ˆ˜
#SBATCH --time=24:00:00               # ์ตœ๋Œ€ ์‹คํ–‰ ์‹œ๊ฐ„ (24์‹œ๊ฐ„)
#SBATCH --partition=gpu               # ์‚ฌ์šฉํ•  ํŒŒํ‹ฐ์…˜

module load cuda/12.1
module load python/3.11

srun python train_large_model.py

์œ„ ์˜ˆ์‹œ๋Š” "์ด 8๊ฐœ์˜ GPU๋ฅผ ๋‘ ์„œ๋ฒ„์— ๊ฑธ์ณ ์‚ฌ์šฉํ•ด ํ•˜๋ฃจ ๋™์•ˆ ๋ชจ๋ธ์„ ํ•™์Šต์‹œ์ผœ๋ผ"๋Š” ์˜๋ฏธ๋‹ค.

 

2๏ธโƒฃ ์ž‘์—… ์ œ์ถœํ•˜๊ธฐ

sbatch train_job.sh

์ž‘์„ฑํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ Slurm์— ์ œ์ถœํ•œ๋‹ค.

Slurm์€ ์ด ์š”์ฒญ์„ ๋ฐ›๊ณ  ์ ์ ˆํ•œ ์‹œ์ ๊ณผ ๋…ธ๋“œ๋ฅผ ๊ฒฐ์ •ํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค.

 

3๏ธโƒฃ ์ž‘์—… ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ

squeue -u username  # ๋ณธ์ธ ์ž‘์—… ์กฐํšŒ

์ œ์ถœํ•œ ์ž‘์—…์ด ํ˜„์žฌ ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜๋Š” ํŠน์ • ์ž‘์—… ID์˜ ์ƒ์„ธ ๋‚ด์—ญ์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด

scontrol show job JOB_ID

 

4๏ธโƒฃ ์ž‘์—… ์ทจ์†Œํ•˜๊ธฐ

scancel JOB_ID

์ž˜๋ชป ์ œ์ถœํ–ˆ๊ฑฐ๋‚˜ ์ค‘๋‹จํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ทจ์†Œํ•œ๋‹ค.

 

5๏ธโƒฃ ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ธฐ

Slurm์€ ๋ณดํ†ต slurm-JOBID.out ํŒŒ์ผ์„ ์ž๋™ ์ƒ์„ฑํ•ด ํ‘œ์ค€ ์ถœ๋ ฅ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธด๋‹ค. ์—ฌ๊ธฐ์„œ ํ•™์Šต ์ค‘ ์ถœ๋ ฅ๋œ ๋กœ๊ทธ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Slurm์„ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•Œ์•„์•ผ ํ•  ๊ฒƒ

  • module load๋ฅผ ํ†ตํ•œ CUDA, Python ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•
  • srun์„ ์ด์šฉํ•œ ๋ถ„์‚ฐ ํ•™์Šต ์‹คํ–‰ ๋ฐฉ์‹
  • ntasks, nodes, gres๋ฅผ ์กฐํ•ฉํ•ด GPU/๋…ธ๋“œ ๋ณ‘๋ ฌ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • --dependency ์˜ต์…˜ ๋“ฑ์„ ํ™œ์šฉํ•ด ์„ ํ–‰ ์ž‘์—…์ด ๋๋‚œ ๋’ค ํ›„์† ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ
  • NCCL, torch.distributed.launch์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ Slurm์˜ ์—ฐ๋™ ๋ฐฉ์‹

์ด์ฒ˜๋Ÿผ Slurm์€ ๋‹จ์ˆœํžˆ ์ž‘์—… ์ œ์ถœ๋งŒ ํ•˜๋Š” ์‹œ์Šคํ…œ์ด ์•„๋‹ˆ๋ผ, ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ํ•™์Šต์—์„œ ์ž์›์„ ์ตœ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ์ˆ™์ง€ํ•ด์•ผ ํ•  ํ•ต์‹ฌ ๋„๊ตฌ์ด๋‹ค.

 

๋ถ„์‚ฐํ•™์Šต ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ„๋‹จ ์ •๋ฆฌ

๋Œ€๊ทœ๋ชจ GPU ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Slurm์„ ํ†ตํ•ด ์ž์›์„ ํ• ๋‹น๋ฐ›์€ ๋’ค, ์‹ค์ œ๋กœ ๋ชจ๋ธ์„ ๋ถ„์‚ฐ ํ•™์Šต์‹œํ‚ค๋Š” ๋ฐ๋Š” FSDP, Deepspeed, Pipeline Parallelism ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • FSDP๋Š” PyTorch์—์„œ ์ œ๊ณตํ•˜๋Š” Fully Sharded Data Parallel ๋ฐฉ์‹์œผ๋กœ, ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ GPU๋“ค์— ๋‚˜๋ˆ„์–ด ์˜ฌ๋ ค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค.
  • Deepspeed๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ๋งŒ๋“  ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ZeRO, Offload, Pipeline ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ์ดˆ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ๋„ ํšจ์œจ์ ์œผ๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  • Pipeline Parallelism์€ ๋ชจ๋ธ์˜ layer๋ฅผ ์—ฌ๋Ÿฌ GPU์— ํŒŒ์ดํ”„๋ผ์ธ ํ˜•ํƒœ๋กœ ๋ถ„ํ• ํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ํ•™์Šตํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ด๋“ค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ๋ชจ๋ธ๊ณผ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ ์ ˆํžˆ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ์ ์šฉํ•œ๋‹ค. ์ฆ‰ Slurm์ด GPU ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ž์›์„ ํ• ๋‹นํ•ด ์ฃผ๋Š” '๊ตํ†ต ์ •๋ฆฌ'๋ฅผ ํ•œ๋‹ค๋ฉด, FSDP, Deepspeed, Pipeline Parallelism์€ ๊ทธ ์ž์› ์œ„์—์„œ ์‹ค์ œ๋กœ ๋ชจ๋ธ์„ ๋ถ„์‚ฐ ํ•™์Šต์‹œํ‚ค๋Š” '์‹คํ–‰ ์—”์ง„'์ด๋‹ค.

๋ฐ˜์‘ํ˜•