Vast.ai

Interactúa con los servicios de GPU en la nube de Vast.ai para obtener potencia informática bajo demanda.

Documentación

Instalación

Guía de instalación para macOS

Requisitos previos

  1. Instalar uv (gestor de paquetes de Python):
    brew install uv
    

Instalar el servidor MCP de Vast.ai

  1. Clonar el repositorio:

    git clone https://github.com/your-repo/vastai-mcp.git
    cd vastai-mcp
    
  2. Instalar dependencias usando uv:

    uv sync
    
  3. Instalar el servidor como herramienta:

    uv tool install -e .   # Install from current directory
    

Configuración

  1. Obtén tu clave API de Vast.ai:

    • Inicia sesión en console.vast.ai
    • Ve a Cuenta > Claves API
    • Crea o copia tu clave API
  2. Configura el cliente MCP (para Claude Desktop u otros clientes MCP):

    Actualiza tu archivo de configuración MCP (~/.cursor/mcp.json para Cursor):

    {
      "mcpServers": {
         "vast-ai": {
           "command": "uv",
           "args": [
               "run",
               "vast-mcp-server"
           ],
           "env": {
               "VAST_API_KEY": "your_vast_api_key_here",
               "SSH_KEY_FILE": "~/.ssh/id_rsa",
               "SSH_KEY_PUBLIC_FILE": "~/.ssh/id_rsa.pub"
           }
         }
      }
    }
    

Verificar la instalación

  1. Prueba el servidor directamente:
    uv tool run vast-mcp-server --help
    

Configuración de clave SSH (Recomendado)

Para una funcionalidad completa, asegúrate de tener claves SSH configuradas:

  1. Genera un par de claves SSH (si no tienes uno):

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
  2. Verifica que los archivos de clave existan:

    ls -la ~/.ssh/id_rsa*
    

    Deberías ver tanto el archivo id_rsa (privado) como el id_rsa.pub (público).

Solución de problemas

  • Permiso denegado: Asegúrate de que tu clave SSH tenga los permisos correctos:

    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  • Problemas con la clave API: Verifica que tu clave API sea correcta y tenga los permisos adecuados en Vast.ai

  • Problemas de red: Asegúrate de poder acceder a console.vast.ai desde tu red

Guía de uso del servidor MCP de Vast.ai

Este documento describe cómo usar el servidor MCP (Protocolo de Contexto de Modelo) de Vast.ai para interactuar con la plataforma de nube de GPU de Vast.ai.

Herramientas disponibles

Este servidor proporciona 23 herramientas para gestionar instancias de GPU de Vast.ai:

1. show_user_info()

Muestra la información del usuario actual y el saldo de la cuenta.

Devuelve:

  • Nombre de usuario, correo electrónico, saldo de la cuenta, ID de usuario
  • Información de la clave SSH (si está disponible)
  • Monto total gastado

2. show_instances(owner: str = "me")

Muestra las instancias del usuario (en ejecución, detenidas, etc.)

Parámetros:

  • owner (opcional): Propietario de las instancias a mostrar (por defecto: "me")

Devuelve:

  • Lista de todas las instancias con sus detalles:
    • ID de instancia y estado
    • Etiqueta e ID de máquina
    • Tipo de GPU y especificaciones
    • Costo por hora
    • Imagen Docker
    • Dirección IP pública (si está disponible)
    • Fecha de creación

3. search_offers(query: str = "", limit: int = 20, order: str = "score-")

Busca ofertas/máquinas de GPU disponibles para alquilar.

Parámetros:

  • query (opcional): Consulta de búsqueda en formato clave=valor (por ejemplo, "gpu_name=RTX_4090 num_gpus=2")
  • limit (opcional): Número máximo de resultados a devolver (por defecto: 20)
  • order (opcional): Orden de clasificación, agrega '-' para descendente (por defecto: "score-")

Devuelve:

  • Lista de ofertas disponibles con:
    • ID de oferta
    • Especificaciones de GPU (nombre, cantidad)
    • Detalles de CPU y RAM
    • Espacio de almacenamiento
    • Costo por hora
    • Ubicación y puntuación de confiabilidad
    • Versión de CUDA
    • Velocidades de Internet

Ejemplos de consultas:

  • "gpu_name=RTX_4090" - Buscar GPUs RTX 4090
  • "num_gpus=2 cpu_ram>=32" - Buscar configuraciones de doble GPU con 32GB+ de RAM

