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

如何通过Google Cloud Function并行运行带不同自定义参数的同个训练任务

并行提交多产品训练任务方案

无需修改你现有的MYMODULE训练代码,有两种低成本的一键触发方案,所有任务提交后会自动并行运行:

方案1:Shell脚本实现(最简单,无需额外依赖)

  • 核心逻辑:遍历所有产品ID,每个产品单独提交一个独立的训练任务,gcloud任务提交是异步操作,因此所有任务会自动并行调度。
  • 新建submit_train_jobs.sh脚本,内容如下:
#!/bin/bash
# 配置需要训练的所有产品列表
PRODUCT_LIST=("product_1" "product_2" "product_3")
# 公共参数统一配置,避免重复书写
STAGING_BUCKET="gs://MYBUCKET"
PACKAGE_PATH="MYPATH"
MODULE_NAME="MYMODULE"
REGION="MYREGION"
RUNTIME_VERSION="2.1"
PYTHON_VERSION="3.7"
SCALE_TIER="BASIC"
MODEL_BUCKET="MYBUCKET"
OUTPUT_ROOT_DIR="MYDIR"

# 遍历提交每个产品的训练任务
for product in "${PRODUCT_LIST[@]}"
do
    # 任务名加上产品标识和时间戳,避免重复
    JOB_NAME="demo_training_${product}_$(date +"%Y%m%d_%H%M%S")"
    gcloud ai-platform jobs submit training ${JOB_NAME} \
        --staging-bucket ${STAGING_BUCKET} \
        --package-path ${PACKAGE_PATH} \
        --module-name ${MODULE_NAME} \
        --region ${REGION} \
        --runtime-version=${RUNTIME_VERSION} \
        --python-version=${PYTHON_VERSION} \
        --scale-tier ${SCALE_TIER} \
        -- \
        --model-bucket ${MODEL_BUCKET} \
        # 输出目录按产品拆分,避免结果互相覆盖
        --output-dir ${OUTPUT_ROOT_DIR}/${product} \
        --user_arg ${product}
    echo "已提交【${product}】的训练任务,任务ID:${JOB_NAME}"
done
  • 运行方式:
    1. 给脚本加执行权限:chmod +x submit_train_jobs.sh
    2. 执行脚本即可一键提交所有并行任务:./submit_train_jobs.sh

提示:如果不需要拆分输出目录,删除--output-dir行的/${product}后缀即可。

方案2:Python脚本实现(适合和现有Python工作流集成)

  • 核心逻辑:用Python异步子进程提交每个产品的训练任务,无需等待单个任务完成即可提交下一个,实现并行触发。
  • 新建submit_train_jobs.py脚本,内容如下:
import subprocess
from datetime import datetime

# 配置需要训练的产品列表
PRODUCT_LIST = ["product_1", "product_2", "product_3"]
# 公共参数配置
COMMON_ARGS = [
    "--staging-bucket", "gs://MYBUCKET",
    "--package-path", "MYPATH",
    "--module-name", "MYMODULE",
    "--region", "MYREGION",
    "--runtime-version=2.1",
    "--python-version=3.7",
    "--scale-tier", "BASIC",
    "--",
    "--model-bucket", "MYBUCKET"
]

if __name__ == "__main__":
    for product in PRODUCT_LIST:
        time_suffix = datetime.now().strftime("%Y%m%d_%H%M%S")
        job_name = f"demo_training_{product}_{time_suffix}"
        # 拼接单个任务的提交命令
        cmd = [
            "gcloud", "ai-platform", "jobs", "submit", "training", job_name,
            *COMMON_ARGS,
            "--output-dir", f"MYDIR/{product}",
            "--user_arg", product
        ]
        # 异步提交任务,不阻塞后续任务提交
        subprocess.Popen(cmd)
        print(f"已提交【{product}】的训练任务,任务ID:{job_name}")
  • 运行方式:直接执行python submit_train_jobs.py即可一键提交所有并行任务。

两种方案都可以直接复用你现有的训练代码,不需要修改train_and_evaluate的逻辑,每个任务运行时args.user_arg会自动读取到对应单个产品的参数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:54:01