๋“œ๋””์–ด ๊ฐ€๋Šฅํ•ด์ง„ ๋ผ๋ฐ์˜จ GPU AI ์—ฐ์‚ฐ

์ตœ๊ทผ AMD์—์„œ ROCm 7.2๋ฅผ ๋ฐœํ‘œํ•˜๋ฉด์„œ Windows ์ง€์›์ด ๊ณต์‹์ ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

๊ทธ๋™์•ˆ PyTorch GPU ์—ฐ์‚ฐ์€ ๋Œ€๋ถ€๋ถ„ NVIDIA CUDA ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜์–ด ์™”์ง€๋งŒ, ์ด์ œ AMD GPU์—์„œ๋„ ROCm ๊ธฐ๋ฐ˜ PyTorch๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ์ ์  ํ˜„์‹คํ™”๋˜๊ณ  ์žˆ๋‹ค.

ROCm(Radeon Open Compute)์€ AMD์—์„œ ์ œ๊ณตํ•˜๋Š” GPU ์ปดํ“จํŒ… ํ”Œ๋žซํผ์œผ๋กœ, NVIDIA์˜ CUDA์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

ํŠนํžˆ ํฅ๋ฏธ๋กœ์šด ์ ์€ ๊ณต์‹ ์ง€์› ๋ชฉ๋ก์—๋Š” ์—†์ง€๋งŒ ๋™์ผํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ณ„์—ด์ธ RX 7600์—์„œ๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค๋Š” ์ ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Windows + AMD GPU ํ™˜๊ฒฝ์—์„œ PyTorch GPU ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ

์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”:

  • ์šด์˜์ฒด์ œ: Windows 10/11 (64-bit)
  • GPU: AMD Radeon RX 7000 ์‹œ๋ฆฌ์ฆˆ (RDNA 3 ์•„ํ‚คํ…์ฒ˜)
  • ๋“œ๋ผ์ด๋ฒ„: ์ตœ์‹  AMD Adrenalin ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ ๊ถŒ์žฅ
  • Python: 3.12.x (ํ•„์ˆ˜ – ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ์ค‘์š”)
  • ๋””์Šคํฌ ๊ณต๊ฐ„: ์ตœ์†Œ 10GB ์—ฌ์œ  ๊ณต๊ฐ„

ROCm Windows ์ง€์› GPU

ROCm 7.2 ๊ธฐ์ค€ Windows์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” GPU๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ArchitectureGPU
gfx1201RX 9070
gfx1200RX 9070 XT
gfx1100RX 7900 XTX
gfx1101RX 7700
Radeon PRO W7900

๊ณต์‹ ๋ฌธ์„œ: AMD ROCm Windows Compatibility

ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ, RX 7600 (gfx1102)์—์„œ๋„ ์ •์ƒ์ ์œผ๋กœ PyTorch GPU ์—ฐ์‚ฐ์ด ๋™์ž‘ํ–ˆ๋‹ค.

๋ชฉํ‘œ

์ตœ์ข…์ ์œผ๋กœ ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋‹ค.

python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

์ •์ƒ ์ถœ๋ ฅ ์˜ˆ:

True
AMD Radeon RX 7600

์ „์ฒด ์„ค์น˜ ๊ตฌ์กฐ

Windows์—์„œ ROCm PyTorch ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ๋•Œ์˜ ์ „์ฒด ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ROCm Runtime
      โ†“
ROCm Python SDK
      โ†“
PyTorch ROCm wheel
      โ†“
ML / AI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Whisper ๋“ฑ)

์„ค์น˜ ์ˆœ์„œ: ROCm Runtime โ†’ ROCm Python SDK โ†’ PyTorch

0. ROCm Runtime ์„ค์น˜ (์‚ฌ์ „ ์ค€๋น„)

PyTorch๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ๋จผ์ € ROCm Runtime์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. AMD ROCm ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€ ๋ฐฉ๋ฌธ
  2. ROCm 7.2 Windows Installer ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‹คํ–‰
  3. ์„ค์น˜ ์™„๋ฃŒ ํ›„ ์‹œ์Šคํ…œ ์žฌ๋ถ€ํŒ…