4. create_instance(offer_id: int, image: str, disk: float = 10.0, ssh: bool = False, jupyter: bool = False, direct: bool = False, env: str = "", label: str = "", bid_price: float = None)

Crea una nueva instancia a partir de una oferta.

Parámetros:

  • offer_id: ID de la oferta a alquilar (de search_offers)
  • image: Imagen Docker a ejecutar (por ejemplo, "pytorch/pytorch:latest")
  • disk (opcional): Tamaño del disco en GB (por defecto: 10.0)
  • ssh (opcional): Habilitar acceso SSH (por defecto: False)
  • jupyter (opcional): Habilitar Jupyter notebook (por defecto: False)
  • direct (opcional): Usar conexiones directas (por defecto: False)
  • env (opcional): Variables de entorno como dict (por defecto: None)
  • label (opcional): Etiqueta para la instancia
  • bid_price (opcional): Precio de oferta para instancias interrumpibles

Devuelve:

  • Mensaje de éxito con ID de instancia o detalles de error

Ejemplo:

create_instance(
    offer_id=12345,
    image="pytorch/pytorch:latest",
    disk=40.0,
    ssh=True,
    direct=True,
    env={"JUPYTER_ENABLE_LAB": "yes"},
    label="My PyTorch Training"
)

5. destroy_instance(instance_id: int)

Destruye una instancia, eliminándola por completo del sistema. No es necesario detenerla primero.

Parámetros:

  • instance_id: ID de la instancia a destruir

Devuelve:

  • Mensaje de éxito/fracaso

6. start_instance(instance_id: int)

Inicia una instancia detenida.

Parámetros:

  • instance_id: ID de la instancia a iniciar

Devuelve:

  • Mensaje de éxito/fracaso

7. stop_instance(instance_id: int)

Detiene una instancia en ejecución (sin destruirla).

Parámetros:

  • instance_id: ID de la instancia a detener

Devuelve:

  • Mensaje de éxito/fracaso

8. search_volumes(query: str = "", limit: int = 20)

Busca ofertas de volúmenes de almacenamiento disponibles.

Parámetros:

  • query (opcional): Consulta de búsqueda en formato clave=valor
  • limit (opcional): Número máximo de resultados a devolver (por defecto: 20)

Devuelve:

  • Lista de ofertas de volúmenes disponibles con:
    • ID de oferta de volumen
    • Capacidad de almacenamiento
    • Costo por GB por mes
    • Ubicación y confiabilidad
    • Ancho de banda del disco
    • Velocidades de Internet

9. label_instance(instance_id: int, label: str)

Establece una etiqueta en una instancia para facilitar su identificación.

Parámetros:

  • instance_id: ID de la instancia a etiquetar
  • label: Texto de la etiqueta a establecer

Devuelve:

  • Mensaje de éxito/fracaso

10. launch_instance_workflow(gpu_name: str, num_gpus: int, image: str, region: str = "", disk: float = 16.0, ssh: bool = True, jupyter: bool = False, direct: bool = True, label: str = "")

Lanza la mejor instancia de las ofertas de búsqueda según los parámetros dados (alternativa simplificada a create_instance).

Parámetros:

  • gpu_name: Nombre del modelo de GPU (por ejemplo, "RTX_4090")
  • num_gpus: Número de GPUs requeridas
  • image: Imagen Docker a ejecutar
  • region (opcional): Preferencia de región geográfica
  • disk (opcional): Tamaño del disco en GB (por defecto: 16.0)
  • ssh (opcional): Habilitar acceso SSH (por defecto: True)
  • jupyter (opcional): Habilitar Jupyter notebook (por defecto: False)
  • direct (opcional): Usar conexiones directas (por defecto: True)
  • label (opcional): Etiqueta para la instancia

Devuelve:

  • Mensaje de éxito con detalles de la instancia o error

Ejemplo:

launch_instance_workflow(
    gpu_name="RTX_4090",
    num_gpus=2,
    image="pytorch/pytorch:latest",
    region="North_America",
    disk=40.0,
    ssh=True,
    direct=True,
    label="My Training Job"
)

11. prepay_instance(instance_id: int, amount: float)

Deposita créditos en una instancia reservada para obtener tarifas con descuento.

Parámetros:

  • instance_id: ID de la instancia a pagar por adelantado
  • amount: Cantidad de créditos a depositar

Devuelve:

  • Detalles sobre la tasa de descuento y el período de cobertura

12. reboot_instance(instance_id: int)

Reinicia una instancia (detener/iniciar) sin perder la prioridad de GPU.

