Vast.ai

Interaja com os serviços de GPU em nuvem da Vast.ai para obter poder computacional sob demanda.

Documentação

Instalação

Guia de Instalação para macOS

Pré-requisitos

  1. Instale o uv (gerenciador de pacotes Python):
    brew install uv
    

Instale o Servidor MCP da Vast.ai

  1. Clone o repositório:

    git clone https://github.com/your-repo/vastai-mcp.git
    cd vastai-mcp
    
  2. Instale as dependências usando uv:

    uv sync
    
  3. Instale o servidor como uma ferramenta:

    uv tool install -e .   # Install from current directory
    

Configuração

  1. Obtenha sua chave de API da Vast.ai:

    • Faça login em console.vast.ai
    • Vá para Conta > Chaves de API
    • Crie ou copie sua chave de API
  2. Configure o cliente MCP (para Claude Desktop ou outros clientes MCP):

    Atualize seu arquivo de configuração 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"
           }
         }
      }
    }
    

Verifique a Instalação

  1. Teste o servidor diretamente:
    uv tool run vast-mcp-server --help
    

Configuração de Chave SSH (Recomendado)

Para funcionalidade completa, certifique-se de ter chaves SSH configuradas:

  1. Gere um par de chaves SSH (se você não tiver um):

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
  2. Verifique se os arquivos de chave existem:

    ls -la ~/.ssh/id_rsa*
    

    Você deve ver tanto o arquivo id_rsa (privado) quanto o id_rsa.pub (público).

Solução de Problemas

  • Permissão negada: Certifique-se de que sua chave SSH tenha as permissões corretas:

    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  • Problemas com a chave de API: Verifique se sua chave de API está correta e tem as permissões adequadas na Vast.ai

  • Problemas de rede: Certifique-se de que você consegue acessar console.vast.ai a partir da sua rede

Guia de Uso do Servidor MCP da Vast.ai

Este documento descreve como usar o servidor MCP (Model Context Protocol) da Vast.ai para interagir com a plataforma de nuvem de GPUs da Vast.ai.

Ferramentas Disponíveis

Este servidor fornece 23 ferramentas para gerenciar instâncias de GPU da Vast.ai:

1. show_user_info()

Mostra informações do usuário atual e saldo da conta.

Retorna:

  • Nome de usuário, e-mail, saldo da conta, ID do usuário
  • Informações da chave SSH (se disponível)
  • Valor total gasto

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

Mostra as instâncias do usuário (em execução, paradas, etc.)

Parâmetros:

  • owner (opcional): Proprietário das instâncias a mostrar (padrão: "me")

Retorna:

  • Lista de todas as instâncias com seus detalhes:
    • ID da instância e status
    • Rótulo e ID da máquina
    • Tipo de GPU e especificações
    • Custo por hora
    • Imagem Docker
    • Endereço IP público (se disponível)
    • Data de criação

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

Busca ofertas/máquinas de GPU disponíveis para aluguel.

Parâmetros:

  • query (opcional): Consulta de busca no formato chave=valor (ex.: "gpu_name=RTX_4090 num_gpus=2")
  • limit (opcional): Número máximo de resultados a retornar (padrão: 20)
  • order (opcional): Ordem de classificação, adicione '-' para ordem decrescente (padrão: "score-")

Retorna:

  • Lista de ofertas disponíveis com:
    • ID da oferta
    • Especificações da GPU (nome, quantidade)
    • Detalhes de CPU e RAM
    • Espaço de armazenamento
    • Custo por hora
    • Localização e pontuação de confiabilidade
    • Versão CUDA
    • Velocidades de internet

Exemplos de consultas:

  • "gpu_name=RTX_4090" - Busca por GPUs RTX 4090
  • "num_gpus=2 cpu_ram>=32" - Busca por configurações com duas GPUs e 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)

Cria uma nova instância a partir de uma oferta.

Parâmetros:

  • offer_id: ID da oferta a alugar (de search_offers)
  • image: Imagem Docker a executar (ex.: "pytorch/pytorch:latest")
  • disk (opcional): Tamanho do disco em GB (padrão: 10.0)
  • ssh (opcional): Ativar acesso SSH (padrão: False)
  • jupyter (opcional): Ativar Jupyter notebook (padrão: False)
  • direct (opcional): Usar conexões diretas (padrão: False)
  • env (opcional): Variáveis de ambiente como dict (padrão: None)
  • label (opcional): Rótulo para a instância
  • bid_price (opcional): Preço de lance para instâncias interrompíveis