1. ROCm GPU ์ธ์‹ ํ™•์ธ

ROCm ์„ค์น˜ ํ›„ GPU๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ธ์‹๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

hipinfo

์ถœ๋ ฅ ์˜ˆ:

Name: AMD Radeon RX 7600
gcnArchName: gfx1102

GPU ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ •์ƒ์ด๋‹ค.

์ฐธ๊ณ : Windows ROCm์—์„œ๋Š” rocminfo ๋Œ€์‹  hipinfo๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

2. Python ๋ฒ„์ „ ํ™•์ธ (๋งค์šฐ ์ค‘์š”!)

PyTorch ROCm wheel์€ Python ๋ฒ„์ „์— ๋งž๊ฒŒ ๋นŒ๋“œ๋˜์–ด ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด wheel ํŒŒ์ผ ์ด๋ฆ„์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด:

torch-2.9.1+rocmsdk20260116-cp312-cp312-win_amd64.whl

์—ฌ๊ธฐ์„œ cp312 = Python 3.12

์ฆ‰, Python 3.12 ํ™˜๊ฒฝ์—์„œ๋งŒ ์„ค์น˜ ๊ฐ€๋Šฅํ•˜๋‹ค.

Python ๋ฒ„์ „ ํ™•์ธ:

python --version

์˜ˆ:

Python 3.12.8

โš ๏ธ ์ฃผ์˜: Python 3.13 ๋“ฑ ๋‹ค๋ฅธ ๋ฒ„์ „์ด๋ฉด wheel ์„ค์น˜๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

3. ๊ฐ€์ƒํ™˜๊ฒฝ (venv) ์ƒ์„ฑ

ํ”„๋กœ์ ํŠธ ํด๋” ์ƒ์„ฑ:

mkdir C:\Dev\ml
cd C:\Dev\ml

venv ์ƒ์„ฑ:

python -m venv venv

venv ํ™œ์„ฑํ™”:

CMD:

venv\Scripts\activate

PowerShell:

.\venv\Scripts\Activate.ps1

4. ROCm Python SDK ์„ค์น˜

PyTorch ROCm wheel์€ ROCm Python SDK ์˜์กด์„ฑ์ด ์žˆ๋‹ค.

PowerShell์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•œ๋‹ค.

pip install --no-cache-dir `
 https://repo.radeon.com/rocm/windows/rocm-rel-7.2/rocm_sdk_core-7.2.0.dev0-py3-none-win_amd64.whl `
 https://repo.radeon.com/rocm/windows/rocm-rel-7.2/rocm_sdk_devel-7.2.0.dev0-py3-none-win_amd64.whl `
 https://repo.radeon.com/rocm/windows/rocm-rel-7.2/rocm_sdk_libraries_custom-7.2.0.dev0-py3-none-win_amd64.whl `
 https://repo.radeon.com/rocm/windows/rocm-rel-7.2/rocm-7.2.0.dev0.tar.gz

์ฐธ๊ณ : CMD์—์„œ๋Š” ํ•œ ์ค„๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

5. PyTorch ROCm Wheel ์„ค์น˜

PyTorch ROCm wheel์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

๋ฐฉ๋ฒ• 1: URL๋กœ ์ง์ ‘ ์„ค์น˜ (๊ถŒ์žฅ)

AMD ๊ณต์‹ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

CMD Prompt:

pip install --no-cache-dir ^
    https://repo.radeon.com/rocm/windows/rocm-rel-7.2/torch-2.9.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl ^
    https://repo.radeon.com/rocm/windows/rocm-rel-7.2/torchaudio-2.9.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl ^
    https://repo.radeon.com/rocm/windows/rocm-rel-7.2/torchvision-0.24.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl

PowerShell:

