新闻详情

新闻详情

首页 / 资讯中心 / 详情

DeepSpeed 高级安装指南:Ops 预编译、多节点分发与 GPU 架构定制

发布时间:2026/9/25 8:03:10来源:尧图网络
DeepSpeed 高级安装指南:Ops 预编译、多节点分发与 GPU 架构定制
推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载DeepSpeed 在训练与推理时依赖一组 C/CUDA 扩展即 ops安装方式直接决定了首次运行是即时编译还是提前编译进而影响部署速度与多机一致性。本文以 DeepSpeed 官方安装文档benchmark/third_party/DeepSpeed/docs/_tutorials/advanced-install.md为主线结合本仓库内随附的 DeepSpeed 源码benchmark/third_party/DeepSpeed作为 FlexGen 基准测试套件的第三方依赖被引入系统讲解快速安装、Ops 预编译开关、多节点分发、JIT 缓存管理、GPU 架构定制与功能依赖等完整安装细节。读完本文你将掌握从单机pip install到跨节点 wheel 分发的全套 DeepSpeed 部署方案并能独立排查no kernel image、扩展缓存冲突等典型安装问题。快速开始pip 安装与 JIT 默认模式DeepSpeed 最快捷的安装方式是通过 pip 安装最新发布版该版本不绑定特定 PyTorch 或 CUDA 版本pip install deepspeed安装完成后DeepSpeed 自带若干 C/CUDA 扩展官方统称为 ops。默认情况下所有这些扩展/ops 都会采用即时编译Just-In-TimeJIT方式即利用 PyTorch 的 JIT C 扩展加载器依赖 ninja在运行时完成构建和动态链接而不是在安装阶段编译。安装结束后推荐立即验证安装结果并查看当前机器与哪些 ops 兼容使用 DeepSpeed 环境报告工具ds_report等价地也可以使用 Python 模块方式调用python -m deepspeed.env_report这份报告在排查 DeepSpeed 安装或兼容性问题时非常有用。从仓库源码看该工具实现在 deepspeed/env_report.py它输出两类信息DeepSpeed C/CUDA extension op report逐项列出所有 op 的installed是否已安装与compatible系统依赖是否满足状态并检查 JIT 编译所必需的ninja是否可用general environment infotorch 安装路径与版本、torch cuda/hip 版本、nvcc 版本、deepspeed 安装路径、deepspeed 版本/ git 哈希 / 分支以及 wheel 编译时对应的 torch 与 cuda 版本。报告还支持两个参数--hide_operator_status隐藏各 op 的安装与兼容状态和--hide_errors_and_warnings隐藏警告与错误信息。运行入口脚本位于 bin/ds_report。预编译 DeepSpeed Ops在某些场景下提前编译部分或全部 DeepSpeed C/CUDA ops、而不是依赖 JIT 编译路径会更有优势例如提前发现编译错误、缩短首次运行时间、为多机部署准备一致的二进制。注意如果打算预编译任何 DeepSpeed c/cuda opsPyTorch 必须事先安装好而默认的 JIT 编译模式则无此要求。这一点在 setup.py 中也有体现一旦开启预编译DS_BUILD_OPS若 torch 不可用会直接断言失败。一键开启全部 Ops 预编译通过环境变量DS_BUILD_OPS1告诉安装器无论是install.sh还是pip install尝试安装全部 opsDS_BUILD_OPS1 pip install deepspeedDeepSpeed 只会安装与当前机器兼容的 ops具体哪些 op 与你的系统兼容请使用上文介绍的ds_report工具查看。从源码机制看setup.py 会遍历ALL_OPS中注册的所有 op builder逐个调用builder.is_compatible()做兼容性检查兼容且被开启的 op 会加入ext_modules参与预编译被请求但不可用的 op 会直接中止安装并提示可通过对应DS_BUILD_*环境变量置 0 来禁用。ALL_OPS的注册逻辑见 op_builder/all_ops.py它会反射扫描所有*Builder类并实例化。只安装特定 Op如果只想安装某一个 op例如FusedLamb可以在安装时使用对应的DS_BUILD环境变量开关DS_BUILD_FUSED_LAMB1 pip install deepspeed可用的DS_BUILD选项如下环境变量作用DS_BUILD_OPS切换全部 ops1 安装全部DS_BUILD_CPU_ADAM构建 CPUAdam opDS_BUILD_FUSED_ADAM构建 FusedAdam opDS_BUILD_FUSED_LAMB构建 FusedLamb opDS_BUILD_SPARSE_ATTN构建稀疏注意力 opDS_BUILD_TRANSFORMER构建 transformer opDS_BUILD_TRANSFORMER_INFERENCE构建 transformer-inference opDS_BUILD_STOCHASTIC_TRANSFORMER构建随机 transformer opDS_BUILD_UTILS构建各类优化工具DS_BUILD_AIO构建异步NVMeI/O op每个开关在源码中都有对应定义例如 op_builder/fused_lamb.py 中BUILD_VAR DS_BUILD_FUSED_LAMB、op_builder/cpu_adam.py 中BUILD_VAR DS_BUILD_CPU_ADAM、op_builder/fused_adam.py 中BUILD_VAR DS_BUILD_FUSED_ADAM、op_builder/async_io.py 中BUILD_VAR DS_BUILD_AIO。op 的注册清单见 op_builder/builder_names.py完整的 builder 实现目录为 op_builder/除上表所列外还包括cpu_adagrad、quantizer、spatial_inference等。并行化全量编译全量构建比较耗时可以通过并行编译加速DS_BUILD_OPS1 pip install deepspeed --global-optionbuild_ext --global-option-j8这种方式通常能让完整构建提速 23 倍。-j后的数字表示参与构建的 CPU 核数上例为 8 核可按机器核数调整。构建 wheel 并在多台机器分发如果多台机器的 GPU 型号相同、软件环境一致CUDA toolkit、PyTorch、Python 等可以先在本机构建二进制 wheel再批量安装DS_BUILD_OPS1 python setup.py build_ext -j8 bdist_wheel该命令会在dist目录下生成 PyPI 二进制 wheel例如dist/deepspeed-0.3.138cd046f-cp38-cp38-linux_x86_64.whl然后在各台目标机器上直接安装pip install dist/deepspeed-0.3.138cd046f-cp38-cp38-linux_x86_64.whl关于 wheel 版本号setup.py 展示了生成规则基础版本号读取自 version.txt默认会拼接当前 git 短哈希如示例中的8cd046f若通过DS_BUILD_STRING环境变量指定例如发布场景则拼接该字符串安装官方分发包时则读取build.txt。此外setup.py 会把已安装 ops、兼容 ops、torch 版本信息写入deepspeed/git_version_info_installed.py供ds_report与运行时校验使用。从源码安装 DeepSpeed克隆 DeepSpeed 仓库后可以通过 pip 以 JIT 模式安装pip install .由于此模式不编译任何 C/CUDA 源码安装会很快完成。多节点安装install.sh对于跨多节点的安装场景官方建议使用仓库自带的 install.sh 脚本。该脚本会在本地构建 python wheel并将其拷贝到 hostfile 中列出的所有节点hostfile 可通过--hostfile指定默认路径为/job/hostfile。结合脚本源码其可选参数包括参数说明-l, --local_only仅在本地机器安装-s, --pip_sudo以 sudo 运行 pip install默认不加 sudo-r, --allow_sudo允许以 root 身份运行脚本通常不建议建议改用--pip_sudo-n, --no_clean不清除先前的构建状态默认会在构建 wheel 前删除旧构建文件如dist、build、deepspeed.egg-info等-m, --pip_mirror使用指定的 pip 镜像源-H, --hostfile指定 MPI 风格 hostfile默认/job/hostfile-e, --examples仅检出 deepspeed 示例子模块不安装-v, --verbose详细日志-h, --help帮助信息脚本流程install.sh大致为若默认 hostfile 不存在则回退为本地安装否则先python setup.py bdist_wheel构建本地 wheel再借助pdsh/pdcp在 hostfile 列出的所有节点上卸载旧版、分发 wheel 并逐一执行ds_report验证。JIT 编译与扩展缓存目录当代码首次使用 DeepSpeed 时只会自动构建当前运行所必需的 CUDA 扩展默认放置在~/.cache/torch_extensions/目录下。下一次执行同一程序时这些已预编译的扩展会直接从该目录加载。多虚拟环境场景的坑默认只有一个torch_extensions目录而不同的虚拟环境可能使用不同的配置如不同 Python 或 CUDA 版本此时加载由另一个环境构建的 CUDA 扩展会失败。解决方法是使用TORCH_EXTENSIONS_DIR环境变量覆盖默认位置在每个虚拟环境中指向各自独立的目录TORCH_EXTENSIONS_DIR./torch-extensions deepspeed ...这样 DeepSpeed 会使用该目录保存和加载 CUDA 扩展且仅对本次运行生效。为正确的 GPU 架构构建如果运行 deepspeed 时出现如下错误RuntimeError: CUDA error: no kernel image is available for execution on the device说明当前 CUDA 扩展并不是为正在使用的显卡构建的。从源码构建时DeepSpeed 会尝试支持尽可能广泛的架构但在 JIT 模式下它只支持构建时可见visible的架构。可以为期望的架构范围显式构建通过设置TORCH_CUDA_ARCH_LIST环境变量TORCH_CUDA_ARCH_LIST6.1;7.5;8.6 pip install ...只构建少数几个架构时编译速度也会更快。这也是确保使用确切架构的推荐做法由于种种技术原因分发的 PyTorch 二进制并未完整支持所有架构会跳过二进制兼容的架构可能导致你的显卡计算能力未被充分利用。构建结束后可以保存日志并grep-gencode参数查看 deepspeed 从源码构建时实际包含了哪些架构。从源码机制看op_builder/builder.py 中的compute_capability_args()说明了架构选择的优先级JIT 模式下会遍历当前可见的每张 GPU用torch.cuda.get_device_capability()取实际计算能力并在最后一个架构后追加PTX以保证前向兼容非 JIT预编译/交叉编译模式下TORCH_CUDA_ARCH_LIST环境变量优先其次使用get_default_compute_capabilities()返回的默认值builder.py默认基础为6.0;6.1;7.0若系统 CUDA 主版本 ≥ 11则追加8.0;8.6CUDA 11.0 特例仅追加8.0最终每个架构都会生成-gencodearchcompute_XX,codesm_XX编译参数PTX架构还会额外生成-gencodearchcompute_XX,codecompute_XX。此外builder.py 的assert_no_cuda_mismatch()会校验系统 nvcc 的 CUDA 版本与 PyTorch 编译所用 CUDA 版本是否一致小版本在兼容列表内可放行如 CUDA 10.x 与 11.x 各自内部的次版本版本不匹配时编译会直接报错。功能相关依赖部分 DeepSpeed 功能除了通用依赖外还需要额外的特定依赖Python 包依赖各功能/op 对应的 Python 依赖请查看仓库的 requirements 目录其中包含requirements.txt基础安装依赖setup.py 的install_requires即读取此文件requirements-1bit-mpi.txt、requirements-inf.txt、requirements-autotuning.txt、requirements-autotuning-ml.txt、requirements-dev.txt、requirements-readthedocs.txt、requirements-sparse_attn.txt、requirements-sd.txt等分别对应 1-bit 通信MPI、推理、自动调优、开发、文档构建、稀疏注意力等功能setup.py 将这些需求映射为extras_require即可以通过pip install deepspeed[all]、pip install deepspeed[1bit]、pip install deepspeed[inf]等 extras 方式按需安装。系统级依赖DeepSpeed 会尽量将系统级依赖控制在最少但部分功能仍需要特殊的系统级软件包。请查看ds_report工具的输出确认某个功能是否缺失系统级包。以异步 NVMe I/O opAIO为例op_builder/async_io.py 会通过编译并链接一个调用io_submit的测试程序来探测libaio是否存在若缺失会进一步通过dpkg/pacman/rpm等包管理器检测对应的libaio-dev/libaio/libaio-devel包并给出安装提示同时建议可通过CFLAGS与LDFLAGS环境变量指定 libaio 头文件与库文件的搜索路径。预编译 DeepSpeed 构建PyPI官方文档对 Pre-compiled DeepSpeed builds from PyPI 标注为Coming soon即将推出即目前 PyPI 上的发布版本默认走 JIT 路径尚未提供开箱即用的预编译二进制分发如需预编译版本请按上文方式自行构建 wheel。常见安装问题速查现象原因与对策ds_report中 op 状态为compatibleNO缺少该系统 op 所需的系统级依赖如 AIO 缺libaio按报告提示安装对应系统包或通过DS_BUILD_*环境变量置 0 跳过该 op预编译时报错 Unable to pre-compile ...该 op 被开启但与系统不兼容按提示用对应DS_BUILD_*0 禁用运行时no kernel image is available扩展未针对当前 GPU 架构构建用TORCH_CUDA_ARCH_LIST重新构建多虚拟环境加载扩展失败用TORCH_EXTENSIONS_DIR为每个环境指定独立扩展目录预编译时提示 torch 未安装预编译路径DS_BUILD_OPS系列要求先装 PyTorchJIT 模式无此要求小结DeepSpeed 的安装体系围绕JIT 即时编译与预编译两条路径展开日常单机使用直接pip install deepspeed即可配合ds_report验证环境追求更快的首次运行、更可控的多机一致部署时可通过DS_BUILD_OPS1、单个DS_BUILD_*开关、-jN并行编译和bdist_wheel分发构建统一二进制针对特定 GPU 架构可用TORCH_CUDA_ARCH_LIST定制多虚拟环境场景用TORCH_EXTENSIONS_DIR隔离扩展缓存特殊功能则按requirements/目录与ds_report提示补齐依赖。相关源码setup.py、install.sh、op_builder/builder.py与本文所述行为一一对应可作为排查安装问题的第一手依据。赞分享推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载相关推荐Meshroom 安装与开发环境搭建完全指南从预编译发布版、源码编译到自定义节点与插件Meshroom 安装与开发环境搭建完全指南从预编译发布版、源码编译到自定义节点与插件 本文基于 docs/source/install.rst https:计算机视觉桌面应用图形学Meshroom 安装与开发环境搭建完全指南从预编译发行版到源码构建、自定义节点与插件Meshroom 安装与开发环境搭建完全指南从预编译发行版到源码构建、自定义节点与插件 Meshroom 是一个开源、基于节点的可视化编程框架用于创建、管理计算机视觉桌面应用图形学vLLM 安装指南GPU/CPU 多平台支持、预编译 Wheel 与源码构建全流程vLLM 安装指南GPU/CPU 多平台支持、预编译 Wheel 与源码构建全流程 本篇基于 vLLM 官方安装文档整理覆盖 NVIDIA CUDA、AMD人工智能大模型模型推理服务推理引擎本地部署上一篇Deep Image Prior中的数据归一化预处理关键步骤下一篇OpenDesign 中的 Apple 风格设计系统从 DESIGN 文档到 tokens.css 的完整还原指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