Retorna:

  • Mensagem de sucesso com ID da instância ou detalhes do erro

Exemplo:

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)

Destrói uma instância, removendo-a completamente do sistema. Não é necessário pará-la antes.

Parâmetros:

  • instance_id: ID da instância a destruir

Retorna:

  • Mensagem de sucesso/falha

6. start_instance(instance_id: int)

Inicia uma instância parada.

Parâmetros:

  • instance_id: ID da instância a iniciar

Retorna:

  • Mensagem de sucesso/falha

7. stop_instance(instance_id: int)

Para uma instância em execução (sem destruí-la).

Parâmetros:

  • instance_id: ID da instância a parar

Retorna:

  • Mensagem de sucesso/falha

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

Busca ofertas de volumes de armazenamento disponíveis.

Parâmetros:

  • query (opcional): Consulta de busca no formato chave=valor
  • limit (opcional): Número máximo de resultados a retornar (padrão: 20)

Retorna:

  • Lista de ofertas de volumes disponíveis com:
    • ID da oferta de volume
    • Capacidade de armazenamento
    • Custo por GB por mês
    • Localização e confiabilidade
    • Largura de banda do disco
    • Velocidades de internet

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

Define um rótulo em uma instância para identificação mais fácil.

Parâmetros:

  • instance_id: ID da instância a rotular
  • label: Texto do rótulo a definir

Retorna:

  • Mensagem de sucesso/falha

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 = "")

Inicia a melhor instância das ofertas de busca com base nos parâmetros fornecidos (alternativa simplificada ao create_instance).

Parâmetros:

  • gpu_name: Nome do modelo de GPU (ex.: "RTX_4090")
  • num_gpus: Número de GPUs necessárias
  • image: Imagem Docker a executar
  • region (opcional): Preferência de região geográfica
  • disk (opcional): Tamanho do disco em GB (padrão: 16.0)
  • ssh (opcional): Ativar acesso SSH (padrão: True)
  • jupyter (opcional): Ativar Jupyter notebook (padrão: False)
  • direct (opcional): Usar conexões diretas (padrão: True)
  • label (opcional): Rótulo para a instância

Retorna:

  • Mensagem de sucesso com detalhes da instância ou erro

Exemplo:

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 em uma instância reservada para tarifas com desconto.

Parâmetros:

  • instance_id: ID da instância para pré-pagar
  • amount: Quantidade de créditos a depositar

Retorna:

  • Detalhes sobre a taxa de desconto e período de cobertura

12. reboot_instance(instance_id: int)

Reinicia uma instância (parar/iniciar) sem perder a prioridade de GPU.

Parâmetros:

  • instance_id: ID da instância a reiniciar

Retorna:

  • Mensagem de sucesso/falha

13. recycle_instance(instance_id: int)

Recicla uma instância (destruir/criar a partir de imagem recém-baixada) sem perder a prioridade de GPU.

Parâmetros:

  • instance_id: ID da instância a reciclar

Retorna:

  • Mensagem de sucesso/falha

14. show_instance(instance_id: int)

Mostra informações detalhadas sobre uma instância específica.

Parâmetros:

  • instance_id: ID da instância a mostrar

Retorna:

  • Informações detalhadas da instância incluindo:
    • Status e especificações
    • Detalhes de conexão (IP, SSH, Jupyter)
    • Custo e informações de tempo de execução
    • Detalhes de configuração

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

Obtém logs de uma instância.

Parâmetros:

  • instance_id: ID da instância para obter logs
  • tail (opcional): Número de linhas do final dos logs (padrão: "1000")
  • filter_text (opcional): Filtro grep para entradas de log
  • daemon_logs (opcional): Obter logs do sistema daemon em vez de logs do contêiner

Retorna:

  • Texto dos logs da instância ou mensagem de status

16. attach_ssh(instance_id: int)

Anexa uma chave SSH a uma instância para acesso seguro.

Parâmetros:

  • instance_id: ID da instância para anexar a chave SSH

Retorna:

  • Mensagem de sucesso/falha

Exemplos:

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

Notas:

  • Usa o arquivo de chave pública SSH configurado na variável de ambiente SSH_KEY_PUBLIC_FILE
  • Apenas chaves SSH públicas são aceitas (não chaves privadas)
  • A chave SSH deve começar com o prefixo 'ssh-' (ex.: ssh-rsa, ssh-ed25519)
  • Após anexar, você pode usar SSH na instância usando a chave privada correspondente

