Google Cloud Vertex AI自定义作业重复指定参数错误排查
解决Vertex AI自定义作业中Click多实例元组参数的传递问题
问题根源
gcloud CLI解析--args的逗号分隔格式时,会将所有逗号视为参数分隔符,导致原本绑定在同一个--metric-and-lift下的0.01被拆分为独立参数,触发重复参数错误。补0的临时方法只是规避了重复值检测,并非合理解决方案。
最优解决方案
以下两种方式均可保留--metric-and-lift=$(STRING),$(FLOAT)的格式,完美匹配Click参数要求:
方案1:使用JSON数组传递--args
gcloud支持将--args指定为JSON数组,数组内的每个元素会被识别为独立的命令行参数,不会拆分元素内部的逗号:
gcloud ai custom-jobs create \ --region us-central1 \ --service-account $(USERNAME)@$(GCP_PROJECT) \ --display-name=$(DISPLAY_NAME) \ --project=$(GCP_PROJECT) \ --worker-pool-spec=machine-type=m1-ultramem-40,replica-count=1,container-image-uri=$(CONTAINER_IMAGE_LOCATION) \ --command="poetry,run,power_analysis_cli" \ --args='["--metric-and-lift=impression,0.01", "--metric-and-lift=click,0.01", "--metric-and-lift=install,0.01", "--metric-and-lift=revenue,0.01", "--metric-and-lift=spend,0.01", "--metric-and-lift=net_rev,0.01"]'
方案2:用引号包裹参数并以空格分隔
在shell环境中,将每个--metric-and-lift参数用引号包裹,通过空格分隔传递给--args,shell会将每个引号内的内容视为单个参数:
gcloud ai custom-jobs create \ --region us-central1 \ --service-account $(USERNAME)@$(GCP_PROJECT) \ --display-name=$(DISPLAY_NAME) \ --project=$(GCP_PROJECT) \ --worker-pool-spec=machine-type=m1-ultramem-40,replica-count=1,container-image-uri=$(CONTAINER_IMAGE_LOCATION) \ --command="poetry,run,power_analysis_cli" \ --args "--metric-and-lift=impression,0.01" "--metric-and-lift=click,0.01" "--metric-and-lift=install,0.01" "--metric-and-lift=revenue,0.01" "--metric-and-lift=spend,0.01" "--metric-and-lift=net_rev,0.01"
内容的提问来源于stack exchange,提问作者jmercad0
相关产品推荐
相关产品推荐

