Google Cloudbuild yaml file 中 entrypoint 和 args 的写法

编写cloudbuild.yaml 时有几个关键参数

entrypoint 和 args 的基本介绍

id: 显示在 cloud build logs 里的item 名字
name: docker 镜像名字 - 下面的命令会在这个镜像的1个容器instance 内执行
entrypoint: 执行的命令入口 , 只能有1个对象
args: 命名的参数, 它是1个list

问题来了, 如何理解深而慢是entrypoint 和 args

entrypoint 就是执行的命令 bin file 名字, args 是参数, 不能混淆

例如:

cat /tmp/1.txt /tmp/2.txt


cat 就entrypoint
/tmp/1.txt /tmp/2.txt 就是两个参数, 因为args 是1个list

又如:

echo abc def

中, echo 是 entrypoint, args 是 [abc, def]

所以在clouldbuild.yaml 中下面command 1是正确的, command 2 是错误的

steps:

  # correct
  - id: test command 1
    name: 'gcr.io/cloud-builders/gcloud'
    entrypoint: echo
    args: [abc, def]

  # wrong
  - id: test command 2
    name: 'gcr.io/cloud-builders/gcloud'
    entrypoint: echo abc
    args: [ def ]


logsBucket: gs://jason-hsbc_cloudbuild/logs/
options: # https://cloud.google.com/cloud-build/docs/build-config#options
  logging: GCS_ONLY # or CLOUD_LOGGING_ONLY https://cloud.google.com/cloud-build/docs/build-config#logging

因为第2中写法, 它把 echo abc 作为endpoint, 虽然合并字符串 也是 echo abc def, 跟 command 1 的写法一样, 但是yaml 中命令的写法绝对不是字符串

而镜像中的 /usr/bin 中绝对不可能有1个 echo abc 包括空格的file, 所以会出错
日志

starting build "34e39f7f-e039-4572-a392-21a154ed8228"

