Python|Windows 安装 DeepSpeed 安装方法及报错 Unable to pre-compile async_io 处理

前置文档:Python|Windows 安装 DeepSpeed 报错 Unable to pre-compile async_io 处理

直接 pip 安装 deepspeed 的报错信息

如果直接使用 pip install DeepSpeed 安装,会触发如下报错信息。出现后,需使用如下方法完成安装。

Collecting deepspeed
  Downloading deepspeed-0.14.3.tar.gz (1.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 4.1 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [15 lines of output]
      test.c
      LINK : fatal error LNK1181: 无法打开输入文件“aio.lib”
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\Changxing\AppData\Local\Temp\pip-install-m3_5w4lm\deepspeed_f82b888e581d4d19a24987ccd691885a\setup.py", line 181, in <module>
          abort(f"Unable to pre-compile {op_name}")
        File "C:\Users\Changxing\AppData\Local\Temp\pip-install-m3_5w4lm\deepspeed_f82b888e581d4d19a24987ccd691885a\setup.py", line 53, in abort
          assert False, msg
      AssertionError: Unable to pre-compile async_io
      DS_BUILD_OPS=1
       [WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
       [WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
       [WARNING]  One can disable async_io with DS_BUILD_AIO=0
       [ERROR]  Unable to pre-compile async_io
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Windows 安装 DeepSpeed 的方法

Step 1|克隆 DeepSpeed 仓库
git clone https://github.com/microsoft/DeepSpeed.git
Step 2|使用 PowerShell,进入 DeepSpeed 仓库路径

在这里插入图片描述

PowerShell 可以通过 Win + r 搜索 powershell 启动。

cd DeepSpeed
Step 3|设置环境变量
Set-Item Env:\DS_BUILD_OPS 0
Step 4|修复 DeepSpeed 仓库 2024.06.01 提交引入的 Bug(修复已合入主版本,最新版本如无未出现异常不需要这个步骤)

此时如果直接执行 setup.py 编译 DeepSpeed,可能会触发如下报错,这是因为 2024.06.01 的提交引入的 Bug:

Traceback (most recent call last):
  File "C:\Git-source\DeepSpeed\setup.py", line 212, in <module>
    shutil.copytree('.\\csrc', '.\\deepspeed\\ops')
  File "C:\py\py311\Lib\shutil.py", line 561, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\py\py311\Lib\shutil.py", line 459, in _copytree
    os.makedirs(dst, exist_ok=dirs_exist_ok)
  File "<frozen os>", line 225, in makedirs
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: '.\\deepspeed\\ops'

观察报错信息,可以看到是 setup.py 中的第 211 - 215 行,这段代码如下:

if sys.platform == "win32":
    shutil.copytree('.\\csrc', '.\\deepspeed\\ops')
    shutil.copytree('.\\op_builder', '.\\deepspeed\\ops')
    shutil.copytree('.\\accelerator', '.\\deepspeed\\accelerator')
    egg_info.manifest_maker.template = 'MANIFEST_win.in'

可以看到,这三行尝试将 csrc 复制到 deepspeed/ops 下时,发现路径已存在。查看这 3 个文件,发现其中 Linux 中使用的重定向文件。但是,这里的用法时错误的,无法覆盖文件,且路径也是错误的。这个提交是 2024.06.01 的提交,对应的 Issue 是:https://github.com/microsoft/DeepSpeed/pull/5596。

在这里插入图片描述

而无法 Build 的问题也已经提交了 Issue:https://github.com/microsoft/DeepSpeed/issues/5679。

将 211 - 215 行修改为如下逻辑:

if sys.platform == "win32":
    shutil.copytree('.\\csrc', '.\\deepspeed\\ops\\csrc')
    shutil.copytree('.\\op_builder', '.\\deepspeed\\ops\\op_builder')
    shutil.copytree('.\\accelerator', '.\\deepspeed\\accelerator')
    egg_info.manifest_maker.template = 'MANIFEST_win.in'

并且,因为 shutil.copytree 不会实现覆盖,所以需要手动删除掉 DeepSpeed/deepspeed/ops 下的 crscop_builder 文件,以及 DeepSpeed/deepspeed 路径下的 accelerator 文件。

在这里插入图片描述

在这里插入图片描述

Step 5|编译 DeepSpeed 仓库

执行 build_win.bat 脚本编译,其中在配置环境变量后,也是通过 setup.py 完成编译:

.\build_win.bat

如果运行出现如下报错,则说明需要执行 Step 4 的步骤:

FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: '.\\deepspeed\\ops'
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: '.\\deepspeed\\accelerator'

在这里插入图片描述

Step 6|进入 dist 路径

进入 dist 路径,查看其中文件,应已经包含刚才成功编译的包:

cd dist
ls
    目录: C:\Git-source\DeepSpeed\dist


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2024/6/17      8:34        1018363 deepspeed-0.14.4+eda5075b-py3-none-any.whl
Step 7|安装编译生成的包
pip install deepspeed-0.14.4+eda5075b-py3-none-any.whl

安装成功。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP支付宝--转账到支付宝账户

官方参考文档&#xff1a; ​https://opendocs.alipay.com/open/62987723_alipay.fund.trans.uni.transfer?sceneca56bca529e64125a2786703c6192d41&pathHash66064890​ 可以使用默认应用&#xff0c;也可以自建新应用&#xff0c;此处以默认应用来讲解【默认应用默认支持…

百度搜索融合 DeepSeek 满血版,开启智能搜索新篇

百度搜索融合 DeepSeek 满血版&#xff0c;开启智能搜索新篇 &#x1f680; &#x1f539; 一、百度搜索全量接入 DeepSeek &#x1f539; 百度搜索迎来重要升级&#xff0c;DeepSeek 满血版全面上线&#xff01;&#x1f389; 用户在百度 APP 搜索后&#xff0c;点击「AI」即…

【Prometheus】prometheus结合pushgateway实现脚本运行状态监控

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

【R语言】回归分析与判别分析

一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型&#xff08;Linear Models&#xff09;的主要函数。线性模型是一种统计方法&#xff0c;用于描述一个或多个自变量&#xff08;预测变量、解释变量&#xff09;与因变量&#xff08;响应变量&#xff09;之间的关系…

黑马JS教程笔记(JavaScript教程)——JS基础

黑马pink老师-JavaScript基础语法 黑马程序员前端JavaScript入门到精通全套视频教程&#xff0c;javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 文章目录 ~~黑马pink老师-JavaScript基础语法~~001-计算机编程基础002-计算机编程基础编程语言和标记语言区别 00…

CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台

❝ "CHARMM-GUI EnzyDocker for Protein−Ligand Docking of Multiple Reactive States along a Reaction Coordinate in Enzymes"介绍了 CHARMM-GUI EnzyDocker&#xff0c;这是一个基于网络的计算平台&#xff0c;旨在简化和加速 EnzyDock 对接模拟的设置过程&…

《RCooper: 一个真实世界的大规模道路边协同感知数据集》学习笔记

paper&#xff1a;2403.10145 GitHub&#xff1a;AIR-THU/DAIR-RCooper: [CVPR2024] Official implementation of "RCooper: A Real-world Large-scale Dataset for Roadside Cooperative Perception" 目录 摘要 1、介绍 2、相关工作 2.1 道路边感知 2.2 协同…

【STM32】DRV8833驱动电机

1.电机如何转动 只需要给电机两个端子加一正一负的极性就会转起来了&#xff0c;但是要注意的是不要将电机两端直接接在5v和gnd之间&#xff0c;这种电机一般要提供几百毫安的电流&#xff0c;而GPIO口只能提供几毫安&#xff0c;所以我们使用一个DRV8833来驱动 DRV8833输入口…

id生成系统和mp条件简化

目录 场景引入: 有哪些生成id的方式&#xff1f; 1.UUID 2.雪花算法方案 3.数据库生成 4.美团Leaf方案 Leaf-segment数据库方案 使用场景&#xff1a; 美团leaf的docker镜像安装 在leaf.properties中配置数据库的信息 创建sl_leaf数据库脚本&#xff1a; 测试&#x…

网络安全推荐的视频教程 网络安全系列

第一章 网络安全概述 1.2.1 网络安全概念P4 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或恶意的原因而遭到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断。 1.2.3 网络安全的种类P5 &#xff08;1…

内网下,Ubuntu (24.10) 离线安装docker最新版教程

一般在数据比较敏感的情况下&#xff0c;是无法使用网络的&#xff0c;而对于Ubuntu系统来说&#xff0c;怎么离线安装docker呢&#xff1f; 下面我给大家来讲一下&#xff1a; 采用二进制安装&#xff1a; 1.下载docker离线包 官网下载&#xff1a; Index of linux/static…

基于SpringBoot+Vue的老年人体检管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

AI工具篇:利用DeepSeek+Kimi 辅助生成综述汇报PPT

随着科研和学术报告需求的增加&#xff0c;如何高效地准备一份结构清晰、内容充实的PPT已成为许多研究者的挑战。 传统的PPT制作过程繁琐&#xff0c;需要大量文献收集、数据分析和设计工作&#xff0c;而AI工具能够帮助提升效率&#xff0c;减少重复劳动。 本文将介绍如何使用…

【Spring详解一】Spring整体架构和环境搭建

一、Spring整体架构和环境搭建 1.1 Spring的整体架构 Spring框架是一个分层架构&#xff0c;包含一系列功能要素&#xff0c;被分为大约20个模块 Spring核心容器&#xff1a;包含Core、Bean、Context、Expression Language模块 Core &#xff1a;其他组件的基本核心&#xff…

为什么WP建站更适合于谷歌SEO优化?

在当今数字时代&#xff0c;建立一个网站似乎变得容易&#xff0c;但要构建一个真正能够带来流量和订单的网站却并非易事。特别是在谷歌SEO优化方面&#xff0c;不同的建站程序在SEO支持方面的效果差异显著。对于希望提升搜索引擎表现的用户来说&#xff0c;WordPress无疑是最佳…

Vue 项目中逐步引入 TypeScript 的类型检查

在现有的 Vue 项目中逐步引入 TypeScript 的类型检查 本文源于一道面试题&#xff1a;注&#xff1a;两种问法一个意思哈&#xff01;&#xff01; 问题一&#xff1a;“ 老项目Js写的&#xff0c;如何轻量方式享受 ts 类型&#xff1f;” 问题二&#xff1a;“如何 在现有的 …

win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统&#xff0c;报错&#xff1a;Operating System not found 二、原因分析 国产系统&#xff0c;需要注意的点&#xff1a; 需要看你的系统类…

Spring中Bean的四种实例化方法

Bean的四种实例化方法 Bean是Spring核心的概念&#xff0c;另外一个核心的概念是AOP。官网上&#xff0c;Bean的解释是&#xff1a; In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…

聚焦工控物联网网关

一、引言 在工业物联网高速发展的当下&#xff0c;工控物联网网关作为连接工业现场设备与上层管理系统、云平台的关键组件&#xff0c;其兼容性与可扩展性至关重要。工业生产新技术、新设备不断涌现&#xff0c;企业数字化转型需求持续增长&#xff0c;网关的适配与扩展能力直…

李宏毅机器学习笔记:【6.Optimization、Adaptive Learning Rate】

Optimization 1.Adaptive Learning Rate2.不同的参数需要不同的学习率3.Root Mean Square4.RMSProp5.Adam6.learning rate scheduling7.warm up总结 critical point不一定是你在训练一个network时候遇到的最大的障碍。 1.Adaptive Learning Rate 也就是我们要给每个参数不同的…