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/deleterunpodctl 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에서 직접 인용되었습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트