pip install --no-cache-dir `
    https://repo.radeon.com/rocm/windows/rocm-rel-7.2/torch-2.9.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl `
    https://repo.radeon.com/rocm/windows/rocm-rel-7.2/torchaudio-2.9.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl `
    https://repo.radeon.com/rocm/windows/rocm-rel-7.2/torchvision-0.24.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl

์ฐธ๊ณ : ์„ค์น˜์— ๋ช‡ ๋ถ„ ์ •๋„ ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 2: Wheel ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํ›„ ๋กœ์ปฌ ์„ค์น˜

๋„คํŠธ์›Œํฌ๊ฐ€ ๋ถˆ์•ˆ์ •ํ•˜๊ฑฐ๋‚˜ ์˜คํ”„๋ผ์ธ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

1. Wheel ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” PowerShell์—์„œ ๋‹ค์Œ ํŒŒ์ผ๋“ค์„ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค:

# PowerShell์—์„œ ๋‹ค์šด๋กœ๋“œ
$baseUrl = "https://repo.radeon.com/rocm/windows/rocm-rel-7.2"

Invoke-WebRequest -Uri "$baseUrl/torch-2.9.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl" `
    -OutFile "torch-2.9.1+rocmsdk20260116-cp312-cp312-win_amd64.whl"

Invoke-WebRequest -Uri "$baseUrl/torchaudio-2.9.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl" `
    -OutFile "torchaudio-2.9.1+rocmsdk20260116-cp312-cp312-win_amd64.whl"

