大模型推理引擎vLLM(10): vLLM 分布式推理源码结构解析

文章目录

  • [1 why distributed inference](#1 why distributed inference)
  • [2 DP EP PP TP](#2 DP EP PP TP)
    • [2.1 TP](#2.1 TP)
      • [2.1.1 工程层面怎么通信](#2.1.1 工程层面怎么通信)
      • [2.1.2 算法层面](#2.1.2 算法层面)
    • [2.2 PP](#2.2 PP)
    • [2.3 EP](#2.3 EP)
    • [2.4 DP](#2.4 DP)
  • 参考文献

这篇博客是在看[EP02][精剪版]分布式推理优化,vllm源码解读这个学习视频时做的简单笔记,感兴趣的可以直接去看原视频。

1 why distributed inference

其实就是因为一张卡跑大模型跑不开了,还有其他原因就是分布式推理能够加快模型的推理优化。

2 DP EP PP TP

2.1 TP

vllm/vllm/distributed/parallel_state.py这个文件里面有为传统的parallel提供的一系列接口,

下面的这个数据结构就是用来分布式通信的

python 复制代码
    # message queue broadcaster is only used in tensor model parallel group
    _TP = init_model_parallel_group(group_ranks,
                                    get_world_group().local_rank,
                                    backend,
                                    use_message_queue_broadcaster=True,
                                    group_name="tp")

然后实际上用的是这个类class GroupCoordinator:

下面的参数是他的属性

python 复制代码
# available attributes:
    rank: int  # global rank
    ranks: list[int]  # global ranks in the group
    world_size: int  # size of the group
    # difference between `local_rank` and `rank_in_group`:
    # if we have a group of size 4 across two nodes:
    # Process | Node | Rank | Local Rank | Rank in Group
    #   0     |   0  |  0   |     0      |       0
    #   1     |   0  |  1   |     1      |       1
    #   2     |   1  |  2   |     0      |       2
    #   3     |   1  |  3   |     1      |       3
    local_rank: int  # local rank used to assign devices
    rank_in_group: int  # rank inside the group
    cpu_group: ProcessGroup  # group for CPU communication
    device_group: ProcessGroup  # group for device communication
    use_device_communicator: bool  # whether to use device communicator
    device_communicator: DeviceCommunicatorBase  # device communicator
    mq_broadcaster: Optional[Any]  # shared memory broadcaster

2.1.1 工程层面怎么通信

2.1.2 算法层面

vllm/vllm/distributed/device_communicators这个目录里面是通信相关的代码,
还可以看一下vllm/vllm/model_executor/models/llama.py这里面的管宇TP PP的代码,初学者学代码先用llama要比用deepseek更好,
deepseek模型结构更复杂

2.2 PP

2.3 EP

2.4 DP

参考文献

[EP02][精剪版]分布式推理优化,vllm源码解读

相关推荐
Evand J14 小时前
【MATLAB例程】5个UAV 分布式围捕编队运动仿真 —— 基于PID控制
开发语言·分布式·matlab
周公15 小时前
记一次在双 RTX 3090 工作站上部署 vLLM 与 Qwen3.6-35B-AWQ 的实战记录
python·ai·llama·vllm·ollama
蓝眸少年CY16 小时前
Spark - Code 核心教程
大数据·分布式·spark
敖正炀16 小时前
CAP 定理、BASE 理论与一致性模型深度
分布式
勤自省17 小时前
ROS2分布式通信与Launch文件实战:从踩坑到打通(第12-20讲总结)
分布式·ubuntu·ros2·gazebo·launch·rqt·rviz2
清风lsq1 天前
大模型-vllm 投机解码实现
人工智能·vllm·大模型推理
qq_452396231 天前
第十三篇:《分布式压测:JMeter Master-Slave集群》
分布式·jmeter
小英雄大肚腩丶1 天前
RabbitMQ消息队列
java·数据结构·spring boot·分布式·rabbitmq·java-rabbitmq
MXsoft6182 天前
**一套平台管全域****IT****:分布式一体化监控的实战演进**
分布式
古怪今人2 天前
etcd分布式键值存储系统 Windows下搭建etcd集群
数据库·分布式·etcd