如何在AMD MI300X 服务器上部署 DeepSeek R1模型?

news2025/4/17 3:19:06

DeepSeek-R1凭借其深度推理能力备受关注,在语言模型性能基准测试中可与顶级闭源模型匹敌。

AMD Instinct MI300X GPU可在单节点上高效运行新发布的DeepSeek-R1和V3模型。

用户通过SGLang优化,将MI300X的性能提升至初始版本的4倍,且更多优化将在未来几周内集成到开源代码中。

MI300X的高内存带宽和容量优势,使Chain of Thought(CoT)推理能更快速、高效地访问大内存,支持实际应用中更长序列的处理。

在本博文中,我们将探讨DeepSeek-R1如何在AMD Instinct™ MI300X GPU上实现卓越性能,并与H200进行性能对比。借助MI300X,用户可在单节点上高效部署DeepSeek-R1和V3模型。仅通过两周的SGLang优化,推理速度已提升高达4倍,确保了高效扩展、更低延迟及优化吞吐量。MI300X的高带宽内存(HBM)和强大算力可处理复杂AI任务,支持更长序列和高要求推理。AMD与SGLang社区持续推进优化,包括融合MoE内核、MLA内核融合及推测性解码,使MI300X的AI推理体验更加强大。

目前,企业除了可以从AMD官方预定MI300X以外,还可以通过云平台来使用MI300X,例如DigitalOcean 最新推出的基于MI300X的GPU 裸金属服务器(具体详情可咨询卓普云)。

DeepSeek模型部署挑战

尽管大规模部署需求日益迫切,但实现最优推理性能仍面临技术挑战。DeepSeek-R1是一个超大规模模型(参数量超640 GB),即使以FP8精度训练,也无法在8卡NVIDIA H100单节点中部署。此外,其多头潜在注意力(MLA)和专家混合(MoE)架构需要高度优化的内核以实现高效扩展和定制化优化。最后,适配支持块量化FP8 GEMM内核对最大化吞吐量和性能至关重要,因此内核调优是高效执行的关键。

在MI300X上使用SGLang

SGLang是面向LLM和VLM的高性能开源推理框架,提供高效运行时、广泛模型支持及活跃社区,正被行业广泛采用。AMD作为SGLang的核心贡献者,与社区紧密合作,优化AMD Instinct GPU上的LLM推理。为提供最佳MI300X开箱即用体验,SGLang已发布预构建Docker镜像和文件,既可用于生产部署,也可作为定制化用例的起点。

基准测试关键结论

以下是SGLang在Instinct MI300X上的推理基准测试要点:

  • 仅两周内,通过优化FP8精度的6710亿参数DeepSeek-R1模型(非精简版),推理性能提升高达4倍,所有优化已集成到SGLang(图1)。
  • DeepSeek-R1和V3模型在MI300X上经过高度优化,充分利用其强大算力和大容量HBM内存。

对于需低延迟的在线推理场景(如聊天应用),单节点8卡MI300X在32并发请求下仍可保持每输出token时间(TPOT)低于50ms。离线任务则可通过更大并发设置提升吞吐量。

图2显示,当最大并发从1增至32时,性能主要受限于内存;而32至64并发区间则转为计算瓶颈。

如何复现基准测试

以下是MI300X和H200的测试步骤(假设模型已下载):

在MI300X上

