找回密码
 会员注册
查看: 27|回复: 0

Python|Windows安装DeepSpeed安装方法及报错Unabletopre-compileasync_io处理

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-10 08:03:19 | 显示全部楼层 |阅读模式
前置文档:Python|Windows安装DeepSpeed报错Unabletopre-compileasync_io处理直接pip安装deepspeed的报错信息如果直接使用pipinstallDeepSpeed安装,会触发如下报错信息。出现后,需使用如下方法完成安装。CollectingdeepspeedDownloadingdeepspeed-0.14.3.tar.gz(1.3MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1.3/1.3MB4.1MB/seta0:00:00Preparingmetadata(setup.py)...errorerror:subprocess-exited-with-error×pythonsetup.pyegg_infodidnotrunsuccessfully.│exitcode:1╰─>[15linesofoutput]test.cLINK:fatalerrorLNK1181:无法打开输入文件“aio.lib”Traceback(mostrecentcalllast):File"",line2,inFile" ",line34,inFile"C:\Users\Changxing\AppData\Local\Temp\pip-install-m3_5w4lm\deepspeed_f82b888e581d4d19a24987ccd691885a\setup.py",line181,inabort(f"Unabletopre-compile{op_name}")File"C:\Users\Changxing\AppData\Local\Temp\pip-install-m3_5w4lm\deepspeed_f82b888e581d4d19a24987ccd691885a\setup.py",line53,inabortassertFalse,msgAssertionError:Unabletopre-compileasync_ioDS_BUILD_OPS=1[WARNING]async_iorequiresthedevlibaio.soobjectandheadersbutthesewerenotfound.[WARNING]Iflibaioisalreadyinstalled(perhapsfromsource),trysettingtheCFLAGSandLDFLAGSenvironmentvariablestowhereitcanbefound.[WARNING]Onecandisableasync_iowithDS_BUILD_AIO=0[ERROR]Unabletopre-compileasync_io[endofoutput]note:Thiserrororiginatesfromasubprocess,andislikelynotaproblemwithpip.error:metadata-generation-failed×Encounterederrorwhilegeneratingpackagemetadata.╰─>Seeaboveforoutput.note:Thisisanissuewiththepackagementionedabove,notpip.hint:Seeabovefordetails.12345678910111213141516171819202122232425262728293031323334Windows安装DeepSpeed的方法Step1|克隆DeepSpeed仓库gitclonehttps://github.com/microsoft/DeepSpeed.git1Step2|使用PowerShell,进入DeepSpeed仓库路径PowerShell可以通过Win+r搜索powershell启动。cdDeepSpeed1Step3|设置环境变量Set-ItemEnv:\DS_BUILD_OPS01Step4|修复DeepSpeed仓库2024.06.01提交引入的Bug此时如果直接执行setup.py编译DeepSpeed,可能会触发如下报错,这是因为2024.06.01的提交引入的Bug:Traceback(mostrecentcalllast):File"C:\Git-source\DeepSpeed\setup.py",line212,inshutil.copytree('.\\csrc','.\\deepspeed\\ops')File"C:\py\py311\Lib\shutil.py",line561,incopytreereturn_copytree(entries=entries,src=src,dst=dst,symlinks=symlinks,^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"C:\py\py311\Lib\shutil.py",line459,in_copytreeos.makedirs(dst,exist_ok=dirs_exist_ok)File"",line225,inmakedirsFileExistsError:[WinError183]当文件已存在时,无法创建该文件。:'.\\deepspeed\\ops'12345678910观察报错信息,可以看到是setup.py中的第211-215行,这段代码如下:ifsys.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'12345可以看到,这三行尝试将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行修改为如下逻辑:ifsys.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'12345并且,因为shutil.copytree不会实现覆盖,所以需要手动删除掉DeepSpeed/deepspeed/ops下的crsc和op_builder文件,以及DeepSpeed/deepspeed路径下的accelerator文件。Step5|编译DeepSpeed仓库执行build_win.bat脚本编译,其中在配置环境变量后,也是通过setup.py完成编译:.\build_win.bat1如果运行出现如下报错,则说明需要执行Step4的步骤:FileExistsError:[WinError183]当文件已存在时,无法创建该文件。:'.\\deepspeed\\ops'1FileExistsError:[WinError183]当文件已存在时,无法创建该文件。:'.\\deepspeed\\accelerator'1Step6|进入dist路径进入dist路径,查看其中文件,应已经包含刚才成功编译的包:cddistls12目录:C:\Git-source\DeepSpeed\distModeLastWriteTimeLengthName----------------------------a----2024/6/178:341018363deepspeed-0.14.4+eda5075b-py3-none-any.whl123456Step7|安装编译生成的包pipinstalldeepspeed-0.14.4+eda5075b-py3-none-any.whl1安装成功。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-7 06:39 , Processed in 0.441955 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表