一、AI短剧创作流水线的复杂性
AI短剧与动漫创作并非单一模型的端到端生成,而是一个由多个AI能力模块串联组成的复杂流水线。从输入的分镜脚本出发,典型流程包括:分镜理解与场景分解、角色生成与一致性保持、背景与道具的逐帧渲染、角色动画与口型驱动、语音与音效合成、特效叠加、以及最终的视频编码输出。
每个环节内部又包含可并行执行的子任务。例如,场景渲染环节中,不同镜头的背景可以独立渲染;口型驱动环节中,不同角色的口型动画可以并行计算。然而,环节之间存在严格的依赖约束——口型驱动必须等待语音合成完成输出音素时间线;特效叠加必须等待基础渲染完成;最终编码必须等待所有镜头素材就绪。
这种依赖关系与并行潜力的混合,使创作流水线成为一个典型的DAG调度问题。传统方案采用“阶段式串行”——所有镜头依次经历完整流程,或所有环节依次处理全部镜头。前者的问题是GPU在单镜头处理时未被充分利用(许多环节无法独占整卡算力);后者的问题是后置环节的GPU在前置环节完成前始终空闲。两种模式都无法达到理想的资源利用效率。
二、任务依赖图构建:从粗放流水线到细粒度DAG
构建任务依赖图的第一步是确定“任务”的粒度。粒度过粗会使并行潜力被埋没(例如将“整部短剧的渲染”作为一个任务),粒度过细则调度开销过大(例如将“每个像素的渲染”作为一个任务)。我们在实践中采用“镜头-环节-批次”三级粒度划分。
镜头级是最高层次的分组,一部短剧包含N个镜头,各镜头的渲染和后期处理在数据上相互独立,天然可并行。
环节级是每个镜头内部的处理阶段,按依赖关系排列,同一镜头内不同环节之间存在先后约束。
批次级是环节内部的可并行单元,例如一个镜头中的多帧画面可以拆分为多个批次并行渲染,一个角色在不同帧中的口型动画可以按帧批次并行计算。
基于三级粒度,我们为每个创作任务生成一个DAG,节点为批次级任务,边表示数据依赖关系。DAG的构建由平台自动完成——根据分镜脚本中标注的镜头数、角色数、帧数以及各AI模块的输入输出关系,生成标准化的DAG描述文件,供后续调度器解析和执行。
DAG构建中的一个关键原则是“最小化关键路径长度”。我们通过任务合并与拆分来平衡节点数量和节点计算量,使关键路径(从起点到终点的最长路径)上的节点数量尽可能少,同时每个节点的计算量不超过单个GPU的显存上限。
三、两级并行调度策略
DAG生成后,调度器负责将节点映射至实际的GPU资源上执行。我们设计了两级调度架构。
全局调度器运行在控制平面,负责跨镜头的任务分配。其输入为所有镜头的DAG描述,输出为各镜头分配的计算资源和预期的执行时间窗口。全局调度器的核心策略是“关键路径优先”——识别出所有镜头中关键路径最长的那个镜头,为其预留充足的GPU资源和宽松的时间窗口,确保整体创作时间不被单一长镜头拖累。其余镜头的资源分配围绕这一预留进行,利用剩余资源并行调度。
本地调度器运行在每个GPU节点上,负责单个镜头内部DAG的执行顺序与并行调度。本地调度器的核心是“就绪任务队列”——当一个节点的所有前驱任务均已完成时,该节点进入就绪队列。本地调度器从就绪队列中按优先级取出任务,分配给空闲的GPU流处理器执行。优先级由两个因素决定:任务在关键路径上的位置(关键路径上的任务优先级更高)和任务的计算量(计算量大的任务优先执行,以充分利用GPU资源)。
两级调度之间通过状态同步通道交互。全局调度器每30秒接收一次各本地调度器的进度汇报,若发现某镜头因资源不足而进度落后,全局调度器可从其他已完成的镜头中回收GPU资源并重新分配给落后镜头,实现动态负载均衡。
四、动态优先级调节与死锁规避
静态DAG调度在理想情况下表现良好,但实际运行中,各AI模块的执行时间存在不可忽略的波动——同一声景下,语音合成模块可能因模型推理批次不同而产生±20%的时延差异。这种波动可能导致原本的关键路径发生偏移。
我们引入了动态优先级调节机制,在每个调度周期(10秒)内重新评估各任务的“动态紧迫度”。动态紧迫度由任务的剩余执行时间预估与当前全局进度共同计算。若某任务虽不在原始关键路径上,但其所在分支的进度严重落后,系统动态提升该任务的优先级,防止非关键路径的过度延迟演变为全局瓶颈。
死锁规避是并行调度中必须关注的问题。在DAG调度中,死锁的典型场景是:任务A等待任务B的输出,任务B等待任务C的输出,而任务C又在等待任务A释放的某种资源(如GPU显存)。我们通过两种方式规避死锁:一是所有任务在启动前预声明其需要的最大资源量,调度器在分配资源时预留足够容量,杜绝任务间因资源不足而相互等待;二是对跨任务的显存引用采用拷贝而非引用传递,使各任务的显存空间相互独立,不存在共享资源的竞争锁。
五、效果验证与调度参数调优
该调度方案在DramaFlow平台中完成部署,测试素材为一部5分钟短剧,包含42个镜头,总帧数约7200帧。基线方案为串行模式——依次处理每个镜头的全流程,不进行任何跨镜头的并行。
串行模式下的总创作时间为4.2小时,GPU资源利用率在38%至65%之间波动,平均约48%。启用两级并行调度后,总创作时间压缩至1.5小时,压缩幅度约64%;GPU利用率稳定在73%至85%之间,平均约79%。
调度参数调优的两条核心经验:一是全局调度器的资源预留比例设置,预留过多会导致其他镜头资源不足、整体并行度下降;预留过少则关键路径镜头在资源争抢下无法按时完成。经过多轮测试,预留比例为关键路径镜头预估所需资源的1.2倍(额外20%缓冲)时,整体效果最优。二是本地调度器的就绪队列优先级更新频率,更新过于频繁(如每1秒)会增加调度开销;更新过慢(如每60秒)则无法应对执行时间的波动。最终设定为每10秒更新一次,调度开销占总计算时间的比例低于2%。
结语:AI短剧动漫创作的全流程优化,核心在于将创作流水线从“串行接力”改造为“并行流水”。任务依赖图将隐含的依赖关系显式化,两级调度策略将跨镜头与镜头内的并行潜力充分释放,动态优先级调节使调度策略能够自适应执行时间的波动。三者协同,使一部5分钟短剧的创作时间从数小时压缩至1.5小时,将AI创作从“离线批处理”推向“准实时交互”的边界。未来我们将探索将调度策略与用户交互行为结合——在用户审阅已完成的镜头时,后台优先调度未被审阅的镜头,使用户的等待时间与后台计算时间最大程度重叠,进一步压缩用户感知的创作周期。