17. search_templates()

Busca modelos disponíveis na Vast.ai.

Parâmetros:

  • Nenhum

Retorna:

  • Lista de modelos disponíveis com:
    • ID e nome do modelo
    • Imagem Docker
    • Descrição (se disponível)
    • Variáveis de ambiente
    • Configuração do tipo de execução
    • Configurações de SSH e Jupyter

Exemplo:

# Get all available templates
search_templates()

Notas:

  • Modelos são ambientes pré-configurados que simplificam a criação de instâncias
  • Modelos podem incluir imagens Docker específicas, configurações de ambiente e scripts de inicialização

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

Executa um comando remoto (restrito) disponível apenas em instâncias paradas. Use ssh para executar comandos em instâncias em execução.

Parâmetros:

  • instance_id: ID da instância para executar o comando
  • command: Comando a executar (limitado a ls, rm, du)

Retorna:

  • Saída do comando ou mensagem de status

Comandos disponíveis:

  • ls: Listar conteúdo do diretório
  • rm: Remover arquivos ou diretórios
  • du: Resumir uso de dispositivo para um conjunto de arquivos

Exemplos:

# 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:

  • Funciona apenas em instâncias paradas
  • Para instâncias em execução, use ssh_execute_command
  • Limitado a comandos seguros específicos por segurança

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

Executa um comando em um host remoto via SSH.

Parâmetros:

  • remote_host: O nome do host ou endereço IP do servidor remoto
  • remote_user: O nome de usuário para conectar (ex.: 'root', 'ubuntu', 'ec2-user')
  • remote_port: O número da porta SSH (normalmente 22 ou porta personalizada como 34608)
  • command: O comando a executar no host remoto

Retorna:

  • Saída do comando com status de saída, stdout e stderr

Exemplo:

# 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 com qualquer servidor acessível via SSH, não apenas instâncias da Vast.ai
  • Usa o arquivo de chave privada SSH configurado na variável de ambiente SSH_KEY_FILE
  • Lida automaticamente com diferentes tipos de chaves SSH (RSA, Ed25519, ECDSA, DSS)
  • Retorna saída detalhada incluindo status de saída e tanto stdout quanto stderr

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

Executa um comando de longa duração em segundo plano em um host remoto via SSH usando nohup.

Parâmetros:

  • remote_host: O nome do host ou endereço IP do servidor remoto
  • remote_user: O nome de usuário para conectar (ex.: 'root', 'ubuntu', 'ec2-user')
  • remote_port: O número da porta SSH (normalmente 22 ou porta personalizada como 34608)
  • command: O comando a executar em segundo plano
  • task_name (opcional): Nome opcional para a tarefa (para identificação mais fácil)

Retorna:

  • Informações da tarefa incluindo ID da tarefa, ID do processo e caminho do arquivo de log

Exemplo:

# 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:

  • Retorna task_id e process_id para monitoramento
  • Cria arquivos de log no servidor remoto para captura de saída
  • Use ssh_check_background_task para monitorar o progresso
  • Use ssh_kill_background_task para interromper se necessário

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 o status de uma tarefa SSH em segundo plano e obtém sua saída.

Parâmetros:

  • remote_host: O nome do host ou endereço IP do servidor remoto
  • remote_user: O nome de usuário para conectar
  • remote_port: O número da porta SSH
  • task_id: O ID da tarefa retornado por ssh_execute_background_command
  • process_id: O ID do processo retornado por ssh_execute_background_command
  • tail_lines (opcional): Número de linhas de log recentes a mostrar (padrão: 50) Retorna:
  • Relatório de status com status do processo, saída de logs e informações de progresso

Exemplo:

# 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:

  • Mostra se a tarefa ainda está em execução ou foi concluída
  • Exibe a saída de logs recente da tarefa
  • Fornece a contagem total de linhas de log para indicação de progresso

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

Encerra uma tarefa SSH em segundo plano em execução.

Parâmetros:

  • remote_host: O nome do host ou endereço IP do servidor remoto
  • remote_user: O nome de usuário para conectar
  • remote_port: O número da porta SSH
  • task_id: O ID da tarefa retornado por ssh_execute_background_command
  • process_id: O ID do processo retornado por ssh_execute_background_command

Retorna:

  • Status da operação de encerramento e resultados da limpeza

Exemplo:

