인스턴스 — 산 시간 위에서 돌리기

풀이 보유한 시간에 배정된 노드 위에서 도는 내 컨테이너가 인스턴스예요. 노드 1대 = 인스턴스 1개(그 노드의 GPU 전부). 배정 시간이 끝나면 자동으로 파기됩니다.

만들기

인스턴스 → 인스턴스 만들기 또는:

curl -s $RERENT/v1/instances -H "Authorization: Bearer $RERENT_TOKEN" -H 'content-type: application/json' -d '{
  "pool":"default","count":1,"name":"train-llama",
  "image":"pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel",
  "mode":"ssh","startup_script":"pip install -U transformers\n",
  "env":{"HF_TOKEN":"hf_…"},"ports":[8000],"priority":3
}'
항목
pool어느 풀의 시간 위에 띄울지
sku풀에 SKU가 하나면 생략
count몇 개(1~64). 배정된 노드 수까지만 동시에 뜨고 나머지는 대기
image도커 이미지. 공개 레지스트리(Docker Hub·NGC·GHCR). GPU 드라이버는 노드 것이라 CUDA 12.x 이미지 권장. 프리셋은 GET /v1/instances/presets
modessh(기본): sshd가 주 프로세스, 조직 SSH 공개키로 root 접속 · custom: 이미지의 명령(또는 command)이 주 프로세스, SSH 없음
startup_scriptssh 모드에서 컨테이너가 뜨면 백그라운드로 실행(/root/rerent-startup.log)
commandcustom 모드의 주 프로세스 명령(셸 한 줄 또는 배열)
env환경변수. RERENT_*·NVIDIA_* 접두는 예약
ports노드 공인 IP의 임의 포트로 열 컨테이너 포트(22는 ssh 모드가 써요). 열린 포트는 인스턴스 응답의 ports 와 노드 접속 정보로 확인
priority1(낮음)~4(최우선). 노드보다 인스턴스가 많으면 높은 것부터 시작, 할당이 줄면 낮은 것부터 종료

컨테이너 안에는 RERENT_INSTANCE_ID RERENT_POOL RERENT_SKU RERENT_GPU_COUNT 가 환경변수로 들어가요.

상태

state
awaiting_allocation대기 — 배정된 빈 노드가 없거나 아직 시작 시각 전. state_reason 에 이유
starting노드에서 이미지를 받아 컨테이너를 띄우는 중(보통 30초~수 분 · 큰 이미지는 더)
running실행 중. ssh 모드면 ssh.command 로 접속
stopping종료 중
terminated끝남(배정 종료·사용자 종료·되팔기로 할당 축소)
failed컨테이너가 죽었거나 20분 안에 뜨지 않음. 로그 보고 「교체」

접속

ssh -p 31245 root@203.0.113.12      # 인스턴스 응답의 ssh.command
nvidia-smi

조직 설정 → SSH 공개키에 등록된 키 전부가 들어가요. 키를 추가/삭제하면 돌고 있는 인스턴스에도 바로 반영됩니다. 비밀번호 로그인은 꺼져 있어요.

custom 모드거나 SSH가 안 될 때: GET /v1/instances/{id}/logs?tail=300 · POST /v1/instances/{id}/exec {"cmd":"nvidia-smi"} (50초 이내 명령 한 번).

자동 시작(풀 템플릿)

풀마다 자동 시작 템플릿을 켜 두면, 그 풀에 노드가 배정되고 비어 있을 때(대기 인스턴스가 없을 때) 그 설정으로 인스턴스를 자동으로 만들어 띄워요. 미래 시각에 사 둔 시간이 시작될 때 손대지 않아도 뜨게 하려면 이걸 켜세요.

curl -s -X PATCH $RERENT/v1/pools/default -H "Authorization: Bearer $RERENT_TOKEN" -H 'content-type: application/json' \
  -d '{"launch_template":{"enabled":true,"image":"vllm/vllm-openai:latest","mode":"custom","command":"python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-3.1-8B","ports":[8000]}}'

종료·교체

  • DELETE /v1/instances/{id} — 컨테이너 파기. 노드 시간은 남아 다른 인스턴스가 쓸 수 있어요.
  • POST /v1/instances/{id}/replace — 지금 것을 종료하고 같은 설정의 새 인스턴스를 대기열에.

데이터

컨테이너 파일시스템은 인스턴스와 함께 사라져요. 산출물은 배정이 끝나기 전에 밖으로(S3·HF Hub·자기 서버) 보내세요. 되팔면 그 시간의 노드는 시작 시각에 회수되니 미리 저장하세요.