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-lines形式({source,line,ts})で出力され、jq などのツールにパイプできます。

ログ処理 – ポッドおよびエンドポイントのログは、別途のAPIエンドポイントからJSON-lines形式({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から直接引用されています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト