You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中向gcloud传递字典类型参数

在PowerShell中向Google Cloud AI Platform提交训练任务时传递字典类型参数的解决方法

问题描述

我参考官方教程,尝试用以下gcloud命令将神经网络模型提交至Google Cloud AI Platform:

gcloud ai-platform jobs submit training ${JOB_NAME} \
  --region=us-central1 \
  --master-image-uri=gcr.io/cloud-ml-public/training/pytorch-gpu.1-10 \
  --scale-tier=CUSTOM \
  --master-machine-type=n1-standard-8 \
  --master-accelerator=type=nvidia-tesla-p100,count=1 \
  --job-dir=${JOB_DIR} \
  --package-path=./trainer \
  --module-name=trainer.task \
  -- \
  --train-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_train.csv \
  --eval-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_eval.csv \
  --num-epochs=10 \
  --batch-size=100 \
  --learning-rate=0.001

在PowerShell环境中,--master-accelerator参数需要传递字典类型,我尝试使用@{count=1; type=nvidia-tesla-p100}格式时收到「Bad syntax for dict arg: [@]」错误,也试过参考官方转义文档使用特殊分隔符,但仍提示无效。请问如何在PowerShell中传递此类参数,让gcloud命令能够正确接受?

解决方案

PowerShell中处理gcloud的字典类型参数时,不需要使用PowerShell的哈希表语法,直接沿用Linux/bash风格的键值对逗号分隔格式即可,但需要注意逗号的转义,或者用引号包裹整个参数值。以下是两种可行写法:

写法1:用单引号包裹整个参数值

gcloud ai-platform jobs submit training $JOB_NAME `
  --region=us-central1 `
  --master-image-uri=gcr.io/cloud-ml-public/training/pytorch-gpu.1-10 `
  --scale-tier=CUSTOM `
  --master-machine-type=n1-standard-8 `
  --master-accelerator='type=nvidia-tesla-p100,count=1' `
  --job-dir=$JOB_DIR `
  --package-path=./trainer `
  --module-name=trainer.task `
  -- `
  --train-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_train.csv `
  --eval-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_eval.csv `
  --num-epochs=10 `
  --batch-size=100 `
  --learning-rate=0.001

写法2:对逗号进行转义(使用反引号`)

gcloud ai-platform jobs submit training $JOB_NAME `
  --region=us-central1 `
  --master-image-uri=gcr.io/cloud-ml-public/training/pytorch-gpu.1-10 `
  --scale-tier=CUSTOM `
  --master-machine-type=n1-standard-8 `
  --master-accelerator=type=nvidia-tesla-p100`,count=1 `
  --job-dir=$JOB_DIR `
  --package-path=./trainer `
  --module-name=trainer.task `
  -- `
  --train-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_train.csv `
  --eval-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_eval.csv `
  --num-epochs=10 `
  --batch-size=100 `
  --learning-rate=0.001

原理说明

PowerShell会把无引号的逗号当作命令参数分隔符,导致gcloud接收到的参数被拆分。用引号包裹或转义逗号可以避免这个问题,让gcloud完整接收整个字典格式的参数值。

内容的提问来源于stack exchange,提问作者Chenoille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:05:28