百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

关于多显卡并行部署大模型

ztj100 2025-03-03 21:14 9 浏览 0 评论

随着deepseek的爆火,和vllm和ollama等框架的加持,是的部署一个大语言模型变得越来越简单,但是大模型往往是分参数级别的,以billion(十亿)为单位,分7B,32B,40B,72B等,deepseek的最高版(满血版)是685B,不通的参数级别对显存的要求大小不一样,有的需要显存24g,48g等等,如果想运行参数太大,一张显卡的显存不够怎么办,这就需要一台电脑上装多个显卡,也就涉及到部署框架同时使用多个显卡的显存来运行大模型的情况。

下面我列出vllm和ollama,两种最常用的部署框架的多显卡并行的对比。

vLLM 的张量并行(Tensor Parallelism)和 Ollama 的层级并行(Layer Parallelism)是两种不同的多 GPU 并行策略,适用于不同的场景和需求。以下是对它们的优缺点对比,结合技术原理和实际应用:

1. vLLM 的张量并行(Tensor Parallelism)

原理

  • 分割方式:将模型的每一层的权重矩阵(例如 Transformer 的注意力层或全连接层)按列或行分割,分摊到多个 GPU 上。每个 GPU 负责计算矩阵的一部分,然后通过通信(如 NCCL)汇总结果。
  • 依赖:需要 GPU 间的高速通信(例如 NVLink 或 PCIe),因为每一步计算都需要跨 GPU 同步中间结果。
  • 目标:扩展显存容量,适合超大模型推理。

优点

  1. 显存扩展能力强
    通过将权重分片到多个 GPU,可以支持比单 GPU 显存更大的模型。例如,一个 70B 参数模型可能需要 140GB 显存,张量并行可以将它分布到 4 张 40GB 的 GPU 上。
  2. 高吞吐量
    vLLM 针对推理服务优化,结合张量并行和高效的批处理(如 PagedAttention),能在多用户请求场景下提供更高的吞吐量。
  3. 灵活性
    可与流水线并行(Pipeline Parallelism)结合,适用于跨节点分布式推理,进一步扩展规模。
  4. 适合现代大模型
    对于参数量巨大的模型(如 LLaMA 70B 或更大的混合专家模型 MoE),张量并行是主流选择。

缺点

  1. 通信开销高
    每层计算都需要跨 GPU 通信(All-Reduce 或 All-Gather 操作),如果 GPU 间带宽不足(如无 NVLink,仅用 PCIe),性能会显著下降。
  2. 计算加速有限
    张量并行的主要目的是扩展显存,而非加速单次推理。对于小批次或单次请求,速度提升不明显,甚至可能因通信延迟变慢。
  3. 配置复杂
    需要手动指定 tensor_parallel_size,且硬件配置(如 NVLink 支持)会对效果产生很大影响。
  4. 资源利用率可能不均
    如果模型权重无法均匀分割,或者输入批次较小,某些 GPU 的计算能力可能未被充分利用。

适用场景

  • 高吞吐量推理服务(如 API 服务器)。
  • 超大模型(显存需求超过单 GPU 容量)。
  • 有高速通信硬件支持的场景(如 DGX 系统或多 GPU 服务器)。

2. Ollama 的层级并行(Layer Parallelism)

原理

  • 分割方式:基于 llama.cpp 的实现,将模型的层(layers,例如 Transformer 的多层结构)分配到不同 GPU 上。每个 GPU 负责计算模型中的一部分层,依次传递中间激活值(activation)。
  • 依赖:层间通信较少,主要在层与层之间传递数据,通信开销低于张量并行。
  • 目标:分散计算负载,同时扩展显存。

优点

  1. 通信开销低
    只需要在层与层之间传递激活值(通常是较小的张量),相比张量并行的频繁矩阵通信,带宽需求更低,适合普通 PCIe 连接的硬件。
  2. 计算加速潜力
    如果层分配合理,多个 GPU 可以并行处理不同层的计算,可能加速单次推理,尤其在模型层数较多时。
  3. 简单性
    Ollama 的层级并行是内置于 llama.cpp 的,默认情况下会尝试利用所有可用 GPU,无需过多手动配置。
  4. 适合中小模型
    对于中小规模模型(例如 7B 或 13B 参数),层级并行能有效利用多 GPU 的计算能力,而无需复杂设置。

缺点

  1. 显存扩展有限
    每个 GPU 需要存储部分层及其激活值。如果单层权重仍然很大(例如某些超大模型),单个 GPU 的显存可能不足,导致无法运行。
  2. 负载不均衡
    不同层的计算复杂度可能不同(例如注意力层和全连接层的计算量差异),导致某些 GPU 忙碌而其他 GPU 空闲。
  3. 吞吐量优化不足
    Ollama 更注重单机推理的简便性,缺乏 vLLM 那样的批处理优化,难以应对高并发请求。
  4. 依赖底层实现
    层级并行的效果受限于 llama.cpp 的实现,可能不如 vLLM 的张量并行在特定硬件上优化得彻底。

适用场景

  • 单用户或低并发推理。
  • 中小型模型(显存需求接近但不超过多 GPU 总和)。
  • 普通消费级硬件(无 NVLink,仅 PCIe 连接)。

