nano-vllm学习

看代码步骤

复制代码
 1. 调度:决定下一步运行哪些序列
seqs, is_prefill = self.scheduler.schedule()

其中seqs表示被调度的序列列表。

seqs是一个包含 Sequence对象的列表,这些是被调度器选中、将要送入模型进行本次推理的序列。

这些序列的来源:

新请求:第一次运行的序列(需要预填充)

进行中的请求:已生成部分token,需要继续生成的序列

混合批次:可能同时包含新序列和进行中序列

3. 后处理:更新序列状态

self.scheduler.postprocess(seqs, token_ids)更新序列状态什么意思

在 LLM 推理中,每个用户请求对应一个Sequence(序列)对象。每次模型生成一个新的 token 后,需要更新这个序列的状态。具体包括:

1.添加新生成的 token 到序列中

python 复制代码
# 在 Sequence 类中可能有这样的逻辑:
for seq, new_token_id in zip(seqs, token_ids):
    seq.generated_token_ids.append(new_token_id)  # 添加到已生成列表
    seq.total_tokens += 1  # 总token数+1

2.检查序列是否应该结束

需要检查各种停止条件:

  • 是否生成了结束符(EOS token)

  • 是否达到最大生成长度

  • 是否满足特定的停止字符串条件

python 复制代码
# 伪代码示例
for seq in seqs:
    # 检查EOS token
    if new_token_id == config.eos_token_id:
        seq.is_finished = True
    
    # 检查最大长度
    if len(seq) >= seq.max_tokens:
        seq.is_finished = True
    
    # 检查停止字符串
    current_text = tokenizer.decode(seq.generated_token_ids)
    if any(stop_str in current_text for stop_str in seq.stop_strings):
        seq.is_finished = True

3.更新KV缓存的元数据

在vLLM的内存管理中,每个序列的KV缓存存储在特定的内存块中。更新状态包括:

  • 记录当前使用了哪些内存块

  • 如果序列结束,标记这些块为可回收状态

  • 更新序列在内存块中的位置指针

  1. 更新调度器的内部数据结构

调度器需要维护不同状态的序列:

  • 运行中:正在生成token的序列

  • 等待中:等待调度的序列

  • 已完成:生成结束的序列

postprocess会将已完成的序列从运行队列移到完成队列。

实际例子

假设有两个序列:

  • 序列A:已生成 "你好", "世界",还需要继续生成

  • 序列B :已生成 "今天天气", "不错",刚生成了结束符<eos>

执行 postprocess后:

  1. 序列A的token列表变为 "你好", "世界", "新token"

  2. 序列B标记为已完成

  3. 序列B的KV缓存被释放

  4. 序列B从运行队列移除

相关推荐
an12321211 小时前
ARM嵌入式学习笔记:SPI通信协议详解
arm开发·笔记·学习
by209992 小时前
从结构体到对象:正式学习C++类的骨架、封装与this指针
c++·经验分享·学习
乌暮2 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
小雪崩3 小时前
嵌入式学习 day60:ARM汇编——触摸屏与SPI
汇编·arm开发·学习
问天_观心4 小时前
大模型训练与推理优化(二)
人工智能·深度学习·学习·大模型·transformer
海海不掉头发5 小时前
软件项目管理学习笔记-从软件危机到敏捷与DevOps
笔记·学习·devops
传奇开心果编程6 小时前
【SwiftUI入门练中学】第7课 动画与手势:让界面更灵动
学习·macos·ui·ios·swiftui·swift
智码看视界6 小时前
开源大模型追踪:腾讯混元Hy4preview,FP8 770GB 落地企业私有化,Apache 2.0 无字段限制
开源·vllm·开源大模型·apache2.0·fp8量化·腾讯混元hy4·agent推理
幼儿园蛋小黄6 小时前
SPI 多点触摸屏学习嵌入式总结
学习
dadaobusi6 小时前
学习:顶点着色器输出后,三角形为什么是四个分量
学习