FETCHSOURCE
Fetching storage object: gs://jason-hsbc_cloudbuild/source/1717185531.688094-1bcec1bbcfb64618b377c2a5e097c551.tgz#1717185513807965
Copying gs://jason-hsbc_cloudbuild/source/1717185531.688094-1bcec1bbcfb64618b377c2a5e097c551.tgz#1717185513807965...
/ [0 files][    0.0 B/ 73.9 KiB]                                                
-
- [1 files][ 73.9 KiB/ 73.9 KiB]                                                
Operation completed over 1 objects/73.9 KiB.                                     
tar: cloudbuild-test.yaml: time stamp 2024-05-31 19:58:47.9453259 is 4.465130295 s in the future
BUILD
Starting Step #0 - "test command 1"
Step #0 - "test command 1": Already have image (with digest): gcr.io/cloud-builders/gcloud
Step #0 - "test command 1": abc def
Finished Step #0 - "test command 1"
Starting Step #1 - "test command 2"
Step #1 - "test command 2": Already have image (with digest): gcr.io/cloud-builders/gcloud
Finished Step #1 - "test command 2"
ERROR
ERROR: build step 
root@autodl-container-9efe41855c-0b570216:~/D-FINE-master# CUDA_VISIBLE_DEVICES=0 torchrun --master_port=7777 --nproc_per_node=1 train.py -c /root/D-FINE-master/configs/dfine/dfine_detect.yaml --seed=0 Initialized distributed mode... [rank0]: Traceback (most recent call last): [rank0]: File "train.py", line 113, in <module> [rank0]: main(args) [rank0]: File "train.py", line 60, in main [rank0]: cfg = YAMLConfig(args.config, **update_dict) [rank0]: File "/root/D-FINE-master/src/core/yaml_config.py", line 23, in __init__ [rank0]: cfg = load_config(cfg_path) [rank0]: File "/root/D-FINE-master/src/core/yaml_utils.py", line 45, in load_config [rank0]: base_cfg = load_config(base_yaml, cfg) [rank0]: File "/root/D-FINE-master/src/core/yaml_utils.py", line 31, in load_config [rank0]: file_cfg = yaml.load(f, Loader=yaml.Loader) [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/__init__.py", line 81, in load [rank0]: return loader.get_single_data() [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/constructor.py", line 49, in get_single_data [rank0]: node = self.get_single_node() [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/composer.py", line 36, in get_single_node [rank0]: document = self.compose_document() [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/composer.py", line 55, in compose_document [rank0]: node = self.compose_node(None, None) [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node [rank0]: node = self.compose_mapping_node(anchor) [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node [rank0]: item_value = self.compose_node(node, item_key) [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/composer.py", line 82, in compose_node [rank0]: node = self.compose_sequence_node(anchor) [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/composer.py", line 110, in compose_sequence_node [rank0]: while not self.check_event(SequenceEndEvent): [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/parser.py", line 98, in check_event [rank0]: self.current_event = self.state() [rank0]: File "/root/miniconda3/lib/python3.8/site-packages/yaml/parser.py", line 483, in parse_flow_sequence_entry [rank0]: raise ParserError("while parsing a flow sequence", self.marks[-1], [rank0]: yaml.parser.ParserError: while parsing a flow sequence [rank0]: in "/root/D-FINE-master/configs/dfine/dfine_hgnetv2_s_coco.yml", line 1, column 14 [rank0]: expected ',' or ']', but got '<scalar>' [rank0]: in "/root/D-FINE-master/configs/dfine/dfine_hgnetv2_s_coco.yml", line 4, column 3 E0716 17:16:32.089176 140561704154304 torch/distributed/elastic/multiprocessing/api.py:833] failed (exitcode: 1) local_rank: 0 (pid: 798838) of binary: /root/miniconda3/bin/python Traceback (most recent call last): File "/root/miniconda3/bin/torchrun", line 8, in <module> sys.exit(main()) File "/root/miniconda3/lib/python3.8/site-packages/torch/distributed/elastic/multiprocessing/errors/__init__.py", line 348, in wrapper return f(*args, **kwargs) File "/root/miniconda3/lib/python3.8/site-packages/torch/distributed/run.py", line 901, in main run(args) File "/root/miniconda3/lib/python3.8/site-packages/torch/distributed/run.py", line 892, in run elastic_launch( File "/root/miniconda3/lib/python3.8/site-packages/torch/distributed/launcher/api.py", line 133, in __call__ return launch_agent(self._config, self._entrypoint, list(args)) File "/root/miniconda3/lib/python3.8/site-packages/torch/distributed/launcher/api.py", line 264, in launch_agent raise ChildFailedError( torch.distributed.elastic.multiprocessing.errors.ChildFailedError: ============================================================ train.py FAILED ------------------------------------------------------------ Failures: <NO_OTHER_FAILURES> ------------------------------------------------------------ Root Cause (first observed failure): [0]: time : 2025-07-16_17:16:32 host : autodl-container-9efe41855c-0b570216 rank : 0 (local_rank: 0) exitcode : 1 (pid: 798838) error_file: <N/A> traceback : To enable traceback see: https://pytorch.org/docs/stable/elastic/errors.html ============================================================
最新发布
07-17
yolo detect train model=models/yolov8n.pt data=data/home.yaml epochs=100 imgsz=640 batch=32 workers=8 \ # 若16报错可降至8 Traceback (most recent call last): File "/home/xsw/.local/bin/yolo", line 8, in <module> sys.exit(entrypoint()) File "/home/xsw/.local/lib/python3.10/site-packages/ultralytics/cfg/__init__.py", line 905, in entrypoint check_dict_alignment(full_args_dict, {a: ""}) File "/home/xsw/.local/lib/python3.10/site-packages/ultralytics/cfg/__init__.py", line 498, in check_dict_alignment raise SyntaxError(string + CLI_HELP_MSG) from e SyntaxError: ' ' is not a valid YOLO argument. Arguments received: ['yolo', 'detect', 'train', 'model=models/yolov8n.pt', 'data=data/home.yaml', 'epochs=100', 'imgsz=640', 'batch=32', 'workers=8', ' ']. Ultralytics 'yolo' commands use the following syntax: yolo TASK MODE ARGS Where TASK (optional) is one of ['pose', 'segment', 'detect', 'classify', 'obb'] MODE (required) is one of ['export', 'val', 'benchmark', 'train', 'predict', 'track'] ARGS (optional) are any number of custom 'arg=value' pairs like 'imgsz=320' that override defaults. See all ARGS at https://docs.ultralytics.com/usage/cfg or with 'yolo cfg' 1. Train a detection model for 10 epochs with an initial learning_rate of 0.01 yolo train data=coco8.yaml model=yolo11n.pt epochs=10 lr0=0.01 2. Predict a YouTube video using a pretrained segmentation model at image size 320: yolo predict model=yolo11n-seg.pt source='https://youtu.be/LNwODJXcvt4' imgsz=320 3. Val a pretrained detection model at batch-size 1 and image size 640: yolo val model=yolo11n.pt data=coco8.yaml batch=1 imgsz=640 4. Export a YOLO11n classification model to ONNX format at image size 224 by 128 (no TASK required) yolo export model=yolo11n-cls.pt format=onnx imgsz=224,128 5. Ultralytics solutions usage yolo solutions count or in ['crop', 'blur', 'workout', 'heatmap', 'isegment', 'visioneye', 'speed', 'queue', 'analytics', 'inference', 'trackzone'] source="path/to/video.mp4" 6. Run special commands: yolo help yolo checks yolo version yolo settings yolo copy-cfg yolo cfg yolo solutions help Docs: https://docs.ultralytics.com Solutions: https://docs.ultralytics.com/solutions/ Community: https://community.ultralytics.com GitHub: https://github.com/ultralytics/ultralytics
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值