File tree Expand file tree Collapse file tree 1 file changed +23
-4
lines changed
Expand file tree Collapse file tree 1 file changed +23
-4
lines changed Original file line number Diff line number Diff line change @@ -443,13 +443,32 @@ def _create_sequence_group_with_sampling(
443443 return seq_group
444444```
445445
446+ ### 3.4 深入理解 SequenceGroup
446447
447- ` SequenceGroup ` 的主要作用是管理一组从** 同一个输入 prompt 生成的多个序列** 。这在需要生成多个候选输出的场景下非常有用,比如并行生成多个样本以供选择或进行抽样,或者在模型生成过程中需要对同一个输入应用不同的策略(如采样参数)。该类能够追踪这些序列的状态、进度以及它们之间的关系。它通过对序列组的有效管理,确保每个序列可以在多步骤的生成过程中同步推进。
448+ ::: tip
449+
450+ 本小节参考了很多 [ 1] 中的内容, 感谢作者的分享。
451+
452+ :::
453+
454+ SequenceGroup 就是一个“1 个 prompt -> 多个 outputs”的容器。它包含一组“prompt -> output”的序列(我们称之为 seq,每个 seq 其实就是一个 Sequence 实例),每个 seq 会在推理过程中经历不同的状态(status)。这些状态为调度器提供了关键信息,让 vLLM 知道每个 seq 在什么时候、什么情况下应该做什么。
455+
456+ ::: note
457+
458+ 在 vLLM 中有一个重要假设:同一个 SequenceGroup 中的所有 seq 共享同一个 prompt。换句话说,一个 prompt 会生成多个不同的 outputs,但它们都来自同一个来源。
459+
460+ :::
461+
462+ 在自然语言处理任务中,经常需要一个 prompt 生成多个不同的 outputs。例如,给定一个问题,我们可能想要生成多个回答,或者在文本生成中提供不同的句子结尾。这种需求是因为:
463+
464+ - 多样性:我们想要看到不同的可能输出,以便选择最适合的。
465+ - 批量推理:在实际应用中,为了提高效率,我们往往批量生成多个候选输出,这样可以一次满足多个需求。
466+
467+ 于是,SequenceGroup 就是一个用于管理“一次 prompt 生成多个 outputs” 的容器。它能够把多个生成任务(seq)打包在一起,从而让系统知道这些 seq 是由同一个 prompt 产生的。
448468
449- ` SequenceGroup ` 有下面几个应用场景:
469+ 此外 SequenceGroup 还有帮助调度器灵活控制任务的计算状态的作用。在大规模推理时,GPU 资源可能会不足,尤其是当任务量大、生成输出的数量多时。如果 GPU 内存不够用,系统就得灵活管理这些计算资源——也就是“抢占”(preemption)机制。
450470
451- 1 . 多序列并行生成:在处理需要生成多个候选输出的任务时,如使用不同的采样策略(beam search, temperature sampling 等),SequenceGroup 可以管理每个不同策略生成的序列。这在语言模型的推理中很常见。
452- 2 . 跟踪生成进度:在长文本生成任务中,生成可能需要多轮迭代。每轮生成的状态需要被保留并继续使用。SequenceGroup 通过管理序列的状态(如是否已经完成生成、当前阶段是 prefill 还是 decode 等),可以高效跟踪多个序列的生成进度。
471+ 如果资源不足,SequenceGroup 中的所有 seq 可以一起被“swap out”到 CPU 中,等资源充足时再一起“swap in”,恢复计算。 换句话说,SequenceGroup 帮助系统“打包”了同一个 prompt 生成的多个 outputs,便于调度器做成批管理,而不是一个个零散管理。这样既避免了大量的小任务在内存中频繁进出,又可以在有资源时迅速恢复计算,提高了 GPU 利用率。
453472
454473到此,输入的预处理工作就完成了,我们成功的将用户的请求转换为了 ` SequenceGroup ` 对象,` SequenceGroup ` 对象包含了多个 ` Sequence ` 对象,且存储了用户请求的信息,包括请求的唯一 ID、请求的到达时间、采样参数等。
455474
You can’t perform that action at this time.
0 commit comments