Documentación

Imágenes

Qué arranca una máquina: una imagen de Arrakis con SSH y las herramientas habituales, o una imagen propia, pública o privada.

Imágenes de Arrakis

Una máquina arranca una imagen de Arrakis salvo que elijas otra. Cada una es una imagen base oficial a la que se añaden SSH, un banner de inicio de sesión y herramientas de uso diario: git, git-lfs, tmux, htop, nvtop, rsync, curl, wget, jq y un editor. Python está en el PATH en todas las sesiones SSH.

ImagenQué contieneImagen de Docker
PyTorch 2.14 (predeterminada)PyTorch 2.14.1, CUDA 13.0, Python 3.12, Ubuntu 24.04goodailabs/arrakis:pytorch-2.14.1-cuda13.0
PyTorch 2.14 con el kit de herramientas CUDALo mismo, más nvcc, las cabeceras de CUDA y un compiladorgoodailabs/arrakis:pytorch-2.14.1-cuda13.0-devel
Kit de herramientas CUDA 13.0CUDA 13.0.3, cuDNN 9, nvcc, Python 3.12, Ubuntu 24.04goodailabs/arrakis:cuda-13.0.3-devel
Ubuntu 26.04Python 3.14. El controlador de la GPU viene de la máquinagoodailabs/arrakis:ubuntu-26.04

CUDA 13.0 es la versión que trae pip install torch, así que los paquetes wheel compilados para PyTorch son compatibles. Funciona en todas las máquinas de Arrakis, incluidas las Blackwell: todas tienen un controlador de NVIDIA de la serie 580 o posterior. Las imágenes son públicas en Docker Hub, así que puedes descargar la misma en tu propio equipo; goodailabs/arrakis:latest es la predeterminada.

Al iniciar sesión se muestran las GPU de la máquina, la imagen y el espacio libre en disco:

Configuración
  6 × NVIDIA RTX A4000, 16 GB each
  PyTorch 2.14.1, CUDA 13.0, Python 3.12.3, Ubuntu 24.04.5 LTS
  32 CPU cores, 125 GB memory, 412 GB free in /workspace

Trabaja en /workspace. Todo lo que hay en una máquina, /workspace incluido, se borra cuando se detiene.

Tus propias imágenes

Funciona cualquier imagen: vLLM, SGLang, contenedores de NVIDIA NGC o la imagen propia de tu equipo, pública o privada.

  • En Images, elige Add an image y pégala tal como la recibe docker pull, por ejemplo vllm/vllm-openai:v0.11.0. Para una imagen pública, también puedes elegir Your own image al alquilar.
  • Arrakis consulta primero el registro de la imagen: la imagen debe existir, poder descargarse y tener una compilación para linux/amd64. Una errata o un token incorrecto se rechazan antes de cobrar nada.
  • Registros: Docker Hub, GitHub (ghcr.io), Amazon ECR y ECR Public, Google (Artifact Registry y gcr.io), Azure (azurecr.io), NVIDIA NGC (nvcr.io), Quay, GitLab y Microsoft (mcr.microsoft.com), o el tuyo propio: Harbor, Artifactory, Nexus, un GitLab o Quay autoalojado, o cualquier registro con su nombre DNS público, como registry.example.com:5000/team/app:v1.
  • SSH se añade a cualquier imagen al arrancar, así que siempre inicias sesión como root de la misma forma. La imagen necesita un shell.
  • El primer arranque en una máquina descarga la imagen. Las imágenes grandes tardan más: una imagen de 12 GB puede tardar de 10 a 20 minutos en una red lenta.

Imágenes privadas

Marca It's private: log in to pull it al añadir la imagen e indica las credenciales que usarías con docker login. Arrakis comprueba la imagen con ellas antes de guardarla, las mantiene cifradas y solo las usa para descargar esta imagen cuando alquilas. La contraseña no se vuelve a mostrar.