Parámetros:

  • instance_id: ID de la instancia a reiniciar

Devuelve:

  • Mensaje de éxito/fracaso

13. recycle_instance(instance_id: int)

Recicla una instancia (destruir/crear desde una imagen recién extraída) sin perder la prioridad de GPU.

Parámetros:

  • instance_id: ID de la instancia a reciclar

Devuelve:

  • Mensaje de éxito/fracaso

14. show_instance(instance_id: int)

Muestra información detallada sobre una instancia específica.

Parámetros:

  • instance_id: ID de la instancia a mostrar

Devuelve:

  • Información detallada de la instancia que incluye:
    • Estado y especificaciones
    • Detalles de conexión (IP, SSH, Jupyter)
    • Información de costo y tiempo de ejecución
    • Detalles de configuración

15. logs(instance_id: int, tail: str = "1000", filter_text: str = "", daemon_logs: bool = False)

Obtiene los registros de una instancia.

Parámetros:

  • instance_id: ID de la instancia para obtener registros
  • tail (opcional): Número de líneas desde el final de los registros (por defecto: "1000")
  • filter_text (opcional): Filtro grep para entradas de registro
  • daemon_logs (opcional): Obtener registros del sistema daemon en lugar de registros del contenedor

Devuelve:

  • Texto de registros de la instancia o mensaje de estado

16. attach_ssh(instance_id: int)

Adjunta una clave SSH a una instancia para acceso seguro.

Parámetros:

  • instance_id: ID de la instancia a la que adjuntar la clave SSH

Devuelve:

  • Mensaje de éxito/fracaso

Ejemplos:

# Attach SSH key from configured public key file
attach_ssh(12345)

Notas:

  • Utiliza el archivo de clave pública SSH configurado en la variable de entorno SSH_KEY_PUBLIC_FILE
  • Solo se aceptan claves SSH públicas (no claves privadas)
  • La clave SSH debe comenzar con el prefijo 'ssh-' (por ejemplo, ssh-rsa, ssh-ed25519)
  • Después de adjuntarla, puedes conectarte por SSH a la instancia usando la clave privada correspondiente

17. search_templates()

Busca plantillas disponibles en Vast.ai.

Parámetros:

  • Ninguno

Devuelve:

  • Lista de plantillas disponibles con:
    • ID y nombre de la plantilla
    • Imagen Docker
    • Descripción (si está disponible)
    • Variables de entorno
    • Configuración del tipo de ejecución
    • Configuraciones de SSH y Jupyter

Ejemplo:

# Get all available templates
search_templates()

Notas:

  • Las plantillas son entornos preconfigurados que simplifican la creación de instancias
  • Las plantillas pueden incluir imágenes Docker específicas, configuraciones de entorno y scripts de inicio

18. execute_command(instance_id: int, command: str)

Ejecuta un comando remoto (restringido) solo disponible en instancias detenidas. Usa ssh para ejecutar comandos en instancias en ejecución.

Parámetros:

  • instance_id: ID de la instancia en la que ejecutar el comando
  • command: Comando a ejecutar (limitado a ls, rm, du)

Devuelve:

  • Salida del comando o mensaje de estado

Comandos disponibles:

  • ls: Listar el contenido del directorio
  • rm: Eliminar archivos o directorios
  • du: Resumir el uso del dispositivo para un conjunto de archivos

Ejemplos:

# List directory contents
execute_command(12345, "ls -l -o -r")

# Remove files
execute_command(12345, "rm -r home/delete_this.txt")

# Check disk usage
execute_command(12345, "du -d2 -h")

Notas:

  • Solo funciona en instancias detenidas
  • Para instancias en ejecución, usa ssh_execute_command en su lugar
  • Limitado a comandos seguros específicos por seguridad

19. ssh_execute_command(remote_host: str, remote_user: str, remote_port: int, command: str)

Ejecuta un comando en un host remoto a través de SSH.

Parámetros:

  • remote_host: El nombre de host o dirección IP del servidor remoto
  • remote_user: El nombre de usuario con el que conectarse (por ejemplo, 'root', 'ubuntu', 'ec2-user')
  • remote_port: El número de puerto SSH (normalmente 22 o un puerto personalizado como 34608)
  • command: El comando a ejecutar en el host remoto

Devuelve:

  • Salida del comando con estado de salida, stdout y stderr

Ejemplo:

# Execute a command on a running instance
ssh_execute_command(
    remote_host="116.43.148.85",
    remote_user="root", 
    remote_port=26378,
    command="nvidia-smi"
)

