wony617
Add pr duplication check
159b6fa

A newer version of the Gradio SDK is available: 5.42.0

Upgrade

가속기 선택 [[accelerator-selection]]

λΆ„μ‚° ν•™μŠ΅ μ€‘μ—λŠ” μ‚¬μš©ν•  가속기(CUDA, XPU, MPS, HPU λ“±)의 μˆ˜μ™€ μˆœμ„œλ₯Ό μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ„œλ‘œ λ‹€λ₯Έ μ»΄ν“¨νŒ… μ„±λŠ₯을 κ°€μ§„ 가속기가 μžˆμ„ λ•Œ 더 λΉ λ₯Έ 가속기λ₯Ό λ¨Όμ € μ‚¬μš©ν•˜κ³  싢은 κ²½μš°μ— μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” μ‚¬μš© κ°€λŠ₯ν•œ κ°€μ†κΈ°μ˜ μΌλΆ€λ§Œ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 선택 과정은 DistributedDataParallelκ³Ό DataParallel λͺ¨λ‘μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€. Accelerateλ‚˜ DeepSpeed integrationλŠ” ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 κ°€μ΄λ“œλŠ” μ‚¬μš©ν•  κ°€μ†κΈ°μ˜ μˆ˜μ™€ μ‚¬μš© μˆœμ„œλ₯Ό μ„ νƒν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

가속기 수 [[number-of-accelerators]]

예λ₯Ό λ“€μ–΄, 4개의 가속기가 있고 처음 2개만 μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ μ•„λž˜ λͺ…령을 μ‹€ν–‰ν•˜μ„Έμš”.

--nproc_per_nodeλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©ν•  가속기 수λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

torchrun --nproc_per_node=2  trainer-program.py ...

--num_processesλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©ν•  가속기 수λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

accelerate launch --num_processes 2 trainer-program.py ...

--num_gpusλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©ν•  GPU 수λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

deepspeed --num_gpus 2 trainer-program.py ...

가속기 μˆœμ„œ [[order-of-accelerators]]

μ‚¬μš©ν•  νŠΉμ • 가속기와 κ·Έ μˆœμ„œλ₯Ό μ„ νƒν•˜λ €λ©΄ ν•˜λ“œμ›¨μ–΄μ— μ ν•©ν•œ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ„Έμš”. μ΄λŠ” μ’…μ’… 각 싀행에 λŒ€ν•΄ λͺ…λ Ήμ€„μ—μ„œ μ„€μ •λ˜μ§€λ§Œ, ~/.bashrcλ‚˜ λ‹€λ₯Έ μ‹œμž‘ ꡬ성 νŒŒμΌμ— μΆ”κ°€ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, 4개의 가속기(0, 1, 2, 3)κ°€ 있고 가속기 0κ³Ό 2만 μ‹€ν–‰ν•˜κ³  μ‹Άλ‹€λ©΄:

CUDA_VISIBLE_DEVICES=0,2 torchrun trainer-program.py ...

GPU 0κ³Ό 2만 PyTorchμ—μ„œ "보이며" 각각 cuda:0κ³Ό cuda:1둜 λ§€ν•‘λ©λ‹ˆλ‹€.
μˆœμ„œλ₯Ό λ°”κΎΈλ €λ©΄ (GPU 2λ₯Ό cuda:0으둜, GPU 0을 cuda:1둜 μ‚¬μš©):

CUDA_VISIBLE_DEVICES=2,0 torchrun trainer-program.py ...

GPU 없이 μ‹€ν–‰ν•˜λ €λ©΄:

CUDA_VISIBLE_DEVICES= python trainer-program.py ...

CUDA_DEVICE_ORDERλ₯Ό μ‚¬μš©ν•˜μ—¬ CUDA μž₯치의 μˆœμ„œλ₯Ό μ œμ–΄ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€:

  • PCIe λ²„μŠ€ ID μˆœμ„œ (nvidia-smi와 일치):

    
    

$hf_i18n_placeholder21export CUDA_DEVICE_ORDER=PCI_BUS_ID ```

  • μ»΄ν“¨νŒ… μ„±λŠ₯ μˆœμ„œ (κ°€μž₯ λΉ λ₯Έ 것뢀터):

    export CUDA_DEVICE_ORDER=FASTEST_FIRST
    
ZE_AFFINITY_MASK=0,2 torchrun trainer-program.py ...

XPU 0κ³Ό 2만 PyTorchμ—μ„œ "보이며" 각각 xpu:0κ³Ό xpu:1둜 λ§€ν•‘λ©λ‹ˆλ‹€.
μˆœμ„œλ₯Ό λ°”κΎΈλ €λ©΄ (XPU 2λ₯Ό xpu:0으둜, XPU 0을 xpu:1둜 μ‚¬μš©):

ZE_AFFINITY_MASK=2,0 torchrun trainer-program.py ...

λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ Intel XPU의 μˆœμ„œλ₯Ό μ œμ–΄ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€:

export ZE_ENABLE_PCI_ID_DEVICE_ORDER=1

Intel XPUμ—μ„œμ˜ μž₯치 μ—΄κ±° 및 정렬에 λŒ€ν•œ μžμ„Έν•œ μ •λ³΄λŠ” Level Zero λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

ν™˜κ²½ λ³€μˆ˜λŠ” λͺ…령쀄에 μΆ”κ°€ν•˜λŠ” λŒ€μ‹  내보낼 수 μžˆμŠ΅λ‹ˆλ‹€. ν™˜κ²½ λ³€μˆ˜κ°€ μ–΄λ–»κ²Œ μ„€μ •λ˜μ—ˆλŠ”μ§€ μžŠμ–΄λ²„λ¦¬κ³  잘λͺ»λœ 가속기λ₯Ό μ‚¬μš©ν•˜κ²Œ 될 수 μžˆμ–΄ ν˜Όλž€μ„ μ•ΌκΈ°ν•  수 μžˆμœΌλ―€λ‘œ ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹ , 같은 λͺ…λ Ήμ€„μ—μ„œ νŠΉμ • ν›ˆλ ¨ 싀행을 μœ„ν•΄ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜λŠ” 것이 일반적인 κ΄€λ‘€μž…λ‹ˆλ‹€. ```