RegistroNombre de usuarioContraseña o token
Docker HubTu nombre de usuario de Docker HubUn token de acceso personal de solo lectura
GitHub (ghcr.io)Tu nombre de usuario de GitHubUn token clásico solo con read:packages
Amazon ECR (<account>.dkr.ecr.<region>.amazonaws.com)Un ID de clave de accesoSu clave de acceso secreta
Google (<region>-docker.pkg.dev, gcr.io)_json_keyLa clave JSON de una cuenta de servicio con el rol Artifact Registry Reader
Azure (<name>.azurecr.io)Un token de repositorio o una entidad de servicioSu contraseña, con permiso solo de descarga
NVIDIA NGC (nvcr.io)$oauthtokenTu clave de API de NGC
GitLab (registry.gitlab.com)El nombre de usuario de un token de despliegueEl token de despliegue, con read_registry
QuayUna cuenta de robotSu token
Tu propio registroEl nombre de usuario que pidaSu contraseña o token
  • Amazon ECR: usa un usuario de AWS que solo pueda descargar imágenes (la política AmazonEC2ContainerRegistryReadOnly). Cada vez que alquilas, Arrakis cambia la clave por unas credenciales de descarga nuevas válidas durante 12 horas, las que imprime aws ecr get-login-password, así que la máquina nunca ve la clave.
  • Tu propio registro: las máquinas descargan directamente de él, estén donde estén, así que debe responder en internet público por HTTPS con un certificado de una autoridad pública (como Let's Encrypt). Un registro detrás de una VPN o de una lista de IP permitidas no es accesible, y uno con un certificado autofirmado se rechaza.
  • Usa un token que solo pueda leer. La máquina descarga la imagen con él, y la imagen puede quedarse en caché en esa máquina después de que termine tu alquiler, así que no metas secretos en la imagen: pásalos cuando se ejecute.
  • Para cambiar un token, elige Change login junto a la imagen o vuelve a guardar la misma imagen con el nuevo. Al eliminar la imagen se borran sus credenciales de todos los sitios donde Arrakis las guardaba.

Al arrancar

OpciónQué se ejecutaÚsala para
Wait for me to log in (predeterminada)Nada. La máquina te esperaEntrenamiento, notebooks, cualquier cosa que inicies por SSH
Run the image's commandEl punto de entrada y el comando propios de la imagenServidores como vLLM, TGI o SGLang
Run a commandUna sola línea que tú indicas, como python -m http.server 8000Un trabajo que arranca solo

Si el comando termina, ya no se puede acceder a la máquina. En caso de duda, elige Wait for me to log in.

Accede a un servidor de la máquina a través de SSH:

Shell
ssh -L 8000:localhost:8000 root@<host> -p <port>
curl localhost:8000/v1/models

Variables de entorno

Añade pares KEY=value a una imagen, uno por línea. Se guardan con la imagen, así que no pongas secretos en ellos: defínelos por SSH, por ejemplo con export HF_TOKEN=... en tu sesión.

Desde la CLI, la API y los agentes

Shell
arrakis images list
arrakis images add vllm/vllm-openai:v0.11.0 --start image
arrakis instances create --node-id <node> --image vllm/vllm-openai:v0.11.0 --start image --termination-hours 2

Una imagen privada lleva sus credenciales, con el token por stdin, como lo recibe docker login:

Shell
echo "$GITHUB_TOKEN" | arrakis images add ghcr.io/acme/trainer:v3 --username acme-bot --password-stdin
arrakis instances create --node-id <node> --template-id <image id> --termination-hours 2
Shell
curl -X POST $ARRAKIS_URL/v1/instances -H "Authorization: Bearer $ARRAKIS_TOKEN" -H "Content-Type: application/json" \
  -d '{"node_id": "<node>", "name": "vllm", "termination_hours": 2, "ssh_public_key": "ssh-ed25519 AAAA...",
       "image": "vllm/vllm-openai:v0.11.0", "start": "image"}'
  • GET /v1/templates lista las imágenes de Arrakis y las tuyas; POST /v1/templates guarda una (image, start, command, environment y, para una imagen privada, registry_username y registry_password). La contraseña es de solo escritura: las respuestas muestran private y registry_username. PATCH /v1/templates/{id} con ambos reemplaza las credenciales.
  • POST /v1/instances arranca template_id o cualquier image pública con un start.
  • Por MCP, list_images las lista, con las privadas marcadas, y rent_gpu acepta template_id o image.

¿Eres un agente? Esta página en Markdown.