# Solución de problemas

Problemas comunes y soluciones al alquilar servidores GPU en el mercado de CLORE.AI.

{% hint style="success" %}
Todos los ejemplos se pueden ejecutar en servidores GPU alquilados a través de [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

{% hint style="info" %}
Esta guía se basa en la documentación técnica de la plataforma CLORE.AI.
{% endhint %}

## Tabla de contenidos

* [Problemas al crear pedidos](#order-creation-issues)
* [Problemas de conexión](#connection-issues)
* [Problemas con el contenedor](#container-issues)
* [Problemas con la GPU](#gpu-issues)
* [Problemas de pago](#payment-issues)
* [Límites de la plataforma](#platform-limits)

***

## Problemas al crear pedidos

### El pedido falla: "Saldo insuficiente"

**Causa:** Fondos insuficientes para cubrir la tarifa de creación y el depósito mínimo.

**Solución:**

* Comprueba tu saldo en la moneda seleccionada (CLORE, BTC o USDT/USDC)
* La tarifa de creación se cobra cuando se crea el pedido
* Recarga tu saldo con suficiente para varias horas de alquiler

### El pedido falla: "Servidor no disponible"

**Causa:** El servidor ya está alquilado o fuera de línea.

**Solución:**

* Actualiza la página del mercado
* Comprueba el estado del servidor (indicador en línea/fuera de línea)
* Para alquileres Spot: es posible que te hayan superado la oferta

### Pedido atascado en estado "Creando"

**Causa:** El contenedor se está desplegando o ocurrió un error.

**Solución:**

1. Espera 2-5 minutos (se está descargando la imagen de Docker)
2. Comprueba los registros en **Mis Pedidos**
3. Las imágenes grandes (10GB+) tardan más en descargarse
4. Si se atasca más de 10 minutos: cancela y vuelve a intentarlo

***

## Problemas de conexión

### No se puede conectar vía SSH

**Causa:** Puerto no configurado o contenedor no listo.

**Lista de comprobación:**

1. El puerto 22 debe estar configurado como **TCP** (no HTTP)
2. El estado del contenedor debe ser **Activo** (no Creando)
3. Usa el puerto mapeado correcto desde **Mis Pedidos**

**Comando SSH correcto:**

```bash
ssh -p <MAPPED_PORT> root@<PROXY_ADDRESS>
```

Dónde `<MAPPED_PORT>` es el puerto público (p. ej., 45678), NO el puerto 22.

### SSH funciona pero la interfaz web no se abre

**Causa:** Puerto configurado como TCP en lugar de HTTP, o servicio no en ejecución.

**Solución:**

1. Los puertos de la interfaz web deben configurarse como **HTTP** (no TCP)
2. El servicio debe escuchar en `0.0.0.0`, no en `localhost`
3. Comprueba los registros: el servicio puede haberse bloqueado al iniciarse

**Configuración de puertos correcta:**

```
22/tcp      - Acceso SSH
7860/http   - Interfaz Gradio/WebUI
8000/http   - Servidor API
```

### Error "Conexión rechazada"

**Causa:** El servicio dentro del contenedor no está en ejecución o escucha en la dirección incorrecta.

**Solución:**

1. Entra por SSH en el contenedor y comprueba el estado del servicio:

   ```bash
   ps aux | grep python
   netstat -tlnp
   ```
2. El servicio debe escuchar en `0.0.0.0`, no en `127.0.0.1`:

   ```bash
   # Incorrecto:
   python app.py --host 127.0.0.1

   # Correcto:
   python app.py --host 0.0.0.0
   ```

### Error "Conexión agotada"

**Causa:** Dirección/puerto incorrectos o problemas de red.

**Lista de comprobación:**

1. Usa la dirección Proxy desde **Mis Pedidos** (¡no la IP del servidor!)
2. Usa el puerto mapeado (puerto público, no el puerto del contenedor)
3. Usa el protocolo correcto (http\:// para puertos HTTP)

***

## Problemas con el contenedor

### El contenedor sigue reiniciándose

**Causa:** Error en el comando de inicio o recursos insuficientes.

**Solución:**

1. Comprueba los registros en **Mis Pedidos**
2. Simplifica el comando de inicio:

   ```bash
   # Malo - un comando largo puede fallar:
   apt update && apt install -y ... && pip install ... && python ...

   # Mejor - empieza con un comando simple:
   sleep infinity
   ```
3. Luego entra por SSH y configura manualmente

### No se puede reiniciar el contenedor

**Causa:** Periodo de enfriamiento entre reinicios.

**Dato:** Reiniciar el contenedor tiene un **periodo de enfriamiento de 120 segundos** de enfriamiento.

**Solución:** Espera 2 minutos entre intentos de reinicio.

### Datos perdidos después del reinicio

**Causa:** Los datos no están en almacenamiento persistente.

**Importante:**

* Los datos dentro del contenedor se **preservan** al reiniciar el contenedor
* Los datos se **pierden** cuando el pedido se cancela o caduca
* Descarga siempre los resultados antes de terminar el alquiler:

  ```bash
  scp -P <port> root@<proxy>:/workspace/results.tar.gz ./
  ```

### El comando de inicio no se ejecuta

**Causa:** Error de sintaxis o problema con la imagen.

**Errores comunes:**

```bash

# Error: espacio extra después de \
apt update && \
apt install -y git   # <-- espacio antes de la siguiente línea

# Correcto:
apt update && \
apt install -y git && \
python app.py
```

**Solución:**

1. Usa un inicio sencillo: `bash` o `sleep infinity`
2. Configura todo vía SSH
3. O crea una imagen Docker personalizada con el software preinstalado

***

## Problemas con la GPU

### GPU no visible en el contenedor

**Comprueba:**

```bash
nvidia-smi
```

**Si el comando no se encuentra:**

* La imagen Docker debe soportar CUDA
* Usa imágenes con soporte CUDA: `pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime`

**Si la GPU no se muestra:**

* Verifica que el servidor tenga GPU (comprueba el anuncio en el mercado)
* Contacta al proveedor del servidor

### Incompatibilidad de versión de CUDA

**Error:** `La versión del controlador CUDA es insuficiente para la versión del runtime de CUDA`

**Causa:** La versión de CUDA en la imagen es incompatible con el controlador del servidor.

**Solución:**

* Comprueba la versión del controlador: `nvidia-smi` (esquina superior derecha)
* Usa una imagen con versión de CUDA compatible
* Opciones seguras: CUDA 11.8, CUDA 12.1

### Memoria GPU insuficiente

**Error:** `CUDA fuera de memoria`

**Soluciones:**

1. Usa un modelo más pequeño o cuantización
2. Añade banderas de optimización de memoria:
   * Stable Diffusion: `--medvram` o `--lowvram`
   * LLMs: `load_in_4bit=True` o `load_in_8bit=True`
3. Liberar memoria: `torch.cuda.empty_cache()`
4. Alquila un servidor con más VRAM

***

## Problemas de pago

### Monedas admitidas

CLORE.AI admite tres monedas:

* **CLORE** - token nativo de la plataforma
* **BTC** - Bitcoin
* **USD** - stablecoins (si el proveedor lo habilita)

### Pedido cancelado: "Superado"

**Causa:** Alguien ofreció un precio mayor en el mercado Spot.

**Solución:**

* Usa **Bajo demanda** para alquiler garantizado
* O aumenta tu oferta Spot

### Saldo cobrado pero pedido no creado

**Causa:** La tarifa de creación se cobra incluso si el pedido falla.

**Solución:**

* La tarifa de creación suele ser mínima
* Comprueba la razón de la cancelación en el historial
* Contacta con soporte para problemas recurrentes

***

## Límites de la plataforma

Verificado desde la base de código de CLORE.AI:

| Parámetro                              | Límite                       |
| -------------------------------------- | ---------------------------- |
| Puertos por pedido                     | **5**                        |
| Variables de entorno totales           | **12.288 caracteres** (12KB) |
| Nombre de una sola variable de entorno | 128 caracteres               |
| Valor de una sola variable de entorno  | 1.536 caracteres             |
| Clave SSH                              | **3.072 caracteres**         |
| Contraseña SSH                         | **32 caracteres**            |
| Token de Jupyter                       | **32 caracteres**            |
| Enfriamiento de reinicio de contenedor | **120 segundos**             |
| Rango de puertos                       | 1-65535                      |
| Protocolos de puerto                   | Solo TCP o HTTP              |

***

## Variables de entorno

Usa variables de entorno para acceso SSH y Jupyter:

| Variable        | Propósito                  | Longitud máxima  |
| --------------- | -------------------------- | ---------------- |
| `SSH_KEY`       | Tu clave pública SSH       | 3.072 caracteres |
| `SSH_PASSWORD`  | Contraseña SSH             | 32 caracteres    |
| `JUPYTER_TOKEN` | Token del notebook Jupyter | 32 caracteres    |

**Configuración de ejemplo:**

```
SSH_PASSWORD=mypassword123
JUPYTER_TOKEN=mysecrettoken
```

***

## Comandos de diagnóstico

```bash

# Comprobar GPU
nvidia-smi

# Comprobar uso de memoria
free -h

# Comprobar espacio en disco
df -h

# Comprobar procesos en ejecución
ps aux | grep python

# Comprobar puertos abiertos
netstat -tlnp

# Comprobar registros de errores recientes
dmesg | tail -50

# Liberar memoria GPU (Python)
import torch
torch.cuda.empty_cache()
```

***

## Obtener ayuda

Si el problema persiste:

1. Verifique [Documentación de CLORE.AI](https://docs.clore.ai/)
2. Describe el problema con registros y capturas de pantalla
3. Incluye el ID del pedido y el ID del servidor
