1. 课程介绍:为什么需要切换执行器

我第一次做CI/CD流水线的时候,觉得本地跑任务是天经地义的事。码农嘛,自己的机器自己熟,出了问题直接看日志,多痛快。

但后来项目越来越大,数据集从几百兆涨到几十个G,模型训练一跑就是七八个小时。我那台16G内存的笔记本,风扇转得像直升机,最后还经常OOM杀掉进程。

嗯,从那时起我才意识到——本地执行器有它天然的极限。说白了,单机资源是硬天花板,没法靠优化代码来突破。

1.1 本地执行器的痛点

我见过太多团队,一开始都抱着“先本地跑起来再说”的心态。但实际项目推进到一定程度,以下几个问题就会集中爆发:

  • 资源瓶颈:单机CPU核数有限,内存也有上限。你调再好的算法,硬件不给力也没用。
  • 任务排队:多个任务同时提交,本地只能串行执行。排队的那个任务,可能一等就是半天。
  • 环境不一致:本地装了一堆依赖,换台机器就炸。我记得有一次,同事的Mac上跑得好好的,到我Windows上一堆路径错误。
  • 并发能力差:你想同时跑10个参数调优实验?本地机器直接卡死。
  • 日志管理混乱:跑的时候盯着控制台,一关终端就啥都没了。出问题查日志全靠翻文件。
我曾经踩过的坑:有一回跑数据预处理,本地执行器跑了一整天,结果中间网络断了,整个任务直接挂掉。没有断点续传,没有自动重试,数据全白跑了。从那以后,我再也不敢把长任务完全托付给本地执行器。

1.2 AWS Batch 带来的改变

AWS Batch 说白了就是一个托管式批处理服务。你不用操心集群怎么搭、机器怎么配,只需要把任务描述清楚,剩下的交给AWS。

我个人习惯用 AWS Batch 处理以下几类任务:

  • 长耗时计算:比如模型训练、数据清洗,跑几个小时甚至几天也不怕。
  • 高并发批量任务:同时提交几百个参数组合,系统自动分配资源并行跑。
  • 弹性伸缩:没任务时不花钱,有任务时自动拉起机器。你想想看,这比本地常年开机省多少电费。
  • 自动重试:任务失败会自动重试,还能配置最大重试次数。我再也不用半夜爬起来看任务挂了没。
  • 日志集中管理:所有日志自动推到CloudWatch,查问题直接搜关键词,不用翻文件。

1.3 本课程能解决什么实际问题

你可能已经用上AWS Batch了,或者正准备迁移过去。但现实情况是——不是所有任务都适合直接丢到云端。

举个例子:你在本地调试代码,改一行参数就提交一次任务。如果每次都走AWS Batch,一来一回的资源调度时间可能比你改代码的时间还长。这时候,本地执行反而更快。

所以需要一个灵活的切换机制:开发调试时用本地执行器,生产跑量时切到AWS Batch。两者之间尽可能无缝切换,代码和配置尽量少改动。

本课程就是帮你解决这个核心矛盾的。具体来说,你学完会掌握:

  1. 本地与Batch的优劣对比:什么场景该用哪个,心里有数。
  2. 一套可复用的执行器抽象:写一套任务描述,底层能一键切换执行器。
  3. 完整的上手案例:从CMake配置到C++代码,到AWS Batch提交脚本,一步步带你落地。
  4. 避坑指南:我自己踩过的坑,比如超时设置、日志收集、资源配比,都会详细讲。

一句话总结:本地快跑调试,云端批量生产。本课程教你如何优雅地在两者之间来回切换,不再纠结选哪个好。

学习建议:我建议你先别急着建AWS环境,先把本地执行器部分跑通。理解了本地怎么工作,再切到云端就顺理成章了。反正工具是死的,思路是活的。

1.4 核心知识图谱

下图展示了本课程的知识脉络。从本地执行器的问题出发,延伸到AWS Batch的解决方案,最终落到具体的切换实现方法。你看一眼就能知道整门课在讲什么。

执行器切换核心知识体系 本地执行器痛点 资源瓶颈 任务排队 环境不一致 AWS Batch 优势 弹性伸缩 自动重试 日志集中 切换机制 抽象执行器接口 配置驱动切换 最小代码改动 CMake 构建配置 编译选项分离 依赖隔离管理 C++ 执行器抽象 基类+派生类 策略模式切换 Batch 提交适配 Boto3/CLI 封装 任务定义模板 学习路径:本地调试 → 配置封装 → Batch批量 一个执行器抽象,覆盖两种运行模式

1.5 适用人群与前置知识

这门课不是给纯小白准备的。你最好已经满足以下条件:

技能方向 具体要求 备注
C++基础 熟悉类、继承、多态、智能指针 执行器抽象会用到策略模式
CMake使用 能写简单的CMakeLists.txt,知道add_executable、target_link_libraries 我们会用CMake做构建配置分离
AWS基础 有AWS账号,了解EC2、S3、IAM基本概念 Batch需要这些基础服务配合
Docker基础 会写Dockerfile,知道镜像构建和推送 AWS Batch任务依赖容器化
我给你的建议:如果AWS Batch完全没碰过,也不慌。前几章会先带你搭好环境、跑通第一个任务。你跟着一步步做就行,不用提前预习太多。关键是动手,别光看书。