优缺点对比表

特性

vLLM 张量并行

Ollama 层级并行

显存扩展能力

强(支持超大模型)

中等(受单层显存限制)

计算加速效果

有限(通信开销高)

中等(层间通信少)

通信开销

高(需要高速带宽,如 NVLink)

低(仅层间数据传递)

吞吐量优化

强(服务场景优化)

弱(单机推理为主)

配置复杂度

高(需手动设置参数)

低(默认尝试多 GPU)

硬件依赖

高(需高速互联)

低(普通 PCIe 即可)

适用模型规模

大型到超大型模型

小型到中型模型

适用场景

高并发推理服务

单用户本地推理


实际应用选择建议

  1. 如果你运行超大模型(例如 70B+ 参数)
    选择 vLLM 张量并行,因为它能有效分解显存需求,搭配高速通信硬件(如 NVLink)效果更佳。适合需要服务多人请求的场景。
  2. 如果你运行中小模型(例如 7B 或 13B)
    选择 Ollama 层级并行,因为它简单易用,通信开销低,适合本地单机推理,尤其在普通硬件上。
  3. 硬件条件
    有 NVLink 或高端服务器:优先 vLLM。
    普通消费级多 GPU(如 3090 或 4090):Ollama 更实用。
  4. 性能目标
    高吞吐量:vLLM(结合批处理和张量并行)。
    单次推理速度:Ollama(层级并行可能更直接)。

补充说明

  • 混合使用:在某些情况下,可以结合两种策略。例如,先用 vLLM 的张量并行分片权重,再用流水线并行分配层,但这需要更高复杂度的配置,Ollama 目前不支持这种灵活性。
  • 硬件测试:无论选择哪种方式,建议用 nvidia-smi 监控 GPU 利用率和显存占用,调整策略以优化性能。

相关推荐

告别手动操作:一键多工作表合并的实用方法

通常情况下,我们需要将同一工作簿内不同工作表中的数据进行合并处理。如何快速有效地完成这些数据的整合呢?这主要取决于需要合并的源数据的结构。...

【MySQL技术专题】「优化技术系列」常用SQL的优化方案和技术思路

概述前面我们介绍了MySQL中怎么样通过索引来优化查询。日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如INSERT、GROUPBY等。对于这些SQL语句,我们该怎么样进行优化呢...

9.7寸视网膜屏原道M9i双系统安装教程

泡泡网平板电脑频道4月17日原道M9i采用Win8安卓双系统,对于喜欢折腾的朋友来说,刷机成了一件难事,那么原道M9i如何刷机呢?下面通过详细地图文,介绍原道M9i的刷机操作过程,在刷机的过程中,要...

如何做好分布式任务调度——Scheduler 的一些探索

作者:张宇轩,章逸,曾丹初识Scheduler找准定位:分布式任务调度平台...

mysqldump备份操作大全及相关参数详解

mysqldump简介mysqldump是用于转储MySQL数据库的实用程序,通常我们用来迁移和备份数据库;它自带的功能参数非常多,文中列举出几乎所有常用的导出操作方法,在文章末尾将所有的参数详细说明...

大厂面试冲刺,Java“实战”问题三连,你碰到了哪个?

推荐学习...

亿级分库分表,如何丝滑扩容、如何双写灰度

以下是基于亿级分库分表丝滑扩容与双写灰度设计方案,结合架构图与核心流程说明:一、总体设计目标...

MYSQL表设计规范(mysql表设计原则)

日常工作总结,不是通用规范一、表设计库名、表名、字段名必须使用小写字母,“_”分割。...

怎么解决MySQL中的Duplicate entry错误?

在使用MySQL数据库时,我们经常会遇到Duplicateentry错误,这是由于插入或更新数据时出现了重复的唯一键值。这种错误可能会导致数据的不一致性和完整性问题。为了解决这个问题,我们可以采取以...

高并发下如何防重?(高并发如何防止重复)

前言最近测试给我提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。...

性能压测数据告诉你MySQL和MariaDB该怎么选

1.压测环境为了尽可能的客观公正,本次选择同一物理机上的两台虚拟机,一台用作数据库服务器,一台用作运行压测工具mysqlslap,操作系统均为UbuntuServer22.04LTS。...

屠龙之技 --sql注入 不值得浪费超过十天 实战中sqlmap--lv 3通杀全国

MySQL小结发表于2020-09-21分类于知识整理阅读次数:本文字数:67k阅读时长≈1:01...

破防了,谁懂啊家人们:记一次 mysql 问题排查

作者:温粥一、前言谁懂啊家人们,作为一名java开发,原来以为mysql这东西,写写CRUD,不是有手就行吗;你说DDL啊,不就是设计个表结构,搞几个索引吗。...

SpringBoot系列Mybatis之批量插入的几种姿势

...

MySQL 之 Performance Schema(mysql安装及配置超详细教程)

MySQL之PerformanceSchema介绍PerformanceSchema提供了在数据库运行时实时检查MySQL服务器的内部执行情况的方法,通过监视MySQL服务器的事件来实现监视内...

取消回复欢迎 发表评论: