windows系统下安装DeepSpeed依赖包(附问题解决方案)

先说结论,通过下载DeepSpeed源码自己构建了Wheel包,然后通过pip命令安装,如果不想那么麻烦的可以直接去公主号非鱼AI视界后台回复DeepSpeed,就可以得到我构建好的基于python3.9,CUDA11.8的windows系统下的DeepSpeed的Wheel安装包。

DeepSpeed安装失败

最近在运行一个项目的时候,发现requirements.txt文件里面存在DeepSpeed库,但是我在使用pip安装的时候一直报错显示error:subprocess-exited-with-error。详细报错信息如下:

image-20250421165122001

查找资料后发现如果安装不成功可以使用pip命令通过whl包来安装,找到之后发现仅有linux系统的whl包,并没有windows系统的,如果想要在windows系统下安装DeepSpeed,只能在Github上下载源码,然后自己构建wheel包。

image-20250423215554560

于是我开始去找到DeepSpeed的官网,然后准备自己构建wheel包。

克隆DeepSpeed项目

找到DeepSpeed的官网https://github.com/deepspeedai/DeepSpeed,将项目克隆到本地。

image-20250424104921461

将项目克隆成功之后,打开本地命令行终端,然后输入以下命令,配置DeepSpeed的运行环境。

# 切换到项目所在目录
cd path/deepspeed
# 创建本地虚拟环境,这里的python版本为你想要使用的项目中的python版本,我需要用到python3.9,所以我就指定3.9版本的python
conda create -n deepspeed python =3.9 
# 激活创建好的虚拟环境
conda activate deepspeed
# 安装项目依赖
pip install -r requirements.txt

在以上步骤完成之后,有两种方式,第一种方式是在当前环境下在终端中输入python setup.py bdist_wheel,第二种方式是运行项目目录下的build_win.bat文件。不过在运行过程中可能会出现一些错误。

错误1:CUDA版本不对应

我们按照方式进行构建wheel包,运行之后发现报错,如下图所示。

image-20250424105911373

image-20250424111633413

这个报错的意思是我本地安装的CUDA版本和虚拟环境中的CUDA版本不匹配(这里说一下,在本地的base环境中我们需要安装一个CUDA版本,在我们创建的conda虚拟环境中可以安装其他的CUDA版本,只要比base环境的CUDA版本低就行,一般情况下是不会出问题的,但现在我们构建wheel包,需要严格版本对应),我本地base环境安装的是CUDA12.3,但是我现在需要构建CUDA11.8的wheel包,所以我的conda虚拟环境中安装的pytorch为2.2.2以及CUDA版本为11.8,这就导致base环境中的CUDA和虚拟环境中的CUDA版本不对应,在调用编译库的时候就会出现以上问题。

解决方法是重新安装对应版本的CUDA,这里我就是把base环境的CUDA换成了11.8,而且需要卸载掉其他版本的CUDA,否则也会出现冲突(可能也有小伙伴说同时保存两个版本的CUDA,在使用的时候切换一下系统环境就好了,但是我自己尝试下来,发现不行,只能保留一个CUDA才能成功运行)。至于CUDA安装可以参考这篇文章

image-20250424110455175

错误2:‘dskernels’包无法下载

在运行python setup.py bdist_build命令的时候,可能会出现以下问题。

image-20250424110857991

这个依赖包也是在windows系统无法安装,但是我们可以通过其他方式来规避掉这个错误。

解决方法如下:

  1. 打开项目的setup.py文件,将里面的153行替换为如下代码;

    # 原始代码
    BUILD_OP_DEFAULT = int(get_env_if_set('DS_BUILD_OPS', BUILD_OP_PLATFORM))
    # 替换后代码
    BUILD_OP_DEFAULT = 0
    

image-20250424111220968

  1. 找到setup.py文件下的第208行,然后进行替换

    # 原始代码
    if command_exists('git') and not is_env_set('DS_BUILD_STRING'):
        try:
    # 替换后代码
    if not is_env_set('DS_BUILD_STRING') and command_exists('git'):
        try:
            result = subprocess.check_output(git_hash_cmd)
            git_hash = result.decode('utf-8').strip()
            result = subprocess.check_output(git_branch_cmd)
            git_branch = result.decode('utf-8').strip()
        except subprocess.CalledProcessError:
            git_hash = "unknown"
            git_branch = "unknown"
    
    git_hash_cmd = ["git", "rev-parse", "--short", "HEAD"]
    git_branch_cmd = ["git", "rev-parse", "--abbrev-ref", "HEAD"]
    
    if not is_env_set('DS_BUILD_STRING') and command_exists('git'):
    

    image-20250424111556224

构建wheel包

在上述步骤完成之后,在命令行终端输入python setup.py bdist_wheel就可以构建当前环境下的wheel包了,由于我这里的环境是python3.9,CUDA11.8,所以我构建出来的wheel包就是对应于python3.9,CUDA11.8的。

image-20250424112034535

在构建过程中会提示LINK : fatal error LNK1181: 无法打开输入文件“aio.lib”,不过还是会构建成功,如下图所示。image-20250424112156365

想要解决这个问题,可以通过在命令行设置

set DS_BUILD_OPS=0

就可以解决以上问题了。

image-20250424112237722

构建成功之后会在DeepSpeed的dist文件夹下出现构建好的wheel包,此时就可以就可以在你最终想要安装DeepSpeed的虚拟环境下使用pip命令进行安装了,如图所示:

pip install path\to\deepspeed-0.16.8+9c9d32c2-py3-none-any.whl # 你自己构建好的wheel包的存放位置

image-20250424112410381

这里我的虚拟环境是cata,所以就可以使用该命令通过wheel包来安装deepspeed了。

以上内容通过博主亲测可以完成windows系统下DeepSpeed包的安装,如果你不想那么麻烦,恰好你所使用的环境又是python3.9以及CUDA11.8,那么你可以直接去公众号非鱼AI视界后台回复DeepSpeed直接获取我构建好的Wheel包。

参考来源

  1. DeepSpeed

  2. Win10DeepSpeed实测成功

  3. Win10DeepSpeed实测成功

  4. windows安装deepspeed报错dskernels和FileNotFound解决方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员非鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值