Notas:

  • Funciona con cualquier servidor accesible por SSH, no solo con instancias de Vast.ai
  • Utiliza el archivo de clave privada SSH configurado en la variable de entorno SSH_KEY_FILE
  • Maneja automáticamente diferentes tipos de claves SSH (RSA, Ed25519, ECDSA, DSS)
  • Devuelve una salida detallada que incluye el estado de salida y tanto stdout como stderr

20. ssh_execute_background_command(remote_host: str, remote_user: str, remote_port: int, command: str, task_name: str = None)

Ejecuta un comando de larga duración en segundo plano en un host remoto a través de SSH usando nohup.

Parámetros:

  • remote_host: El nombre de host o dirección IP del servidor remoto
  • remote_user: El nombre de usuario con el que conectarse (por ejemplo, 'root', 'ubuntu', 'ec2-user')
  • remote_port: El número de puerto SSH (normalmente 22 o un puerto personalizado como 34608)
  • command: El comando a ejecutar en segundo plano
  • task_name (opcional): Nombre opcional para la tarea (para facilitar la identificación)

Devuelve:

  • Información de la tarea que incluye ID de tarea, ID de proceso y ruta del archivo de registro

Ejemplo:

# Start a long-running training job
ssh_execute_background_command(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    command="python train.py --epochs 100",
    task_name="training_job"
)

Notas:

  • Devuelve task_id y process_id para monitoreo
  • Crea archivos de registro en el servidor remoto para capturar la salida
  • Usa ssh_check_background_task para monitorear el progreso
  • Usa ssh_kill_background_task para detener si es necesario

21. ssh_check_background_task(remote_host: str, remote_user: str, remote_port: int, task_id: str, process_id: int, tail_lines: int = 50)

Verifica el estado de una tarea SSH en segundo plano y obtén su salida.

Parámetros:

  • remote_host: El nombre de host o dirección IP del servidor remoto
  • remote_user: El nombre de usuario con el que conectarse
  • remote_port: El número de puerto SSH
  • task_id: El ID de tarea devuelto por ssh_execute_background_command
  • process_id: El ID de proceso devuelto por ssh_execute_background_command
  • tail_lines (opcional): Número de líneas de registro recientes a mostrar (por defecto: 50) Devuelve:
  • Informe de estado con estado del proceso, salida de registros e información de progreso

Ejemplo:

# Check on a background task
ssh_check_background_task(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    task_id="training_job_a1b2c3d4",
    process_id=12345,
    tail_lines=100
)

Notas:

  • Indica si la tarea sigue en ejecución o ha finalizado
  • Muestra la salida de registros reciente de la tarea
  • Proporciona el recuento total de líneas de registro para indicar el progreso

22. ssh_kill_background_task(remote_host: str, remote_user: str, remote_port: int, task_id: str, process_id: int)

Finaliza una tarea SSH en segundo plano en ejecución.

Parámetros:

  • remote_host: El nombre de host o dirección IP del servidor remoto
  • remote_user: El nombre de usuario con el que conectarse
  • remote_port: El número de puerto SSH
  • task_id: El ID de tarea devuelto por ssh_execute_background_command
  • process_id: El ID de proceso devuelto por ssh_execute_background_command

Devuelve:

  • Estado de la operación de finalización y resultados de limpieza

Ejemplo:

# Stop a background task
ssh_kill_background_task(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    task_id="training_job_a1b2c3d4",
    process_id=12345
)

Notas:

  • Intenta una terminación gradual primero, luego una finalización forzada si es necesario
  • Limpia automáticamente los archivos temporales de registro y PID
  • Es seguro llamarlo incluso si el proceso ya ha finalizado

23. disable_sudo_password(remote_host: str, remote_user: str, remote_port: int)

Desactiva el requisito de contraseña de sudo para el grupo sudo en un host remoto mediante SSH.

Esta función modifica de forma segura el archivo sudoers para permitir acceso sudo sin contraseña a los usuarios del grupo sudo.

Parámetros:

  • remote_host: El nombre de host o dirección IP del servidor remoto
  • remote_user: El nombre de usuario con el que conectarse (por ejemplo, 'root', 'ubuntu', 'ec2-user')
  • remote_port: El número de puerto SSH (normalmente 22 o un puerto personalizado como 34608)

Devuelve:

  • Estado detallado de la modificación de sudoers, incluyendo:
    • Configuración de sudo anterior y nueva
    • Resultados de validación
    • Ubicación del archivo de respaldo

