mcpField
Q
qzcli

qzcli

github.com/wanshuiyinクラウド・DevOps18.2k437 回インストール4 日前に更新
リポジトリ

qzcli について

qzcliは、启智プラットフォームのGPU計算ジョブを管理するコマンドラインスキルです。kubectlやdockerに似た操作方式で、リソース検索、対話式・スクリプトによるジョブ投入、一括投入、ジョブ管理を行えます。

主な機能

  1. 01ワークスペースと計算リソースの検索
  2. 02利用可能なノードの確認
  3. 03対話式またはCLIでのジョブ投入
  4. 04設定ファイルからの一括投入
  5. 05ジョブの一覧表示と停止
  6. 06JSON出力とドライランプレビュー

活用シーン

  1. 01学習前のGPU利用状況の確認
  2. 02启智プラットフォームへの学習ジョブ投入
  3. 03設定に基づく複数ジョブの起動
  4. 04複数ワークスペースの実行中ジョブ管理

MCP 対応

任意の `qzcli-mcp` 統合により、Claude CodeまたはCodexからqzcliをMCPツールとして利用できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wanshuiyin/auto-claude-code-research-in-sleep --skill qzcli

インストール後、Claude Code で/qzcliを入力して読み込まれたか確認します。

詳細

qzcli — 启智プラットフォームのタスク管理

Qizhi(启智)プラットフォームでGPUコンピューティングジョブを管理する、kubectl/docker風のCLIです。

GitHub: tianyilt/qzcli_tool

環境コントラクト

Qizhiは、../shared-references/compute-env-contract.mdにおけるスケジューラークラスター型です。 イメージはプラットフォーム外でビルドされ、送信時に指定されるため、宣言型の 環境仕様とenv:<name>@<specHash>台帳(.aris/compute/qizhi.md)によって、 「どのイメージにどのスタックが含まれているか」を把握できます。 長時間実行のためにイメージを信頼する前に、送信したジョブ内でカーネルの証拠を実行してください(ログイン側では実行しないでください)。

インストール

pip install rich requests prompt_toolkit mcp
git clone https://github.com/tianyilt/qzcli_tool
cd qzcli_tool && pip install -e .
MCP 連携(任意)

Claude CodeまたはCodexからqzcliをMCPツールとして直接使用するには:

# Claude Code
claude mcp add qzcli -- qzcli-mcp

# Codex
codex mcp add qzcli -- qzcli-mcp

設定

認証情報は次の優先順位で読み込まれます: CLI args > --password-stdin > env vars > QZCLI_ENV_FILE (.env) > ~/.qzcli/config.json > interactive input

# Option A: env file (recommended)
mkdir -p ~/.qzcli
cat > ~/.qzcli/.env <<'EOF'
QZCLI_USERNAME="your_username"
QZCLI_PASSWORD="your_password"
EOF

# Option B: environment variables
export QZCLI_USERNAME="your_username"
export QZCLI_PASSWORD="your_password"
export QZCLI_API_URL="https://qz.yourorg.edu.cn"

設定ファイルは~/.qzcli/に保存されます:config.json、.cookie、resources.json、jobs.json。


クイックスタート

# 1. Login
qzcli login

# 2. Discover and cache workspaces/compute groups (run once, re-run after joining new workspaces)
qzcli res -u

# 3. Check available nodes
qzcli avail

# 4. List running jobs
qzcli ls -c -r

認証

# Interactive login
qzcli login

# With credentials
qzcli login -u YOUR_USERNAME -p 'YOUR_PASSWORD'

# Read password from stdin (for scripts)
echo 'YOUR_PASSWORD' | qzcli login -u YOUR_USERNAME --password-stdin

# Check current cookie
qzcli cookie --show

# Clear cookie
qzcli cookie --clear

注: 認証情報が設定されている場合、qzcli availはCookieの期限切れ時に自動更新します。


リソースの検出

# List cached workspaces
qzcli res --list

# Refresh all workspace resource cache (run this first!)
qzcli res -u

# Refresh a specific workspace
qzcli res -w MY_WORKSPACE -u

# Set a human-readable alias for a workspace
qzcli res -w ws-xxxxxxxx --name "My Workspace"

利用可能なノードの確認

# All workspaces
qzcli avail

# Including low-priority task nodes (slower but more accurate)
qzcli avail --lp

# Specific workspace
qzcli avail -w MY_WORKSPACE

# Find compute groups with N free nodes
qzcli avail -n 4

# Export IDs for scripting
qzcli avail -n 4 -e

# Show idle node names
qzcli avail -w MY_WORKSPACE -v

ジョブの送信

対話形式(初回の使用におすすめ)
# Full interactive selection: workspace → project → compute group → spec
qzcli create -i

# Interactive for a specific workspace only
qzcli create -i -w "My Workspace"

TUIでは各階層にGPUの種類、空き状況、仕様のステータスが表示されます。Enter/→を押すと下の階層に進み、←を押すと戻ります。