Invoke-WebRequest -Uri "$baseUrl/torchvision-0.24.1%2Brocmsdk20260116-cp312-cp312-win_amd64.whl" `
    -OutFile "torchvision-0.24.1+rocmsdk20260116-cp312-cp312-win_amd64.whl"

๋˜๋Š” ์ง์ ‘ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์šด๋กœ๋“œ:

2. ๋‹ค์šด๋กœ๋“œํ•œ Wheel ํŒŒ์ผ ์„ค์น˜

๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰:

pip install torch-2.9.1+rocmsdk20260116-cp312-cp312-win_amd64.whl
pip install torchaudio-2.9.1+rocmsdk20260116-cp312-cp312-win_amd64.whl
pip install torchvision-0.24.1+rocmsdk20260116-cp312-cp312-win_amd64.whl

๐Ÿ’ก Tip: ๋กœ์ปฌ wheel ํŒŒ์ผ ์„ค์น˜๊ฐ€ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋” ์•ˆ์ •์ ์ด๋ฉฐ, ์žฌ์„ค์น˜ ์‹œ์—๋„ ๋น ๋ฅด๋‹ค.

๊ณต์‹ ๋ฌธ์„œ: AMD ROCm PyTorch Installation Guide

6. GPU ๋™์ž‘ ํ™•์ธ

AMD GPU PyTorch Windows ์„ค์น˜ ํ™•์ธ - RX 7600 GPU ์ธ์‹ ๋ฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

GPU ์‚ฌ์šฉ ์—ฌ๋ถ€ ํ™•์ธ:

python -c "import torch; print(torch.cuda.is_available())"

์ถœ๋ ฅ ์˜ˆ:

True

GPU ์ด๋ฆ„ ํ™•์ธ:

python -c "import torch; print(torch.cuda.get_device_name(0))"

์ถœ๋ ฅ:

AMD Radeon RX 7600

7. GPU ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

๊ฐ„๋‹จํ•œ GPU ์—ฐ์‚ฐ ํ…Œ์ŠคํŠธ:

python -c "import torch, time; d='cuda'; x=torch.randn(4096,4096,device=d); torch.cuda.synchronize(); t=time.time(); y=x@x; torch.cuda.synchronize(); print('matmul sec:', time.time()-t, 'device:', y.device)"

์ถœ๋ ฅ ์˜ˆ:

matmul sec: 0.118 device: cuda:0

GPU์—์„œ ์ •์ƒ์ ์œผ๋กœ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

8. Whisper GPU ํ…Œ์ŠคํŠธ

GPU ๊ธฐ๋ฐ˜ STT ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด Whisper๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

pip install openai-whisper

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ:

import whisper
import torch

print("GPU available:", torch.cuda.is_available())
print("GPU device:", torch.cuda.get_device_name(0))

model = whisper.load_model("base", device="cuda")
result = model.transcribe("test.wav")

print(result["text"])

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

1. ModuleNotFoundError

ModuleNotFoundError: No module named 'whisper'

์›์ธ: venv๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ Python์œผ๋กœ ์‹คํ–‰

ํ•ด๊ฒฐ:

venv\Scripts\python test.py

2. venv ์ด๋™ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

venv ํด๋”๋ฅผ ์ด๋™ํ•˜๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Fatal error in launcher
Unable to create process

์›์ธ: venv ๋‚ด๋ถ€ ์Šคํฌ๋ฆฝํŠธ์— ์ ˆ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์Œ

ํ•ด๊ฒฐ: venv๋ฅผ ์ƒˆ ์œ„์น˜์—์„œ ๋‹ค์‹œ ์ƒ์„ฑ

3. Python ๋ฒ„์ „ ๋ถˆ์ผ์น˜

ERROR: torch-2.9.1+rocmsdk20260116-cp312-cp312-win_amd64.whl is not a supported wheel on this platform.

์›์ธ: Python ๋ฒ„์ „์ด 3.12๊ฐ€ ์•„๋‹˜

ํ•ด๊ฒฐ: Python 3.12 ์„ค์น˜ ํ›„ ์ƒˆ venv ์ƒ์„ฑ

์„ฑ๋Šฅ ์ฐธ๊ณ ์‚ฌํ•ญ

AMD ROCm์€ ์•„์ง NVIDIA CUDA๋งŒํผ ์ตœ์ ํ™”๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๊ฐ€์„ฑ๋น„: ๊ฐ™์€ ๊ฐ€๊ฒฉ๋Œ€ NVIDIA GPU ๋Œ€๋น„ ๋” ๋งŽ์€ VRAM
  • ์˜คํ”ˆ์†Œ์Šค: ROCm ์Šคํƒ ์ „์ฒด๊ฐ€ ์˜คํ”ˆ์†Œ์Šค
  • ๋ฐœ์ „ ๊ฐ€๋Šฅ์„ฑ: ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ AMD์˜ ์ง€์†์ ์ธ ๊ฐœ์„ 

๋งˆ๋ฌด๋ฆฌ

Windows์—์„œ๋„ ROCm์„ ์‚ฌ์šฉํ•˜๋ฉด AMD GPU์—์„œ PyTorch GPU ๊ฐ€์†์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ๋กœ์ปฌ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค:

  • ๋จธ์‹ ๋Ÿฌ๋‹ ์‹คํ—˜
  • Whisper STT
  • Stable Diffusion
  • LLM inference

์ด์ œ ๋“œ๋””์–ด ๋ผ๋ฐ์˜จ GPU๋„ AI ์ž‘์—…์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด Windows ์—์„œ AMD GPU ์—์„œ๋„ ํ˜„์‹ค์ ์œผ๋กœ ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ก  ์•„์ง๊นŒ์ง€ ์ž๋ฃŒ๊ฐ€ ์ ๊ณ  ์ œ์•ฝ์‚ฌํ•ญ์ด ๋งŽ์ง€๋งŒ, ๋ผ๋ฐ์˜จ GPU๊ฐ€ ๊ฐ€์ง„ ๊ฐ€์„ฑ๋น„์™€ ๋Œ€์šฉ๋Ÿ‰ VRAM์„ ํ™œ์šฉํ•œ AI ํ™˜๊ฒฝ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์—ฌ์ค€ ์‹œ์ž‘์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

ํ™˜๊ฒฝ ๊ตฌ์ถ•์ด ๋‹ค์†Œ ๊นŒ๋‹ค๋กญ์ง€๋งŒ ํ•œ ๋ฒˆ ์„ค์ •ํ•ด๋‘๋ฉด ๊ฐ•๋ ฅํ•œ ๋กœ์ปฌ AI ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.