金融系统架构设计:账务核心、幂等机制与分布式事务实践 2026/9/25 8:35:41

金融系统架构设计:账务核心、幂等机制与分布式事务实践

做金融服务业的后端系统,和做电商、内容平台完全是两码事。很多人以为金融系统就是“多几个接口、加密字段、对个账”,其实真正动手落地的时候,你会发现账务一致性、资金安全、合规审计、幂等防重这些环节每一个都足以让一个团队翻车。这个“…

阅读更多 →
Agentic 调度实战:CLI + Kubernetes 编排 Agent 工作负载 2026/9/25 8:35:41

Agentic 调度实战:CLI + Kubernetes 编排 Agent 工作负载

1. 从 "ax" 这个标题说起:一个被低估的 Agentic 调度入口第一次看到 "ax" 这个标题,很多人会以为是某个命令行工具的缩写,或者某个内部项目的代号。但把关键词铺开看——agentic、orchestrator、Kubernetes、CLI——就能…

阅读更多 →
Windows查硬盘序列号的正确姿势:绕过WMIC陷阱 2026/9/25 8:35:41

Windows查硬盘序列号的正确姿势:绕过WMIC陷阱

1. 为什么查硬盘序列号这件事,90%的人从第一步就错了?你是不是也试过在百度搜“怎么查硬盘序列号”,点开前五条结果,复制粘贴一通命令,结果要么弹出红色报错,要么返回一堆乱码,甚至直接跳出“WM…

阅读更多 →
Agent Memory 全景盘点:从 ChatGPT 的「做梦」到 Claude 的文件系统,TaoToken 统一 Key 下的 2026 智能体记忆架构拆解 2026/9/25 8:35:28

Agent Memory 全景盘点:从 ChatGPT 的「做梦」到 Claude 的文件系统,TaoToken 统一 Key 下的 2026 智能体记忆架构拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
看清 OpenClaw 每一步:扣子罗盘 Trace 全新上线,TaoToken 统一 Key 配置实战 2026/9/25 8:35:28

看清 OpenClaw 每一步:扣子罗盘 Trace 全新上线,TaoToken 统一 Key 配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Buildah 与容器镜像仓库实战指南:私有 Registry 与 Docker Hub 的推送、拉取与互操作 2026/9/25 8:35:09

Buildah 与容器镜像仓库实战指南:私有 Registry 与 Docker Hub 的推送、拉取与互操作

云原生 【免费下载链接】buildah A tool that facilitates building OCI images. 项目地址: https://gitcode.com/gh_mirrors/bu/buildah 点击查看 免费下载 导读 本篇教程围绕 Buildah 如何将 OCI 兼容镜像移入、移出私有或公有容器镜像仓库(containe…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