huawei-cloud-cloudrobo-infer について
huawei-cloud-cloudrobo-inferは、cloudroboコマンドラインまたはPython SDKでCloudRoboの推論サービスをデプロイ、運用するスキルです。モデルの選択、デプロイ設定、サービス状態、ログを扱い、モデルの取得元に応じた手順を備えています。
主な機能
- 01モデルを推論サービスとしてデプロイ
- 02ワークスペース、モデル、プール、フレーバーの解決
- 03デプロイ状態の監視
- 04サービスの開始、停止、更新、削除
- 05時間とキーワードによるログ検索
活用シーン
- 01モデルを推論サービスとして公開
- 02デプロイ済みサービスの運用
- 03ログを使ったサービス状況の診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-cloudrobo-inferインストール後、Claude Code で/huawei-cloud-cloudrobo-inferを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdcli-installation-guide.mddataflow-diagram.mdiam-policies.mdservice-config-catalog.mdvalidation-rules.mdverification-method.mdscripts/test-cli-commands.shtemplates/test-vars.json詳細
Windows / PowerShell: 例では bash 構文を使用しています。Windows PowerShell で実行するには:
\による行継続を1行にまとめるか、行末にバッククォートを付けてください。export NAME="value"の代わりに$env:NAME="value"で環境変数を設定してください。- シングルクォートで囲んだ JSON
'{"a":"b"}'はそのまま使えます。
概要
cloudrobo-infer スキルは、CloudRobo の推論サービス(モデルサービング/推論サービスとも呼ばれます)のライフサイクル全体を管理します。--model-json JSON オブジェクトとして渡された model_id と model_version_id で特定されるモデルを、長時間稼働する推論サービスにデプロイし、そのサービスの監視と運用(起動/停止/更新/削除/ログ)を行えます。また、wait-deploy を使ってサービスのステータスが DEPLOYING でなくなるまでポーリングし(status != "DEPLOYING")、その時点の別の状態(例:RUNNING、FAILED、STOPPED)を返せます。
注:
wait-deployはDEPLOYINGフェーズのみを待機します。CREATINGの間は待機しません。 正確な動作については、Wait-Deploy のリファレンスを参照してください。
適用シナリオ:
- モデルのデプロイ — モデルを推論サービスとしてデプロイします(create → wait-deploy)
- Wait-Deploy — サービスのステータスが
DEPLOYINGでなくなるまで5秒ごとにポーリングします(間隔5秒、デフォルト600秒) - サービスの運用・保守 — デプロイ済みサービスの一覧表示、詳細表示、設定更新、起動/停止を行います
- ログの診断 — ミリ秒単位の時間範囲とキーワードフィルターを使って
list-logsを実行します - スキル間のオーケストレーション —
cloudrobo-trainがエクスポートしたモデルを利用し、具現化タスク向けにrobo-dispatcherへサービスを公開します(infer_service_id経由)。
アーキテクチャ:
Agent / LLM
│
├── CLI → cloudrobo infer <command>
└── SDK → InferClient (Python)
│
▼
cloudrobo-service (REST API)
/v1/infer-services/*
すべての操作は cloudrobo-service バックエンドを対象とし、有効な workspace_id が必要です(明示的に指定しない場合はデフォルトのワークスペースが使用されます)。サービスのデプロイではコンピューティング(プール)リソースを消費するため、長時間稼働するサービスを開始する前に必ず確認してください。
前提条件
- CLI のインストール、AK/SK 認証、ワークスペースの設定については、
references/cli-installation-guide.mdを参照してください。 - 有効な
workspace_id(cloudrobo workspace currentまたはlist+useで解決します)。 - デプロイ可能なモデル:
model_id(=asset_id)+model_version_id(=latest_version_id)を、単一の--model-json引数としてcreateに渡します:--model-json '{"model_id": "<asset_id>", "model_version_id": "<latest_version_id>"}'。 モデルのshow-asset出力で、ONLINE_DEPLOYMENTアクションのstatusが"ENABLE"である必要があります。DRAFT/CREATINGステータスのモデルはデプロイできません(403 エラー)。 - コンピューティングプール:
pool_id(resource_idにpool-を付けたもの、つまりpool-<resource_id>)+pool_type+flavor。cloudrobo resource list-pools --resource-type MODELARTSで確認します。status: "AVAILABLE"のプールのみ使用できます。 createでは--stop-schedule-jsonが実質的に必須です(CLI での必須指定ではありません)。 形式:{"duration": <N>, "time_unit": "MINUTES"}。
ワークフロー
自然言語優先の原則
以下の各ワークフローは、手動での CLI/SDK オーケストレーションではなく、ユーザーの意図(1~2文)から始まります。その後、スキルが該当するコマンドチェーンを実行し、状態のフィードバック(ステータスの変化、ポーリングの進捗)を報告します。
モデルのデプロイワークフロー(対話形式のパラメーター解決)
シナリオ:「推論サービスを作成したい」/「モデル X を推論サービスとしてデプロイしてください。」
基本原則:必要なパラメーターをそれぞれ確認 → 選択肢を提示 → ユーザーに選んでもらう → 完全なコマンドを組み立てる → 実行する。
-
ワークスペースを解決する —
cloudrobo workspace current。- デフォルトのワークスペースが設定されている場合 →
workspace_idとasset_catalog_idをそのまま使います。 - 設定されていない場合 →
cloudrobo workspace list→ ワークスペース名と ID をユーザーに提示 →cloudrobo workspace use --workspace-id <id>→currentを再実行して確認します。
- デフォルトのワークスペースが設定されている場合 →
-
モデルのソースとタイプを確認する — 次の順序で、ユーザーに2つの質問をします。
- ソース(どこを検索するか。最初に質問):具身广场(具身广场)、ワークスペースアセット (空间资产)、またはカスタム(自定义)。ソースによって、以下のパラメーターの方針がすべて決まります — 具身广场のモデルはプラットフォームで事前設定されているため、必須のコアパラメーターのみを指定する必要があります。ワークスペースアセット/カスタムモデルでは、自動検出フローを実行します。
- タイプ(
ext_metadata.model_typeに基づく。2番目に質問):知覚(感知)、vln(導航)、 vla(操作)、計画(规划)。 - ユーザーの指定が曖昧な場合(例:「so101 関連のモデル」)→ 両方の質問を省略し、
search-assetsでキーワードをグローバル検索します。 - ソースが判明したら、
createを組み立てる前に、すぐに該当するパラメーター方針へ進みます。 Model Source → Parameter Policy の表を参照してください。
-
モデルを検索する — ユーザーの選択に基づいて検索します。
- 具身广场:
cloudrobo asset list-publication-assets --type model --actions ONLINE_DEPLOYMENT --action-status ENABLE(オンラインデプロイが有効な RELEASE モデルを返します)。 - ワークスペースアセット:
cloudrobo asset list-assets --catalog-id <asset_catalog_id> --type model(注:ワークスペースの--catalog-idを使用してください。--repository-idは使用しないでください)。 - キーワード検索:
cloudrobo asset search-assets --keyword "<keyword>" --type model。 - 該当するモデル(名前、asset_id、ステータス、model_type)をユーザーに提示し、選択してもらいます。
- 具身广场:
-
モデルのバージョンを解決する —
cloudrobo asset show-asset --asset-id <asset_id>。latest_version_idを使用して、--model-jsonのmodel_version_idフィールドに設定します。version_count > 1の場合 →cloudrobo asset list-versions --asset-id <id>→ ユーザーに選択してもらいます。- デプロイ可能か確認する:
actions配列を確認します —ONLINE_DEPLOYMENTのstatus: "ENABLE"が必要です。DISABLEの場合、モデルはデプロイできません(403 エラー)。 - モデルのステータスを確認する:ステータスは
RELEASE(广场)または公開済み状態である必要があります。DRAFT/CREATINGモデルは 403 "Model asset permission deny" で拒否されます。
-
デプロイパラメーターを自動検出する — ワークスペースアセット/カスタムモデルのみ。 具身广场のモデル(具身广场)では、この手順全体を省略し、以下のパラメーターを一切指定しないでください(ここに記載されているもの、および
--cmd/--image-swr-url/--envs-json/--skill-config-json/--service-invoke-json/--readiness-health-json/--model-ext-metadata/--model-json.mount_pathに関するものも含みます)。 广场モデルはプラットフォームで事前設定されており、オーケストレーション、イメージ、環境変数、スキル、ヘルスプローブ、r2c マッピングがすでにモデルに紐付けられています。广场モデルにこれらの追加パラメーターを渡すと、デプロイが無効になったり、設定の不一致が発生したりするおそれがあります。これは、このワークフローで禁止されている「不该带的参数」そのものです。ワークスペースアセット/カスタムモデル:モデルのバージョンを解決した後、デプロイパラメーターを提供する関連アルゴリズムアセットがモデルにあるかどうかを確認します。これらはモデルのアルゴリズムアセットと設定ファイルから自動検出されます。
a. ONLINE_DEPLOYMENT アクションを確認する — ステップ 4 の
show-asset出力で、actions[]内のtype: "ONLINE_DEPLOYMENT"を確認します。存在し、status: "ENABLE"の場合、関連アルゴリズムアセットを示すalgorithm.asset_idとalgorithm.version_idが含まれています。 b. アルゴリズムアセットを照会(アクションが見つかった場合)—cloudrobo asset show-asset --asset-id <algorithm.asset_id>を実行し、続けてcloudrobo asset show-version --asset-id <algorithm.asset_id> --version-id <algorithm.version_id>を実行して、アルゴリズムのext_metadataを取得します:ext_metadata.command→--cmdext_metadata.engine.image_url→--image-swr-urlext_metadata.environment_variables({"name":"K","default":"V"}の配列) → マップ{"K":"V"}に変換 →--envs-jsonext_metadata.deployment_config.model_mount_path→--model-json.mount_pathext_metadata.deployment_config.service_invoke→--service-invoke-jsonext_metadata.deployment_config.readiness_health→--readiness-health-json
c. skill_config.json をダウンロード —
download-urlAPI 経由で行います(CLI/SDK ではラップされていないため、HttpClient を直接使用します):from cloudrobo_core.sdk import Config, HttpClient from cloudrobo_asset.client import AssetClient import requests config = Config() http = HttpClient(config) asset_client = AssetClient(http) resp = http.get( asset_client._url(f'/v1/assets/{asset_id}/versions/{version_id}/download-url'), params={'file_name': 'skill_config.json'} ) skill_config = requests.get(resp['file_url']).text- スキル項目を
nameとpromptのフィールドのみに絞り込みます(追加フィールドのpriority/descriptionは削除します)→--skill-config-json strictフィールド:デプロイされたサービスが、事前定義されたスキルプロンプトのみを受け付けるか、ユーザー独自のプロンプトも受け付けるかを制御します:strict: true— サービスは事前定義されたスキル(nameで照合)のみを受け付けます。ユーザーは実行時にカスタムプロンプトを入力できませんstrict: falseまたは省略 — サービスは事前定義されたスキルに加えて、ユーザーが実行時に独自のカスタムプロンプトを入力することも許可します- 顧客がカスタムプロンプトを利用できるようにする場合は、skill_config.json で
strictがfalseに設定されているか、指定されていないことを確認します
d. r2c 設定をダウンロード — 同じ
download-urlAPI を使用し、次のフォールバックルールに従います:- まず
file_name=r2c_config.yamlを試します - 失敗した場合(404)、
file_name=r2c.jsonを試します - どちらも失敗した場合(r2c 設定ファイルが見つからない場合):
- ユーザーに、独自の r2c 設定ファイルを提供するかどうか確認します
--model-ext-metadataがなくてもデプロイは妨げられませんが、その後の robo-dispatcher 操作が機能しなくなることを説明します(robo-dispatcher ワークフローの詳細はhuawei-cloud-cloudrobo-dispatchスキルを参照してください)- ユーザーが設定ファイルを提供した場合は、その内容を
--model-ext-metadataとして使用します - ユーザーが提供しない場合は、
--model-ext-metadataなしで進めます(robo-dispatcher 操作は利用できないことを警告します)
- ファイルの内容(生の文字列)→
--model-ext-metadata
優先順位:設定ファイル > ext_metadata フィールド > ユーザーへの確認。パラメーターを 特定できない場合は、黙ってスキップします(デプロイを妨げないでください)。アルゴリズムが関連付けられていない 「ベア」モデルの場合は、任意のパラメーターを手動で指定するかどうかをユーザーに確認します。
-
プールとフレーバーを解決 —
cloudrobo resource list-pools --resource-type MODELARTS。- 利用可能なプール(resource_name、pool_type、status、flavors)をユーザーに提示します。
status: "AVAILABLE"のプールのみ使用できます。- プールのフィールド:
resource_id→--pool-id(pool-を先頭に付けます。例:pool-d1cc6d45-...)、pool_type→--pool-type(選択肢:DEDICATED/SHARED)。 - フレーバーは、ハードウェアタイプ(CPU/GPU/ASCEND)ごとに分類された
config.flavorの下にあります。 - ユーザーにプールとフレーバー文字列(例:
"1 * SNT9B2 | 24 vCPUs | 192 GiB")を選択してもらいます。
-
パラメーターを確認してデプロイする — ユーザーに
createコマンドを提示します。Step 2 のモデルソースに合ったバリアントを選択してください(モデルソース → パラメーターポリシーの表を参照)。2 つのバリアントを混在させてはいけません。バリアント A — embodiment plaza モデル(具身广场、必須のコアパラメーターのみ):
cloudrobo infer create --name <service-name> --flavor "<flavor>" --model-json '{"model_id": "<asset_id>", "model_version_id": "<latest_version_id>"}' --workspace-id <workspace_id> --pool-id pool-<resource_id> --pool-type <pool_type> --stop-schedule-json '{"duration": 60, "time_unit": "MINUTES"}' [--dry-run]--cmd/--image-swr-url/--envs-json/--skill-config-json/--service-invoke-json/--readiness-health-json/--model-ext-metadata/--model-json.mount_pathは追加しないでください。 Plaza モデルはプラットフォーム上で事前設定されています。これらの余分なパラメーターを指定するとデプロイのリスクとなり、このワークフローでは明示的に禁止されています。
バリアント B — space asset/カスタムモデル(自動検出されたパラメーターを使用):
cloudrobo infer create --name <service-name> --flavor "<flavor>" --model-json '{"model_id": "<asset_id>", "model_version_id": "<latest_version_id>", "mount_path": "<mount_path>"}' --workspace-id <workspace_id> --pool-id pool-<resource_id> --pool-type <pool_type> --stop-schedule-json '{"duration": 60, "time_unit": "MINUTES"}' [--cmd "<command>"] [--image-swr-url "<image_url>"] [--envs-json '{"KEY":"VALUE"}'] [--skill-config-json '{"skills":[{"name":"...","prompt":"..."}],"strict":true}'] [--service-invoke-json '{"auth_type":"...","port":8080,"protocol":"HTTP"}'] [--readiness-health-json '{"path":"/ready","port":8080}'] [--model-ext-metadata '<r2c_config_file_content>'] [--dry-run]- 実際に検出されたパラメーター(Step 5)のみを含め、検出されていないものは省略してください。
--model-json.mount_pathは、アルゴリズムのdeployment_configに指定されている場合にのみ含めてください。--envs-jsonはアセットの配列形式からマップ形式に変換する必要があります。--skill-config-jsonのスキル項目にはnameとpromptのみを残し、priorityとdescriptionは削除してください。--model-ext-metadataにはファイルの生の内容(文字列)を指定します。- パラメーターの組み立てを検証するため、最初に
--dry-runを実行することを推奨します。 --stop-schedule-jsonは CLI では必須ではありませんが、実際には必須です。指定しないとバックエンドが作成を拒否する場合があります。形式:{"duration": <N>, "time_unit": "MINUTES"}。- dry-run が成功したら、ユーザーに確認してから
--dry-runを付けずに実行してください。 - 返された
service_idを記録します。
-
デプロイを待機する —
cloudrobo infer wait-deploy --service-id <sid>を実行し、ステータスがDEPLOYINGではなくなるまで(status != "DEPLOYING")5 秒ごとにポーリングします。その後のステータス(例:RUNNING、FAILED)を返します。createの後、サービスは自動的にCREATING→DEPLOYINGに移行します。createの直後にstartを呼び出さないでください。「Status DEPLOYING does not support start」という 400 エラーが返されます。startはSTOPPED状態のサービスの再起動にのみ使用し、初回デプロイには使用しません。- 正確な動作:
wait-deployはstatus != "DEPLOYING"になった時点で返ります。CREATINGフェーズ中は待機しません。サービスがまだCREATINGの間に呼び出すと、CREATINGのステータスですぐに返ります。実際にはcreateの後に呼び出し、バックエンドがCREATING→DEPLOYING→RUNNINGと遷移するのを待ちます。このヘルパーはDEPLOYINGの間、処理をブロックします。
-
結果を報告する —
service_id、モデル名、フレーバー、最終ステータスを出力します。- ステータスが
FAILEDの場合は、診断のためにcloudrobo infer list-logsを実行します。 - 失敗したサービスを自動削除してはいけません。クリーンアップが必要な場合は、
deleteコマンドを提示し、実行前にユーザーの明示的な確認を求めてください。
- ステータスが
アセットに関する注意:model_id/version_id/flavor/pool_id は、上記のクエリコマンドで動的に解決する必要があります。ハードコードしてはいけません。必ずクエリ結果の選択肢からユーザーに選んでもらってください。
モデルソース → パラメーターポリシー(正式な判断表)
この表は、Step 2 で解決したモデルソースに基づいて、どの create パラメーターを引き継ぐかを決める唯一の信頼できる情報源です。両方のスキルの整合性を保つため、cloudrobo-model-workflow の Stage 3 で参照されます。推論サービスを作成する際は、まずモデルソースを解決してから、該当する列を正確に適用してください。異なるパターンを混在させないでください。
| モデルソース(Step 2 より) | 検索コマンド(Step 3) | 自動検出(Step 5) | 引き継ぐ create パラメーター |
|---|---|---|---|
| 具身広場(Embodiment plaza) | asset list-publication-assets --type model --actions ONLINE_DEPLOYMENT --action-status ENABLE | 完全にスキップ — モデルはプラットフォーム上で事前設定済みです | 必須のコア項目のみ:--name、--flavor、--model-json(model_id+model_version_id)、--workspace-id、--pool-id、--pool-type、--stop-schedule-json。引き継がないこと:--cmd/--image-swr-url/--envs-json/--skill-config-json/--service-invoke-json/--readiness-health-json/--model-ext-metadata/--model-json.mount_path |
| Space asset / カスタム(空间资产/自定义) | asset list-assets --catalog-id <asset_catalog_id> --type model / search-assets --keyword ... | Step 5 をすべて実行 — アルゴリズムアセットを照会(cmd/image/envs/mount_path/service-invoke/readiness-health)+ skill_config.json をダウンロード+ r2c 設定 | 必須のコア項目に加えて、Step 5 で実際に検出されたすべてのパラメーター。検出されなかった項目は黙って省略します |
| 不明なモデル ID(ユーザーが明示的な ID を指定) | asset show-asset --asset-id <id> | show-asset の結果に基づいて判断:モデルにプラットフォームアルゴリズムを示す ONLINE_DEPLOYMENT アクションがある場合 → Space asset の手順として扱う(Step 5 を実行)。モデルのデプロイ設定が自己完結型/事前設定済みの場合 → 必須のコア項目のみ引き継ぐ | 解決した手順に従う |
理由:具身広場のモデルには、オーケストレーション、イメージ、環境変数、ヘルスプローブ、スキル、r2c の機能マッピングがプラットフォーム上にまとめられています。具身広場のモデルに対して、これらを
createで再指定するのは冗長であり、無効または不整合なデプロイにつながるおそれがあります(これは「不该带的参数不要带」というルールです)。Space asset / カスタムモデルにはこのような設定がまとめられていないため、パラメーターを自動検出し、明示的に渡す必要があります。
デプロイ完了待機ワークフロー(CLI の利便性機能)
シナリオ:「この推論サービスのデプロイが完了するまで待ちます。」
cloudrobo infer wait-deploy --service-id <sid> [--timeout 600]wait-deployはCLI クライアント側のポーリングヘルパーです。サービスの状態がDEPLOYINGでなくなる(status != "DEPLOYING")まで 5 秒ごとにshowをポーリングし、他の状態(例:RUNNING、FAILED、STOPPED)を返します。- タイムアウトのデフォルトは 600s です(CLI の
--timeoutの範囲は 1~3600)。タイムアウトを超えると、クライアントはRuntimeErrorを発生させ、CLI はタイムアウトエラー(JSON エラー+ClickException、終了コードは 0 以外)を報告します。
- 結果の報告 — 最終状態を報告します。
FAILEDの場合は、原因を調べるためlist-logsを提案します。
注:
wait-deployはサービスを作成しません。先にcreateを呼び出してから、wait-deployを実行してください。createの後にstartを呼び出さないでください — サービスは自動的にデプロイされます(CREATING → DEPLOYING → RUNNING)。startはSTOPPED状態のサービスを再起動する場合にのみ使用します。
サービスの運用・保守/検索ワークフロー(モジュール+ワークスペース)
シナリオ:「ワークスペースで実行中の推論サービスを確認したい。」
- ページネーション(
--limit/--offset)と並べ替え(--sort-key/--sort-dir)を指定して、cloudrobo infer list --workspace-id <ws> [--status <status>] [--model-id <mid>] [--name <name>] [--model-name <mn>] [--model-version-id <mvid>] [--model-version-name <mvn>] [--user-name <un>] [--user-id <uid>]を実行します。 - 完全な設定スナップショットを確認するには、
cloudrobo infer show --service-id <sid>を実行します。 - 状態と主要なフィールド(モデル、フレーバー、状態、プール)を報告します。
サービスの起動/停止ワークフロー(モジュール)
シナリオ:「この API の背後にある推論サービスを停止して。」/「再び起動して。」
show --service-id <sid>でサービスを確認します。cloudrobo infer stop --service-id <sid>またはcloudrobo infer start --service-id <sid>(変更を伴うため、実行前に確認してください)。- 目的の終端状態(
STOPPED/RUNNING)になるまでshowをポーリングします。
ログ診断ワークフロー(モジュール)
シナリオ:「デプロイしたサービスが失敗するのはなぜですか?ログを見せてください。」
cloudrobo infer list-logs --service-id <sid> --start-time <ms> --end-time <ms>— どちらの タイムスタンプもミリ秒(13 桁)です。必要に応じて--keywords、--limit、--line-num、--is-count、--highlight、--is-descで絞り込みます。- ログ行を確認し、
showのステータス(例:CREATE_FAILED/START_FAILED)と照合します。 - 対処方法を提案します(プールの容量、モデルアーティファクト、ヘルスチェックの設定)。
サービスの更新/削除ワークフロー(モジュール)
シナリオ:「このサービスを再設定して。」/「このサービスをシャットダウンして削除して。」
- 更新 —
cloudrobo infer update --service-id <sid> [--description <desc>] [--model-ext-metadata <json>] [--dry-run](変更を伴うため、確認してください)。 - 削除 —
cloudrobo infer delete --service-id <sid> [--dry-run](変更を伴い、元に戻せないため、確認してください)。
複合ワークフロー A — 学習済みモデルをデプロイする(infer + train + asset)
シナリオ:「VLA モデルを学習しました。推論サービスとしてデプロイしてください。」
- ワークスペースを解決します:
cloudrobo workspace current(またはlist+use)。 - 学習済みモデルを検索します:
cloudrobo asset list-assets --catalog-id <asset_catalog_id> --type model(または train スキルのoutput_modelsを使用)。asset_idを取得します。 - モデルのバージョンを解決します:
cloudrobo asset show-asset --asset-id <asset_id>→latest_version_idを--model-jsonのmodel_version_idフィールドに使用します。ONLINE_DEPLOYMENTアクションのstatus: "ENABLE"を確認します。 - プールとフレーバーを解決します:
cloudrobo resource list-pools --resource-type MODELARTS→ ユーザーにresource_idとflavorを選択してもらいます。 4a. 学習済みモデルはスペースアセットです → モデルデプロイワークフローの Variant B/スペースアセットのパスに従います。(学習済みモデルにアルゴリズムが関連付けられている場合)ステップ 5 に従ってデプロイ パラメーターを自動検出します — アルゴリズムアセットを照会して cmd/image/envs/service-invoke/readiness-health を取得し、skill_config.json と r2c config をダウンロードします。 これらを引き継ぐのがスペースアセットの正しい動作です。「引き継がない」というルールは embodiment plaza モデルにのみ適用されます。 cloudrobo infer create --name <name> --flavor "<flavor>" --model-json '{"model_id": "<asset_id>", "model_version_id": "<latest_version_id>"}' --workspace-id <ws> --pool-id pool-<resource_id> --pool-type <type> --stop-schedule-json '{"duration": 60, "time_unit": "MINUTES"}'— ステップ 4a で実際に検出したパラメーターを追加します(ステップ 7 の Variant B に従います)。cloudrobo infer wait-deploy --service-id <sid>— ステータスがDEPLOYINGでなくなるまで 5 秒ごとに ポーリングします(サービスは create の後に自動デプロイされます。startは呼び出さないでください — 400 エラーになります)。service_idとステータスを報告します。サービスを利用できる状態です。
パラメーターの自動検出:スペースアセット/カスタムモデルの場合、デプロイパラメーター (cmd、image、envs、skill-config、health-checks、model-ext-metadata など)は、上記の ステップ 5 に従い、関連するアルゴリズムアセットと設定ファイルから 自動検出されます。検出元の一覧表、download-url API のコード、主なルールについては
references/service-config-catalog.md→「パラメーターの自動検出元」を参照してください。
CLI コマンドの概要
cloudrobo infer <command> [OPTIONS]
| サブコマンド | 説明 | 主なオプション |
|---|---|---|
create | 新しい推論サービスをデプロイします | --name、--flavor、--model-json、--workspace-id、--pool-id、--pool-type、--stop-schedule-json |
wait-deploy | デプロイが完了するまでポーリングします | --service-id、--timeout |
list | 推論サービスを一覧表示します | --workspace-id、--status、--limit、--offset |
show | サービスの詳細を表示します | --service-id |
start / stop | サービスを開始または停止します | --service-id |
update | サービスの設定を更新します | --service-id、--description、--model-ext-metadata |
delete | サービスを削除します | --service-id |
list-logs | サービスのログを照会します | --service-id、--start-time(ミリ秒)、--end-time(ミリ秒)、--keywords |
CLI/SDK の完全な例、パラメーター解決表、エッジケース:
references/service-config-catalog.md→ 「Command Examples」、「Parameter
Resolution & Confirmation」、「Edge Cases」を参照してください。
SDK は9つのメソッド、CLI は9つのコマンドを公開しています(不足なし)。
wait-deployは、CLI と SDK の両方で利用できるクライアント側のポーリングヘルパーです。
CLI が不便な場合(動的な JSON、パッケージをまたぐ照会など)は、Python
SDK を直接使用してください。InferClientは9つのメソッドを公開しています。
参考ドキュメント
- CLI インストールガイド — cloudrobo CLI のインストールと設定
- IAM ポリシー — 最小権限の認証情報およびアクセスモデル
- 検証方法 — 検証方法の詳細
- データフロー図 — Mermaid によるデータフロー図
- 受け入れ基準 — 受け入れ基準
- サービス設定リファレンス — InferServiceDto のフィールド、ヘルスチェック、ステータス、ログ、パラメーターの自動検出、CLI/SDK のコマンド例、パラメーター解決と確認、エッジケース、カバレッジマトリックス
エッジケース
シナリオ対応表の全容(model_id がない、JSON が無効、タイムスタンプの単位が誤っている、
403 権限拒否、500 内部エラー、stop-schedule がない、r2c 設定への
フォールバック、envs 形式の不一致、スキルをまたぐ呼び出しなど)については、
references/service-config-catalog.md→ 「Edge Cases」を参照してください。
検証方法
仕様準拠の検証
bash scripts/test-cli-commands.sh
機能テスト
bash scripts/test-cli-commands.sh
テストケース
デプロイ、wait-deploy、サービスのライフサイクル、ログ、安全性のシナリオを網羅したテストケース一覧は、templates/test-vars.json を参照してください。
検証チェックリスト
createの実行後、サービスが正しいステータスでlistに表示されるwait-deployの実行後、サービスのステータスがDEPLOYINGではなくなる(status != "DEPLOYING"。タイムアウト/失敗時はログを確認する手順が報告される)start/stopの実行後、showに新しいステータスが反映されるdeleteの実行後、showは見つからないことを返す- ミリ秒単位のタイムスタンプを指定した
list-logsでログ行が返され、キーワードフィルターが機能する - 無効な JSON/パストラバーサルは拒否される。
validate_safe_idにより../はブロックされる - 状態変更操作(特に start)では、ユーザーに確認を求める
ベストプラクティス
- 各
createパラメーターはクエリーコマンドで解決してから、ユーザーに選択してもらいます。ハードコードはしないでください。 - モデルソースによってパラメーターポリシーが決まります:まずソースを解決し(ステップ2)、その後
モデルソース → パラメーターポリシーの表を適用します。Embodiment plaza のモデルには必須のコアパラメーターのみを指定します(
--cmd/--image-swr-url/--envs-json/--skill-config-json/--service-invoke-json/--readiness-health-json/--model-ext-metadata/--model-json.mount_pathは指定しません)。スペースアセット/カスタムモデルではステップ5の自動検出を実行し、実際に検出された項目を指定します。 - モデル検索:デプロイ可能なplazaモデルには
list-publication-assets --actions ONLINE_DEPLOYMENT --action-status ENABLEを優先して使います。ワークスペースモデルにはlist-assets --catalog-id <id>を使います。 あいまい検索/キーワード検索にはsearch-assets --keyword "<kw>"を使います。 --model-jsonのmodel_version_idには、actions[].algorithm.version_idではなく、show-assetのlatest_version_idを指定する必要があります。createでは必ず--stop-schedule-json '{"duration": N, "time_unit": "MINUTES"}'を指定します。createの後はwait-deployを使い、デプロイが完了するまでポーリングします(間隔は5秒、デフォルトは600秒)。createの後にstartを呼び出さないでください。サービスは自動でデプロイされます。wait-deployはstatus != "DEPLOYING"になると戻ります。ブロックするのはDEPLOYINGフェーズのみ(CREATINGではありません)です。そのため、createの後に呼び出し、バックエンドでCREATING → DEPLOYING → RUNNINGへ遷移させます。まだCREATINGの状態で戻った場合は、すぐにwait-deployを再度呼び出してください。- 実際に送信する前にパラメーターの組み立てを検証するには、
createで--dry-runを使います。 - デプロイの検証の一環として、ヘルスチェックによる検出結果を報告します。
- エラーをすばやく特定するには、
--keywordsを指定してlist-logsを使います。タイムスタンプの単位はmsであることに注意してください。 - ユーザーが外部へのアクセスを明示的に必要としている場合を除き、
internet_access_enableはOFFのままにします。 - 機密性の高い環境変数/値はマスキングし、認証情報を表示しないでください。
- ワークスペース/モデルのコンテキストを解決するには、ワークスペース(
cloudrobo workspace current)およびアセットのスキルと組み合わせます。身体性タスクを実行するには、ディスパッチ機能と組み合わせます。