Ejemplo:

# Disable sudo password on a running instance
disable_sudo_password(
    remote_host="ssh1.vast.ai",
    remote_user="root", 
    remote_port=26378
)

Características de seguridad:

  • Crea una copia de seguridad automática del archivo sudoers antes de la modificación
  • Valida la sintaxis de sudoers con visudo -c después de los cambios
  • Restaura automáticamente la copia de seguridad si la validación falla
  • Muestra la configuración antes/después para verificación

Notas:

  • Modifica sudoers a: %sudo ALL=(ALL) NOPASSWD: ALL
  • Requiere que el usuario que se conecta tenga privilegios de sudo
  • Los archivos de respaldo tienen marca de tiempo por seguridad
  • Funciona con cualquier sistema Linux accesible por SSH
  • Pruebe el cambio con sudo -l después de la ejecución

24. configure_mcp_rules(auto_attach_ssh: bool = None, auto_label: bool = None, wait_for_ready: bool = None, label_prefix: str = None)

Configura las reglas de automatización de MCP que controlan los comportamientos automáticos durante la creación de instancias.

Parámetros:

  • auto_attach_ssh (opcional): Activar/desactivar la conexión automática de claves SSH para instancias SSH/Jupyter
  • auto_label (opcional): Activar/desactivar el etiquetado automático de instancias
  • wait_for_ready (opcional): Activar/desactivar la espera de disponibilidad de la instancia después de la creación
  • label_prefix (opcional): Establecer el prefijo para las etiquetas automáticas de instancias

Devuelve:

  • Estado de configuración actual y cualquier cambio realizado

Ejemplo:

# Configure MCP rules
configure_mcp_rules(
    auto_attach_ssh=True,
    auto_label=True,
    label_prefix="my-project",
    wait_for_ready=True
)

# View current configuration
configure_mcp_rules()

Notas:

  • Estas reglas afectan el comportamiento de create_instance y launch_instance_workflow
  • La conexión automática de SSH se aplica solo cuando SSH o Jupyter está habilitado
  • El etiquetado automático crea etiquetas con marca de tiempo cuando no se proporciona una etiqueta
  • Esperar disponibilidad monitorea el estado de la instancia hasta que se vuelva "running"

Configuración

Configuración de la clave API

El servidor requiere una clave API de Vast.ai. Puede configurarla de varias maneras:

  1. Variable de entorno:

    export VAST_API_KEY="your_api_key_here"
    
  2. Archivo de clave API: Cree ~/.vastai_api_key con su clave API

  3. Codificada (para desarrollo): El servidor actual tiene una clave API codificada para fines de prueba

Ejecutar el servidor

# Run with default settings (localhost:8000)
python vast_mcp_server.py

# Run with custom host and port
python vast_mcp_server.py --host 0.0.0.0 --port 9000

Flujos de trabajo comunes

1. Flujo de trabajo básico de creación de instancias

# 1. Check your account
show_user_info()

# 2. Search for available offers
search_offers("gpu_name=RTX_4090", limit=10)

# 3. Create instance from an offer
create_instance(
    offer_id=12345, 
    image="pytorch/pytorch:latest",
    disk=20.0,
    ssh=True,
    direct=True
)

# 4. Check instance status
  show_instances()

2. Gestión de instancias

# View all instances
show_instances()

# Stop an instance
stop_instance(instance_id=67890)

# Start it again later
start_instance(instance_id=67890)

# Permanently destroy when done
destroy_instance(instance_id=67890)

3. Búsqueda de almacenamiento

# Search for storage volumes
search_volumes("disk_space>=100", limit=5)

4. Gestión avanzada de instancias

# Launch instance with specific GPU requirements (streamlined approach)
launch_instance_workflow(
    gpu_name="RTX_4090",
    num_gpus=2,
    image="pytorch/pytorch:latest",
    region="North_America",
    disk=40.0,
    ssh=True,
    direct=True,
    label="Training Job"
)

# Get detailed information about an instance
show_instance(instance_id=12345)

# Set a label for easier identification
label_instance(instance_id=12345, label="Production Model")

# Get instance logs
logs(instance_id=12345, tail="500", filter_text="error")

# Reboot instance without losing GPU priority
reboot_instance(instance_id=12345)

5. Monitoreo y mantenimiento de instancias

# Monitor instance logs with filtering
logs(instance_id=12345, filter_text="WARNING|ERROR", tail="100")

