#P4569. 第3题-AIGC缓存复用加速策略

第3题-AIGC缓存复用加速策略

题目内容

Stable/DiffusionStable/ Diffusion 为代表的图像和视频生成模型采用了一种逐步优化的方法:模型会多次迭代运行同一个核心算法,将初始的随机噪声逐步优化成清晰的图像或视频。随着对生成质量和视频时长要求的提高,核心算法的迭代步骤数持续增大,导致该方法的计算量急剧增加(计算量与步骤数成正比),造成应用部署困难。

为了降低计算负载,可以采用 “缓存复用” 策略:研究发现,相邻步骤的特征往往相似,当第 tt 步和第t+1 t+1 步的特征高度相似时,我们可以直接复用第t t 步的计算结果,跳过第t+1 t+1 步的计算。对于总共 TT 步的优化过程,如果跳过 kk 步,计算量就能降低为原来的(Tk)/T(T-k)/T

然而,跳过步骤会带来图像和视频生成质量的损失。用一个长度为 T1T-1 的损失值列表来记录跳过每一个步骤所带来的损失:列表中的第t t 个元素(0t<T0≤t<T)表示在第t+1 t+1 步时复用第t t 步的计算结果(即跳过第t+1 t+1 步计算)所导致的损失值。为了保证生成质量,不能连续跳过2 2 个及以上步骤(即不能连续复用)。请设计一个函数,在给定总迭代步骤数T T、需要跳过的步骤数k k,以及损失值列表的情况下,寻找最优的跳过策略,输出最小的总损失值。

输入描述

  1. TT:正整数 TT,表示总迭代步骤数(1<T10001<T≤1000)。
  2. kk:正整数 kk,表示需要跳过的步骤数(0k<T0≤k<T)。
  3. lossloss:损失值列表,以空格分隔的T1 T-1 个正整数。第 tt 个值(0t<T0≤t<T)表示跳过第 t+1t+1 步(复用第tt 步的计算结果)所带来的损失值。每个损失值均为小于 10001000 的正整数。

输出描述

outputoutput: 如果没有找到合适的解,输出 1-1;否则输出最小的总损失值。

样例 1

输入

6
2
2 1 2 4 5

输出

4

说明

跳过第 11 个步骤和第3 3 个步骤,总损失值为 2+2=42+2=4。由于不能连续跳过2 2 个步骤,因此不能跳过步骤1 1 和步骤2 2,或跳过步骤2 2 和步骤 33

样例 2

输入

6
4
2 1 2 4 5

输出

-1

说明

总迭代步骤数为5 5 时,无法跳过 44 个不连续的步骤,因此返回1 -1