인스턴스 — 산 시간 위에서 돌리기
풀이 보유한 시간에 배정된 노드 위에서 도는 내 컨테이너가 인스턴스예요. 노드 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 |
| mode | ssh(기본): sshd가 주 프로세스, 조직 SSH 공개키로 root 접속 · custom: 이미지의 명령(또는 command)이 주 프로세스, SSH 없음 |
| startup_script | ssh 모드에서 컨테이너가 뜨면 백그라운드로 실행(/root/rerent-startup.log) |
| command | custom 모드의 주 프로세스 명령(셸 한 줄 또는 배열) |
| env | 환경변수. RERENT_*·NVIDIA_* 접두는 예약 |
| ports | 노드 공인 IP의 임의 포트로 열 컨테이너 포트(22는 ssh 모드가 써요). 열린 포트는 인스턴스 응답의 ports 와 노드 접속 정보로 확인 |
| priority | 1(낮음)~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·자기 서버) 보내세요. 되팔면 그 시간의 노드는 시작 시각에 회수되니 미리 저장하세요.