docs: add AMD GPU setup guide for PyTorch ROCm
Documenta cómo configurar PyTorch con soporte ROCm para RX 6800 XT. Incluye instalación, tests de verificación y troubleshooting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
189
amd.md
Normal file
189
amd.md
Normal file
@@ -0,0 +1,189 @@
|
||||
# Configuración GPU AMD RX 6800 XT para PyTorch
|
||||
|
||||
## Resumen
|
||||
|
||||
Esta guía documenta cómo configurar PyTorch con soporte ROCm para usar la GPU AMD RX 6800 XT (16GB VRAM) en lugar de NVIDIA CUDA.
|
||||
|
||||
## Hardware
|
||||
|
||||
- **GPU**: AMD Radeon RX 6800 XT
|
||||
- **VRAM**: 16 GB
|
||||
- **ROCm**: 7.1 (instalado a nivel sistema)
|
||||
- **Sistema**: Arch Linux
|
||||
|
||||
## Problema Inicial
|
||||
|
||||
PyTorch instalado con `pip install torch` no detecta la GPU AMD:
|
||||
|
||||
```
|
||||
PyTorch version: 2.10.0+cu128
|
||||
torch.cuda.is_available(): False
|
||||
torch.version.hip: None
|
||||
```
|
||||
|
||||
## Solución
|
||||
|
||||
### 1. Verificar ROCm del sistema
|
||||
|
||||
```bash
|
||||
rocm-smi --version
|
||||
# ROCM-SMI version: 4.0.0+unknown
|
||||
# ROCM-SMI-LIB version: 7.8.0
|
||||
```
|
||||
|
||||
### 2. Instalar PyTorch con soporte ROCm
|
||||
|
||||
La URL correcta para PyTorch con ROCm es `rocm7.1` (no rocm5.7 ni rocm6.x):
|
||||
|
||||
```bash
|
||||
# Activar entorno virtual
|
||||
source venv/bin/activate
|
||||
|
||||
# Desinstalar PyTorch anterior (si existe)
|
||||
pip uninstall -y torch torchvision torchaudio
|
||||
|
||||
# Instalar con ROCm 7.1
|
||||
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1
|
||||
```
|
||||
|
||||
**Nota**: Las versiones disponibles en PyTorch ROCm:
|
||||
- `rocm5.7` - No disponible
|
||||
- `rocm6.0` - No disponible
|
||||
- `rocm6.1` - No disponible
|
||||
- `rocm7.1` - ✅ Funciona (versión 2.10.0+rocm7.1)
|
||||
|
||||
### 3. Verificar instalación
|
||||
|
||||
```python
|
||||
import torch
|
||||
|
||||
print(f"PyTorch: {torch.__version__}")
|
||||
print(f"ROCm version: {torch.version.hip}")
|
||||
print(f"GPU available: {torch.cuda.is_available()}")
|
||||
|
||||
if torch.cuda.is_available():
|
||||
print(f"GPU Name: {torch.cuda.get_device_name(0)}")
|
||||
print(f"VRAM: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.1f} GB")
|
||||
```
|
||||
|
||||
Salida esperada:
|
||||
```
|
||||
PyTorch: 2.10.0+rocm7.1
|
||||
ROCm version: 7.1.25424
|
||||
GPU available: True
|
||||
GPU Name: AMD Radeon Graphics
|
||||
VRAM: 16.0 GB
|
||||
```
|
||||
|
||||
## Tests de Verificación
|
||||
|
||||
### Test 1: Tensor básico
|
||||
```python
|
||||
import torch
|
||||
x = torch.randn(1000, 1000).cuda()
|
||||
y = x @ x.T
|
||||
print("✅ Matrix multiplication works")
|
||||
```
|
||||
|
||||
### Test 2: Memoria
|
||||
```python
|
||||
x = torch.randn(10000, 10000).cuda() # ~400MB
|
||||
print(f"Allocated: {torch.cuda.memory_allocated(0) / 1024**3:.2f} GB")
|
||||
```
|
||||
|
||||
### Test 3: CNN (Conv2d)
|
||||
```python
|
||||
import torch.nn as nn
|
||||
conv = nn.Conv2d(3, 64, 3, padding=1).cuda()
|
||||
x = torch.randn(1, 3, 224, 224).cuda()
|
||||
y = conv(x)
|
||||
print(f"Output: {y.shape}")
|
||||
```
|
||||
|
||||
### Test 4: Transformer Attention
|
||||
```python
|
||||
import torch.nn.functional as F
|
||||
q = torch.randn(2, 8, 512, 64).cuda()
|
||||
attn = F.scaled_dot_product_attention(q, q, q)
|
||||
print(f"Attention: {attn.shape}")
|
||||
```
|
||||
|
||||
### Test 5: Whisper-like Encoder
|
||||
```python
|
||||
import torch.nn as nn
|
||||
import torch.nn.functional as F
|
||||
|
||||
x = torch.randn(1, 80, 1500).cuda()
|
||||
conv1 = nn.Conv1d(80, 512, 3, padding=1).cuda()
|
||||
x = F.gelu(conv1(x))
|
||||
print(f"Whisper encoder: {x.shape}")
|
||||
```
|
||||
|
||||
## Dependencias Adicionales
|
||||
|
||||
### Faster-Whisper (recomendado para transcription)
|
||||
```bash
|
||||
pip install faster-whisper
|
||||
```
|
||||
|
||||
Funciona con GPU automáticamente:
|
||||
```python
|
||||
from faster_whisper import WhisperModel
|
||||
model = WhisperModel("small", device="auto", compute_type="float16")
|
||||
segments, info = model.transcribe("video.mp4", language="es")
|
||||
```
|
||||
|
||||
### OpenCV
|
||||
```bash
|
||||
pip install opencv-python
|
||||
```
|
||||
|
||||
### Otras librerías
|
||||
```bash
|
||||
pip install transformers accelerate numpy scipy
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "No such file or directory: /opt/amdgpu/share/libdrm/amdgpu.ids"
|
||||
Warning ignorable, la GPU funciona igual.
|
||||
|
||||
### "AttributeError: module 'torch' has no attribute 'gelu'"
|
||||
Usar `torch.nn.functional.gelu()` en lugar de `torch.gelu()`.
|
||||
|
||||
### GPU no detectada
|
||||
Verificar que ROCm esté instalado:
|
||||
```bash
|
||||
ls /opt/rocm
|
||||
hipcc --version
|
||||
```
|
||||
|
||||
## Comparación CUDA vs ROCm
|
||||
|
||||
| Aspecto | CUDA (NVIDIA) | ROCm (AMD) |
|
||||
|---------|---------------|------------|
|
||||
| Instalación | `pip install torch` | `pip install torch --index-url https://download.pytorch.org/whl/rocm7.1` |
|
||||
| Device | `torch.device("cuda")` | `torch.device("cuda")` (相同) |
|
||||
| Modelo | `model.cuda()` | `model.cuda()` (相同) |
|
||||
| VRAM 16GB | RTX 3070+ | RX 6800 XT |
|
||||
|
||||
## Notas
|
||||
|
||||
- PyTorch usa la misma API para CUDA y ROCm
|
||||
- El código no necesita cambios para ejecutar en GPU AMD
|
||||
- El índice `rocm7.1` es el correcto para ROCm 7.x
|
||||
- La versión nightly también está disponible: `--index-url https://download.pytorch.org/whl/nightly/rocm7.1`
|
||||
|
||||
## Historial de Pruebas
|
||||
|
||||
- ❌ `rocm5.7` - No disponible en PyTorch
|
||||
- ❌ `rocm6.0` - No disponible
|
||||
- ❌ `rocm6.1` - No disponible
|
||||
- ✅ `rocm7.1` - Funciona correctamente
|
||||
|
||||
---
|
||||
|
||||
**Fecha**: 19 de Febrero 2026
|
||||
**GPU**: AMD RX 6800 XT (16GB VRAM)
|
||||
**ROCm**: 7.1.25424
|
||||
**PyTorch**: 2.10.0+rocm7.1
|
||||
Reference in New Issue
Block a user