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
- Instale o uv (gerenciador de pacotes Python):
brew install uv
Instale o Servidor MCP da Vast.ai
-
Clone o repositório:
git clone https://github.com/your-repo/vastai-mcp.git cd vastai-mcp -
Instale as dependências usando uv:
uv sync -
Instale o servidor como uma ferramenta:
uv tool install -e . # Install from current directory
Configuração
-
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
-
Configure o cliente MCP (para Claude Desktop ou outros clientes MCP):
Atualize seu arquivo de configuração MCP (
~/.cursor/mcp.jsonpara 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
- 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:
-
Gere um par de chaves SSH (se você não tiver um):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -
Verifique se os arquivos de chave existem:
ls -la ~/.ssh/id_rsa*Você deve ver tanto o arquivo
id_rsa(privado) quanto oid_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.aia 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ânciabid_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=valorlimit(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 rotularlabel: 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áriasimage: Imagem Docker a executarregion(opcional): Preferência de região geográficadisk(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é-pagaramount: 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 logstail(opcional): Número de linhas do final dos logs (padrão: "1000")filter_text(opcional): Filtro grep para entradas de logdaemon_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 comandocommand: 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óriorm: Remover arquivos ou diretóriosdu: 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 remotoremote_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 remotoremote_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 planotask_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 remotoremote_user: O nome de usuário para conectarremote_port: O número da porta SSHtask_id: O ID da tarefa retornado por ssh_execute_background_commandprocess_id: O ID do processo retornado por ssh_execute_background_commandtail_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 remotoremote_user: O nome de usuário para conectarremote_port: O número da porta SSHtask_id: O ID da tarefa retornado por ssh_execute_background_commandprocess_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 remotoremote_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 -capó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 -lapó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/Jupyterauto_label(opcional): Ativa/desativa a rotulagem automática de instânciaswait_for_ready(opcional): Ativa/desativa a espera pela prontidão da instância após a criaçãolabel_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:
-
Variável de Ambiente:
export VAST_API_KEY="your_api_key_here" -
Arquivo de Chave de API: Crie
~/.vastai_api_keycom sua chave de API -
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.