非対話形式
# Using names (resolved from qzcli res cache)
qzcli create \
  --name "my-training-job" \
  --command "bash /path/to/train.sh" \
  --workspace "My Workspace" \
  --compute-group "My Compute Group" \
  --image YOUR_REGISTRY/team/image:tag \
  --instances 4 \
  --priority 10

# Using IDs directly
qzcli create \
  --name "my-job" \
  --command "bash /path/to/train.sh" \
  --workspace ws-YOUR_WORKSPACE_ID \
  --compute-group lcg-YOUR_LCG_ID \
  --spec YOUR_SPEC_ID \
  --image YOUR_REGISTRY/team/image:tag \
  --instances 4

主なパラメーター:

パラメーターデフォルト説明
--name / -nrequiredジョブ名
--command / -crequired実行するコマンド
--workspace / -wワークスペース名またはID(ws-...)
--compute-group / -gautoコンピューティンググループ名またはID(lcg-...)
--spec / -sautoリソース仕様ID
--image / -mDockerイメージ
--instances1インスタンス数
--shm1200共有メモリ(GiB)
--priority10優先度(1~10)
--dry-runプレビューのみ。送信しません
--jsonスクリプト用のJSON出力
# Preview before submitting
qzcli create --name test --command "echo hi" --workspace "My Workspace" \
  --image YOUR_IMAGE --dry-run
環境変数の受け渡し(既存の送信スクリプト向け)
# Pass vars directly — do NOT use "export VAR; bash script.sh"
WORKSPACE_ID="ws-YOUR_WORKSPACE_ID" \
LCG_ID="lcg-YOUR_LCG_ID" \
SPEC_ID="YOUR_SPEC_ID" \
CHECKPOINT_DIR="/path/to/checkpoint" \
bash YOUR_SUBMIT_SCRIPT.sh
HPC / CPUジョブ(Slurm)
qzcli hpc \
  --name "my-cpu-job" \
  --workspace ws-YOUR_WORKSPACE_ID \
  --compute-group lcg-YOUR_LCG_ID \
  --predef-quota-id YOUR_QUOTA_ID \
  --cpu 55 --mem-gi 300 --instances 30 \
  --image YOUR_REGISTRY/team/cpu-image:tag \
  --entrypoint "cd /path/to/dir && bash run.sh"

バッチ送信

# Submit from config file
qzcli batch batch_config.json --delay 3

# Preview all jobs
qzcli batch batch_config.json --dry-run

# Continue on error
qzcli batch batch_config.json --continue-on-error

設定形式(batch_config.json):

{
  "defaults": {
    "workspace": "ws-YOUR_WORKSPACE_ID",
    "compute_group": "lcg-YOUR_LCG_ID",
    "spec": "YOUR_SPEC_ID",
    "image": "YOUR_REGISTRY/team/image:tag",
    "instances": 4,
    "priority": 10
  },
  "matrix": {
    "checkpoint": ["/path/to/ckpt1", "/path/to/ckpt2"],
    "step": [50000, 100000]
  },
  "name_template": "eval-{checkpoint_basename}-step{step}",
  "command_template": "bash eval.sh --checkpoint {checkpoint} --step {step}"
}

マトリックスキーは直積として展開されます(上記の例では2×2=4ジョブ)。パスのベース名には{key_basename}を使用してください。

シェルループ(別の方法)
for step in 040000 050000 060000; do
  qzcli create \
    --name "eval-step${step}" \
    --command "bash eval.sh --step $step" \
    --workspace "My Workspace" \
    --compute-group "My Compute Group" \
    --instances 4
  sleep 3
done

ジョブ管理

# List jobs
qzcli ls -c -w MY_WORKSPACE          # specific workspace
qzcli ls -c --all-ws                 # all workspaces
qzcli ls -c -w MY_WORKSPACE -r       # running only
qzcli ls -c -w MY_WORKSPACE -n 50    # show 50

# Stop a job
qzcli stop JOB_ID

# Job status / details
qzcli status JOB_ID

# Watch all running jobs (refresh every 10s)
qzcli watch -i 10

# Workspace view with GPU utilization
qzcli ws
qzcli ws -a           # all projects
qzcli ws -p "My Project"

トラブルシューティング

問題原因対処方法
Cookieの期限切れセッションの空白期間qzcli loginを再実行します
未找到名称为 'xxx' 的工作空间キャッシュが古いqzcli res -uを実行します
create -iでリソースが表示されないキャッシュが空qzcli login && qzcli res -uを実行します
qzcli-mcpが見つからないインストールされていないcd qzcli_tool && pip install -e .を実行します
仕様がワークスペースにないIDの不一致仕様IDを正しいワークスペースに合わせます
ジョブがエラーなく失敗するスクリプトのsys.exit(0)ジョブログを直接確認します
zshのグロブエラーリモートシェルがzshコマンドをbash -cで囲むか、Pythonを使用します

コメント