1、下载Docker镜像:

    docker pull rocm/sglang-staging:20250212  

    2、运行容器:

    docker run -d -it --ipc=host --network=host --privileged --device=/dev/kfd --device=/dev/dri --device=/dev/mem --group-add render --security-opt seccomp=unconfined -v /home:/workspace rocm/sglang-staging:20250212  
    docker exec -it <container_id> bash  

    3、启动推理服务:

    HSA_NO_SCRATCH_RECLAIM=1 python3 -m sglang.launch_server --model /workspace/models/DeepSeek-R1/ --tp 8 --trust-remote-code  

    4、运行客户端请求:

    concurrency_values=(128 64 32 16 8 4 2 1)  
    for concurrency in "${concurrency_values[@]}";do  
        python3 -m sglang.bench_serving \  
        --dataset-name random \  
        --random-range-ratio 1 \  
        --num-prompt 500 \  
        --random-input 3200 \  
        --random-output 800 \  
        --max-concurrency "${concurrency}"  
    done  

      在H200上

      1、下载Docker镜像:

      docker pull lmsysorg/sglang:v0.4.2.post3-cu125  

      2、运行容器:

      docker run -d -it --rm --gpus all --shm-size 32g -p 30000:30000 -v /home:/workspace --ipc=host lmsysorg/sglang:v0.4.2.post4-cu125  
      docker exec -it <container_id> bash  

      3、使用与MI300X相同的命令运行基准测试:

      HSA_NO_SCRATCH_RECLAIM=1 python3 -m sglang.launch_server --model /workspace/models/DeepSeek-R1/ --tp 8 --trust-remote-code  

        完成以上步骤后,就可以在MI300X服务器上实时运行DeepSeek-R1的聊天应用了。

        未来方向

        未来AMD与SGLang将推出更多优化,包括:

        • 融合MoE内核优化
        • MLA内核融合
        • 集群通信增强
        • 数据并行(DP)与专家并行(EP)
        • 前向计算与解码分离
        • 投机性解码

        这些改进将进一步释放MI300X的潜力,为AI推理带来更强大的性能。另外,如果希望机遇MI300X部署进行AI产品开发,欢迎了解DigitalOcean GPU Droplet服务器,​具体详情可咨询DigitalOcean中国区独家战略合作伙伴卓普云。​

        本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335203.html

        如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

        相关文章

        RTX 5060 Ti 3DMark跑分首次流出:比RTX 4060 Ti快20%

        快科技4月14日消息&#xff0c;根据VideoCardz拿到的数据&#xff0c;RTX 5060 Ti 16GB在3DMark的系列基准测试中&#xff0c;平均较上一代RTX 4060 Ti 16GB高出20%。 具体来看&#xff0c;RTX 5060 Ti 16GB在3DMark的测试中表现如下&#xff1a; TimeSpy&#xff08;1440p&a…

        【STL】set

        在 C C C S T L STL STL 标准库中&#xff0c; s e t set set 是一个关联式容器&#xff0c;表示一个集合&#xff0c;用于存储唯一元素的容器。 s e t set set 中的元素会自动按照一定的顺序排序&#xff08;默认情况下是升序&#xff09;。这意味着在 s e t set set 中不能…

        深入剖析C++中 String 类的模拟实现

        目录 引言 一、基础框架搭建 成员变量与基本构造函数 析构函数 二、拷贝与赋值操作 深拷贝的拷贝构造函数 赋值运算符重载 三、字符串操作功能实现 获取字符串长度 字符串拼接 字符串比较 字符访问 四、迭代器相关实现&#xff08;简单模拟&#xff09; 迭代器类型…

        STL之priority_queue的用法与实现

        目录 1. priority_queue的介绍 1.1. priority_queue的概念 1.2. priority_queue的特点 2. 仿函数 2.1. 仿函数的概念 2.2. 仿函数的应用 2.3 仿函数的灵活性 3. priority_queue的用法 4. 模拟实现priority_queue 4.1. 插入 4.2. 删除 5. 源码 priority_…

        散户使用算法交易怎么做?

        智能算法交易是量化交易里面最常见的一种&#xff0c;也是大多数散户被套住的股票&#xff0c;想要解套&#xff0c;降低成本最直接有效的方式。但是往往这种波动速度小&#xff0c;担心速度跟不上的情况&#xff0c;我们就要叠加快速通道。 第一&#xff1a;算法交易的应用场…

        mongodb 安装配置

        1.官网下载地址&#xff1a;MongoDB Community Download | MongoDB 2.解压包安装&#xff1a;https://pan.baidu.com/s/1Er56twK9UfxoExuCPlJjhg 提取码: 26aj 3.配置环境&#xff1a; &#xff08;1&#xff09;mongodb安装包位置&#xff1a; &#xff08;2&#xff09;复…

        榕壹云酒水定制系统:基于THinKPHP+MySQL+UniApp打造数字化时代的个性化购酒新体验

        数字化浪潮下的酒水定制新机遇 在消费升级与个性化需求崛起的背景下,传统酒水行业正面临数字化转型的迫切需求。为此,我们团队基于ThinkPHP+MySQL+UniApp技术栈,开发了一套榕壹云酒水定制系统,旨在通过数字化手段解决消费者个性化购酒痛点,为酒类品牌提供全链路数字化解决…

        Leetcode——137 260找出只出现一次的数

        文章目录 找出只出现一次的数引入Leetcode 260Leetcode 137 找出只出现一次的数 对于数组中有一类题&#xff0c;即某些数据在数组中只出现一遍&#xff0c;需要我们找出&#xff0c;今天我们来看看这个类型的题。 引入 想必大家应该见过这么一道题&#xff1a; 现给定一个数…

        OpenTiny使用指南

        最近项目里用到了一个新的组件库——OpenTiny&#xff0c;但是官方文档的使用指南的描述很复杂&#xff0c;花了一些时间尝试才正常使用。下面是一个使用步骤的描述&#xff0c;可放心食用&#xff1a; 一、安装 TinyVue 组件库同时支持 Vue 2.0 和 Vue 3.0 框架&#xff0c;…

        KingbaseES之KDts迁移SQLServer

        项目适配迁移SQLServer至金仓,今天写写KDts-WEB版迁移工具迁移SQLServer至KingbaseES的步骤,以及迁移注意事项. SQLServer版本:SQLServer2012 KingbaseES版本:V009R004C011(SQLServer兼容版) --1.进入数据库客户端工具KDTS工具目录&#xff0c;启动KDts服务&#xff1a; [king…

        代码随想录动态规划part02

        动态规划part02 62.不同路径 代码随想录 视频讲解&#xff1a;动态规划中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路径_哔哩哔哩_bilibili 递归法 动态规划&#xff0c;当前状态是由上一个状态转化来的 这里初始化错误了&#xff0c;想法是对的右一和…

        详解如何复现DeepSeek R1:从零开始利用Python构建

        DeepSeek R1 的整个训练过程&#xff0c;说白了就是在其基础模型&#xff08;也就是 deepseek V3&#xff09;之上&#xff0c;用各种不同的强化学习方法来“雕琢”它。 咱们从一个小小的本地运行的基础模型开始&#xff0c;一边跟着 DeepSeek R1 技术报告 的步骤&#xff0c;…

        Java集合框架 源码分析 迭代器 并发修改异常底层原理

        迭代器 Java中的Iterator&#xff08;迭代器&#xff09;是集合框架中用于遍历容器元素的统一接口&#xff0c;提供了一种标准化的元素访问方式&#xff0c;无需依赖具体集合类型的实现细节。以下是其核心要点&#xff1a; 一、核心方法与使用步骤 获取迭代器 通过集合的 it…

        Cannot find module ‘vue‘ or its corresponding type declarations

        在使用vue3vite创建新的工程时&#xff0c;在新增.vue文件时会出现Cannot find module vue这个错误。 只需要我们在项目中的.d.ts文件中添加以下代码即可 declare module *.vue {import { defineComponent } from vue;const component: ReturnType<typeof defineComponent&…

        【Python爬虫】详细工作流程以及组成部分

        目录 一、Python爬虫的详细工作流程 确定起始网页 发送 HTTP 请求 解析 HTML 处理数据 跟踪链接 递归抓取 存储数据 二、Python爬虫的组成部分 请求模块 解析模块 数据处理模块 存储模块 调度模块 反爬虫处理模块 一、Python爬虫的详细工作流程 在进行网络爬虫工…

        欧拉服务器操作系统部署deekseep(Ollama+DeekSeep+open WebUI)

        ​​一、解压并安装 Ollama​​ # 1. 解压文件&#xff08;默认会得到一个二进制文件&#xff09; tar -xzvf ollama-linux-amd64.tgz# 2. 将二进制文件安装到系统路径 sudo mv ollama /usr/local/bin/ sudo chmod x /usr/local/bin/ollama# 3. 验证安装 ollama --version链接…

        #4 我们为什么使用物联网? 以及 物联网的整体结构

        设备不物联是否可以&#xff1f; 答案 是可以的&#xff0c;从项目实战的角度&#xff0c;还是有很多包括分拣&#xff0c;控制&#xff0c;检测等应用是分立的&#xff0c;这个和成本&#xff0c;场景&#xff0c;客户接受度等因素有关。 局部看&#xff0c;一些系统的确很简…

        3D版的VLA——从3D VLA、SpatialVLA到PointVLA(不动VLM,仅动作专家中加入3D数据)

        前言 之前写这篇文章的时候&#xff0c;就想解读下3D VLA来着&#xff0c;但一直因为和团队并行开发具身项目&#xff0c;很多解读被各种延后 更是各种出差&#xff0c;比如从25年3月下旬至今&#xff0c;连续出差三轮&#xff0c;绕中国半圈&#xff0c;具身占八成 第一轮 …

        linux Shell编程之循环语句(三)

        目录 一. for 循环语句 1. for语句的结构 2. for 语句应用示例 (1) 根据姓名列表批量添加用户 (2) 根据 IP 地址列表检查主机状态 二. 使用 while 循环语句 1. while 语句的结构 2. while 语句应用示例 (1) 批量添加规律编号的用户 (2) 猜价格游戏 三. until 循环语…

        C#容器源码分析 --- Queue<T>

        Queue<T> 是 System.Collections.Generic 命名空间下的先进先出&#xff08;FIFO&#xff09;动态集合&#xff0c;其核心实现基于​​循环数组​​&#xff0c;通过维护头尾指针实现高效入队和出队操作。 .Net4.8 Queue<T>源码地址&#xff1a;queue.cs (microso…