前言:发布这篇文章是因为我参与全国大学生课外学术科技作品竞赛的基于多模态大模型的遥感影像分析与语义理解的比赛时遇到的问题总结,作为提升自身秘术留存。
希望可以遇到同赛的好友相互交流。
Windows系统下安装Deepspeed依赖包,存在的问题如下
关键错误是由于在 Windows 系统 上编译 DeepSpeed 时,尝试构建依赖 Linux 库 libaio
的 async_io
模块导致的。
核心问题AI分析
async_io
模块依赖 libaio
:
该模块用于异步 I/O 操作,依赖 Linux 系统的 libaio.so
库,但 Windows 系统不包含此库,导致编译失败。
先说结论,通过下载Deepspeed源码手动编译构建wheel包——deepspeed-0.12.3+unknown-py3-none-any.wh,然后通过pip命令进行安装。
windows安装Deepspeed教程
第一步
进入构建DeepSpeed源码程序网站
Releases · deepspeedai/DeepSpeed · GitHub
网页页面
注意:1.进入该网址需要使用加速器否则可能无法进入
如果有加速器则忽略steam++
2.这里介绍一个免费易操作的加速工具steam++,注意不要升级版本保持v2.8.6版本即可
Steam++软件页面
鼠标向下滑找到GIthub,勾选后点击 一键加速 即可使用
如图
选择需要的deepspeed版本
以v0.12.3版本为例子,点击v0.12.3:patch release
鼠标滚轮向下来到
选择下载需要的格式
然后打开文件,如用pycharm打开
找到其中的文件build_win.bat 和setup.py
文件路径
DeepSpeed-0.12.3\build_win.bat
DeepSpeed-0.12.3\setup.py
打开build_win.bat文件
添加cd /d %~dp0
- %~dp0 的作用:这是批处理脚本中的特殊变量,表示脚本自身的路径。
如图
没有添加cd /d %~dp0,报错情况如下
打开setup.py进行修改
一.找到143行的代码
将代码
BUILD_OP_DEFAULT = int(get_env_if_set('DS_BUILD_OPS', BUILD_OP_PLATFORM))
修改为
BUILD_OP_DEFAULT = 0
二.找到199行的代码,该方法来源@程序员非鱼的windows系统下安装DeepSpeed依赖包(附问题解决方案)
将代码
if command_exists('git') and not is_env_set('DS_BUILD_STRING'):
try:
result = subprocess.check_output(git_hash_cmd, shell=True)
git_hash = result.decode('utf-8').strip()
result = subprocess.check_output(git_branch_cmd, shell=True)
git_branch = result.decode('utf-8').strip()
except subprocess.CalledProcessError:
git_hash = "unknown"
git_branch = "unknown"
else:
git_hash = "unknown"
git_branch = "unknown"
修改为
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"]
总结:
没有修改两处代码,则报错情况如下
只修改143行的BUILD_OP_DEFAULT = int(get_env_if_set('DS_BUILD_OPS', BUILD_OP_PLATFORM))也能编译
三.编译deepspeed
为deepspeed的项目文件配置环境后安装项目依赖
pip install -r requiremes.txt
遇到过的问题,因为项目依赖中某个包版本过高导致其他需要numpy的程序报错
如numpy版本过高
解决方法为pip install numpy<2.0.0 # 降级 NumPy 到 1.x 版本
以管理员模式打开cmd
使用命令
cd DeepSpeed-0.12.3 (cd+文件路径)
(如cd D:\LeStoreDownload\LianDangLu \DeepSpeed-0.12.3)
再使用命令
build_win.bat
手动编译成功图
当前编译的 wheel 文件适用于 CPU 环境,但无法利用 GPU 加速。若需 GPU 功能,必须先安装 GPU 版本的 PyTorch,再重新编译 DeepSpeed。
接下来是编译的deepspeed的wheel文件可以利用gpu加速的方法
第二步,下载cuda工具包(已有则可跳过)
windows+r 打开cmd
使用命令
nvidia-smi #查看显卡
注意关注cuda version:12.6指 NVIDIA 驱动程序支持的最高 CUDA 版本为 12.6
使用命令
nvcc –version #查看 NVIDIA CUDA工具包 中附带的 NVIDIA 编译器(NVCC)
安装了 CUDA 工具包则显示如下。(本人安装的是v12.1版本)推荐安装v11.8版本
未安装 CUDA 工具包
如果系统中未安装 CUDA 工具包,命令执行后会提示 nvcc: command not found(Linux/macOS)或 “不是内部或外部命令”(Windows)。
未安装则进入cuda工具包档案网站
CUDA Toolkit Archive | NVIDIA Developer
网站页面
寻找适合的工具包,其版本小于或等于cuda version:版本,由于Pytorch默认cu11.8所以推荐11.8版本
下载cuda工具包11.8的网站
CUDA Toolkit 11.8 Downloads | NVIDIA Developer
版本为你自己电脑的windows的版本
安装程序类型推荐选择exe网络
下载后成功安装使用命令nvcc –version #查看 NVIDIA CUDA工具包 中附带的 NVIDIA 编译器(NVCC)存不存在
第三步
准备环境:打开anacondaPrompt命令框
输入命令(cuda为环境名称可自由更改)
conda create -n cuda python=3.10 -y
激活环境命令
conda activate cuda
使用命令安装pytorch
以安装 PyTorch 2.2.0 并搭配 CUDA 11.8为例
pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu118
其中cu118对应cuda工具包v11.8版本,可修改为cu121即对应cuda工具包v12.1
编译deepspeed
以管理员模式打开cmd
使用命令
cd DeepSpeed-0.12.3 (cd+路径)
(如cd D:\LeStoreDownload\LianDangLu\DeepSpeed-0.12.3)
再使用命令
build_win.bat
响应结果图:
最后打开anacondaPrompt命令框
使用命令为环境安装deepspeed-0.12.3+unknown-py3-none-any.whl
Pip install + 路径
pip install deepspeed-0.12.3+unknown-py3-none-any.whl
(如cd D:\LeStoreDownload\LianDangLu\DeepSpeed-0.12.3.2\
dist\deepspeed-0.12.3+unknown-py3-none-any.whl)
deepspeed-0.12.3+unknown-py3-none-any.whl在文件中的位置
成功安装deepspeed
至此在windows系统下能成功安装deepspeed依赖包了
后言:希望我的文章可以帮到安装deepspeed依赖包遇到问题的人。