# 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:

  • Tenta o encerramento gracioso primeiro, depois força o encerramento se necessário
  • Limpa automaticamente os arquivos temporários de log e PID
  • Seguro de chamar mesmo se o processo já tiver sido concluído

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

Desativa o requisito de senha sudo para o grupo sudo em um host remoto via SSH.

Esta função modifica com segurança o arquivo sudoers para permitir acesso sudo sem senha para usuários no grupo sudo.

Parâmetros:

  • remote_host: O nome do host ou endereço IP do servidor remoto
  • remote_user: O nome de usuário para conectar (ex.: 'root', 'ubuntu', 'ec2-user')
  • remote_port: O número da porta SSH (normalmente 22 ou porta personalizada como 34608)

Retorna:

  • Status detalhado da modificação do sudoers, incluindo:
    • Configuração sudo anterior e nova
    • Resultados da validação
    • Localização do arquivo de backup

Exemplo:

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

Recursos de Segurança:

  • Cria backup automático do arquivo sudoers antes da modificação
  • Valida a sintaxe do sudoers com visudo -c após as alterações
  • Restaura automaticamente o backup se a validação falhar
  • Mostra a configuração antes/depois para verificação

Notas:

  • Modifica o sudoers para: %sudo ALL=(ALL) NOPASSWD: ALL
  • Requer que o usuário conectado tenha privilégios sudo
  • Os arquivos de backup são carimbados com data/hora por segurança
  • Funciona com qualquer sistema Linux acessível via SSH
  • Teste a alteração com sudo -l após a execução

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

Configura regras de automação MCP que controlam comportamentos automáticos durante a criação de instâncias.

Parâmetros:

  • auto_attach_ssh (opcional): Ativa/desativa o anexo automático de chave SSH para instâncias SSH/Jupyter
  • auto_label (opcional): Ativa/desativa a rotulagem automática de instâncias
  • wait_for_ready (opcional): Ativa/desativa a espera pela prontidão da instância após a criação
  • label_prefix (opcional): Define o prefixo para rótulos automáticos de instâncias

Retorna:

  • Status da configuração atual e quaisquer alterações feitas

Exemplo:

# 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 regras afetam o comportamento de create_instance e launch_instance_workflow
  • O anexo automático de SSH se aplica apenas quando SSH ou Jupyter está habilitado
  • A rotulagem automática cria rótulos com carimbo de data/hora quando nenhum rótulo é fornecido
  • Esperar pela prontidão monitora o status da instância até que ela se torne "running"

Configuração

Configuração da Chave de API

O servidor requer uma chave de API Vast.ai. Você pode configurá-la de várias maneiras:

  1. Variável de Ambiente:

    export VAST_API_KEY="your_api_key_here"
    
  2. Arquivo de Chave de API: Crie ~/.vastai_api_key com sua chave de API

  3. Codificada (para desenvolvimento): O servidor atual tem uma chave de API codificada para fins de teste

Executando o 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

Fluxos de Trabalho Comuns

1. Fluxo Básico de Criação de Instância

# 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. Gerenciamento de Instâncias

# 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. Encontrando Armazenamento

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

4. Gerenciamento Avançado de Instâncias

# 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. Monitoramento e Manutenção de Instâncias

# 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. Gerenciamento de Acesso 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. Navegação de Modelos

# Browse available templates
search_templates()

8. Execução de Comandos em Instâncias

# 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. Gerenciamento de Tarefas em 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. Fluxo Completo de Treinamento 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)

Sintaxe de Consulta

Ao pesquisar ofertas ou volumes, você pode usar estes operadores:

  • = ou == - Igual a
  • != - Diferente de
  • > - Maior que
  • >= - Maior ou igual a
  • < - Menor que
  • <= - Menor ou igual a

Exemplos de consultas:

  • "gpu_name=RTX_4090 num_gpus>=2" - RTX 4090 com 2 ou mais GPUs
  • "cpu_ram>64 reliability2>=99" - Alta RAM e confiabilidade
  • "dph_total<=1.0" - Custo abaixo de $1/hora

Tratamento de Erros

Todos os métodos incluem tratamento de erros e retornarão mensagens de erro descritivas se:

  • A chave de API estiver ausente ou inválida
  • Ocorrerem problemas de conectividade de rede
  • Parâmetros inválidos forem fornecidos
  • A API Vast.ai retornar erros

Verifique os logs do servidor para obter informações detalhadas de erro durante o desenvolvimento.