runpod/runpodctl

interact with Runpod via the cli

runpodctl – Runpod GPU 리소스용 CLI

무엇인가요 – runpodctl는 Runpod 플랫폼(runpod.io)과 통신하는 명령줄 클라이언트입니다. GPU 기반의 포드를 생성, 목록 조회, 시작, 중지, 삭제할 수 있으며, Runpod 인프라에서 실행되는 서버리스 "엔드포인트"(함수)도 관리할 수 있습니다. 모든 복잡한 작업(예: API 호출, 인증, 로그 스트리밍)은 간단한 명령어 뒤에 숨겨져 있습니다.

왜 사용할까 – 학습, 추론 또는 기타 AI 워크로드에 즉시 GPU 컴퓨팅이 필요할 때, Runpod은 클라우드 머신을 제공합니다. runpodctl을 사용하면 직접 HTTP 요청을 작성하지 않고도, 머신을 빠르게 시작하고, 로그를 확인하며, 파일을 전송하고, 서버리스 함수를 호출할 수 있는 스크립트 가능한 방법을 제공합니다.

설치 방법 – 도구는 여러 가지 방식으로 설치할 수 있습니다:

  • Linux/macOS(WSL 포함)용 원라인 스크립트: wget -qO- cli.runpod.net | sudo bash
  • macOS용 Homebrew: brew install runpod/runpodctl/runpodctl
  • Windows PowerShell 스크립트: zip 파일을 다운로드하여 %LOCALAPPDATA%\runpodctl에 추출하고, PATH에 추가합니다.
  • Conda-forge(conda, mamba, pixi): conda install conda-forge::runpodctl (mamba/pixi의 동등한 명령어도 사용 가능).

기본 워크플로우

# API 키 설정 (한 번만)
runpodctl config --apiKey=YOUR_KEY

# 현재 존재하는 리소스 확인
runpodctl pod list
runpodctl pod get POD_ID

# 새로운 GPU 포드 생성
runpodctl pod create \
  --image=runpod/pytorch:2.8.0-py3.11-cuda12.8.1-cudnn-devel-ubuntu22.04 \
  --gpu-id=NVIDIA_A100

# 포드 생명주기 제어
runpodctl pod start POD_ID
runpodctl pod stop POD_ID
runpodctl pod delete POD_ID

서버리스 엔드포인트 – 서버리스 제품용으로도 유사한 명령어가 존재합니다:

  • runpodctl serverless list / create / update / delete
  • runpodctl serverless run ID --input '{"prompt":"hello"}'로 함수를 호출하고 결과를 기다립니다.
  • 로그 스트리밍(runpodctl serverless logs ID)은 포드 로그와 동일하게 작동하며, JSON-라인 형식({source,line,ts})으로 출력되어 jq와 같은 도구에 파이프할 수 있습니다.

로그 처리 – 포드 및 엔드포인트 로그는 별도의 API 엔드포인트에서 JSON-라인 형식({source,line,ts})으로 스트리밍됩니다. 선택적 플래그도 사용 가능합니다:

  • --tail N – 각 소스의 마지막 N 줄을 표시.
  • --follow – 스트림을 열어두고 계속 유지.
  • --since <duration> – 시간 기준으로 필터링.
  • --source system|container – 플랫폼 출력 또는 워크로드 출력 중 선택.

리소스 대기 – pod create 또는 serverless create에 --wait를 추가하면, 리소스가 실제로 사용 가능해질 때까지 대기합니다(포드는 SSH, 엔드포인트는 헬스체크). --wait-timeout로 타임아웃 시간을 조정할 수 있습니다.

파일 전송 – runpodctl send FILE는 짧은 코드를 생성합니다. 상대방은 runpodctl receive CODE를 실행하여 croc 프로토콜을 사용해 파일을 다운로드합니다. 경로 검증을 통해 현재 디렉터리 외부에 쓰는 것을 방지합니다.

출력 형식 – 기본적으로 명령어는 JSON을 출력하지만, --output=yaml로 YAML 형식을 요청할 수 있습니다. 잘못된 형식 이름은 명확한 오류 메시지와 함께 거부됩니다.

에러 처리 – 에러는 code(usage_error, wait_timeout 등)와 인간이 읽을 수 있는 error 필드를 포함한 JSON 객체로 반환됩니다. 종료 코드는 다음과 같은 규칙을 따릅니다: 성공은 0, 실패, 타임아웃, 작업 실패는 비제로입니다.

누가 이득을 볼까 – 데이터 과학자, ML 엔지니어, 또는 Runpod의 GPU 포드 및 서버리스 엔드포인트를 프로그래밍 방식으로 제어해야 하는 모든 사람들은 스크립트, CI 파이프라인, 또는 인터랙티브 세션에 이 명령어를 포함시킬 수 있습니다.


위의 모든 세부 정보는 runpod/runpodctl 리포지토리의 README에서 직접 인용되었습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트