# Check instance details
show_instance(instance_id=12345)

# Recycle instance to update to latest image
recycle_instance(instance_id=12345)

# Prepay for discounted rates
prepay_instance(instance_id=12345, amount=50.0)

6. Gestión de acceso SSH

# Create instance with SSH enabled
create_instance(
    offer_id=12345,
    image="ubuntu:22.04",
    ssh=True,
    direct=True,
    label="SSH Server"
)

# Attach your SSH key for access
attach_ssh(instance_id=67890)

# Get instance details including SSH connection info
show_instance(instance_id=67890)

# Monitor instance through logs
logs(instance_id=67890, tail="50")

7. Exploración de plantillas

# Browse available templates
search_templates()

8. Ejecución de comandos en instancias

# For stopped instances, use constrained execute_command
stop_instance(instance_id=12345)

# Execute safe commands on stopped instance
execute_command(instance_id=12345, command="ls -la /workspace")
execute_command(instance_id=12345, command="du -sh /workspace")
execute_command(instance_id=12345, command="rm -rf /tmp/old_files")

# For running instances, use SSH commands
start_instance(instance_id=12345)

# Get instance connection details
instance_details = show_instance(instance_id=12345)
# Extract SSH host, port from the output

# Execute commands via SSH on running instance
ssh_execute_command(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    command="nvidia-smi"
)

# Check system resources
ssh_execute_command(
    remote_host="116.43.148.85",
    remote_user="root", 
    remote_port=26378,
    command="df -h && free -h && ps aux"
)

9. Gestión de tareas en segundo plano

# Start a long-running training job in background
task_info = ssh_execute_background_command(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    command="python train.py --epochs 100 --batch-size 32",
    task_name="pytorch_training"
)

# Extract task_id and process_id from task_info output
# Format: "Task ID: pytorch_training_a1b2c3d4" and "Process ID: 12345"

# Monitor progress periodically
ssh_check_background_task(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    task_id="pytorch_training_a1b2c3d4",
    process_id=12345,
    tail_lines=100
)

# Stop the task if needed
ssh_kill_background_task(
    remote_host="116.43.148.85", 
    remote_user="root",
    remote_port=26378,
    task_id="pytorch_training_a1b2c3d4",
    process_id=12345
)

10. Flujo de trabajo completo de entrenamiento de ML

# 1. Find and create a GPU instance
search_offers("gpu_name=RTX_4090", limit=5)

create_instance(
    offer_id=12345,
    image="pytorch/pytorch:latest",
    disk=50.0,
    ssh=True,
    direct=True,
    env={},
    label="ML Training"
)

# 2. Get connection details
instance_details = show_instance(instance_id=67890)

# 3. Set up the environment
ssh_execute_command(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    command="pip install wandb tensorboard"
)

# 4. Upload your training code (assume already done)
# 5. Start training in background
training_task = ssh_execute_background_command(
    remote_host="116.43.148.85",
    remote_user="root", 
    remote_port=26378,
    command="cd /workspace && python train.py --config config.yaml",
    task_name="main_training"
)

# 6. Monitor training progress
ssh_check_background_task(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    task_id="main_training_a1b2c3d4",
    process_id=12345,
    tail_lines=50
)

# 7. Check GPU utilization
ssh_execute_command(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    command="nvidia-smi"
)

# 8. When training is complete, save results
ssh_execute_command(
    remote_host="116.43.148.85",
    remote_user="root",
    remote_port=26378,
    command="tar -czf model_results.tar.gz /workspace/outputs"
)

# 9. Clean up
destroy_instance(instance_id=67890)

Sintaxis de consulta

Al buscar ofertas o volúmenes, puede usar estos operadores:

  • = o == - Igual a
  • != - Diferente de
  • > - Mayor que
  • >= - Mayor o igual que
  • < - Menor que
  • <= - Menor o igual que

Ejemplos de consultas:

  • "gpu_name=RTX_4090 num_gpus>=2" - RTX 4090 con 2 o más GPU
  • "cpu_ram>64 reliability2>=99" - Alta RAM y fiabilidad
  • "dph_total<=1.0" - Costo inferior a $1/hora

Manejo de errores

Todos los métodos incluyen manejo de errores y devolverán mensajes de error descriptivos si:

  • La clave API falta o no es válida
  • Ocurren problemas de conectividad de red
  • Se proporcionan parámetros no válidos
  • La API de Vast.ai devuelve errores

Consulte los registros del servidor para obtener información detallada sobre errores durante el desarrollo.