Skip to content

mdkrain/MSST-WebUI-XPU-Support

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

MSST-WebUI Intel Arc (XPU) Support

MSST-WebUI 支持 Intel Arc 系列显卡(A750/A770/B580 等)进行音乐源分离推理。


1. 前置条件

硬件

  • Intel Arc A 系列(A310/A380/A580/A750/A770)
  • Intel Arc B 系列(B570/B580)
  • Intel Core Ultra 集成显卡(Meteor Lake / Lunar Lake / Arrow Lake-H)

软件

项目 要求
操作系统 Windows 10/11
Python 3.9 ~ 3.12
GPU 驱动 Intel Arc & Iris Xe Graphics WHQL
Visual C++ Redistributable 最新版

2. 安装 PyTorch XPU 版

在 MSST-WebUI 已有的 conda/pip 环境中,卸载原有 CUDA 版 torch 后安装 XPU 版本。

pip uninstall torch torchvision torchaudio -y

pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/xpu

PyTorch 2.5+ 已将 Intel GPU 支持合入主线,torch.xpu 开箱即用,无需额外安装 IPEX。

验证安装

python -c "import torch; print(torch.xpu.is_available()); print(torch.xpu.get_device_name(0))"

应输出 True 和显卡型号(如 Intel(R) Arc(TM) B580 Graphics)。


3. 使用方式

步骤一:复制文件

将本仓库中的以下文件复制到 MSST-WebUI 项目根目录

xpu_patch.py      # 核心垫片
run_xpu.py        # 启动包装器
run_xpu.bat       # Windows 双击启动脚本

步骤二:启动

# 命令行启动
python run_xpu.py                     # 标准 WebUI 模式
python run_xpu.py -p 8080 --debug     # 透传参数
python run_xpu.py --webview           # WebView GUI 模式

# 或双击 run_xpu.bat

启动后日志中应看到:

Intel Arc XPU detected: 1 device(s)
  XPU device 0: Intel(R) Arc(TM) B580 Graphics
All XPU patches applied successfully

然后在 WebUI 的设备选择下拉框中会看到 B580 作为可选设备,直接开始推理即可。


4. 技术原理

MSST-WebUI 原始代码仅支持 CUDA / MPS / CPU 三种设备。本垫片通过以下 5 层 monkey-patch 透明适配 XPU:

目标 解决的问题
AMP 重定向 torch.amp.autocast("cuda")"xpu" bs_roformer / mel_band_roformer 等模型的 autocast 硬编码
CUDA 代理 torch.cuda.is_available() 等 → XPU 启动设备检测 + VR 模型的 empty_cache
MSSeparator __init__ + del_cache MSST 推理分离器的设备选择和缓存清理
VRSeparator setup_torch_device + del_cache VR 推理分离器的设备选择和缓存清理
Spawn 注入 multiprocessing.spawn.get_command_line 推理运行在子进程,spawn 模式不继承 monkey-patch

关键设计点:

  • 零文件写入:所有 patch 均为运行时内存替换,不修改 MSST-WebUI 任何源文件
  • 零环境持久化:通过注入 get_command_line 修改子进程 -c 参数实现跨进程传播,不需 .pth 文件
  • CUDA 优先:若检测到真实的 NVIDIA CUDA GPU,垫片不激活,保持原始行为

MSSeparator 推理流程

_patched_init
  ├── device="xpu"
  ├── 临时还原 cuda.is_available() → 原始 init 以为无 GPU,模型加载到 CPU
  ├── 原始 init 完成
  ├── 恢复 CUDA 代理
  ├── self.device = "xpu:0"
  └── model.to("xpu:0")        ← 模型移到 XPU,此时 GPU 开始工作

注意:日志中出现的 No hardware acceleration could be configured, running in CPU mode 是预期行为——这是原始 init 在 "无 GPU" 假象下的中间状态日志,模型最终会被垫片移到 XPU 上。


5. 常见问题

Q: 日志显示 "Using device: cpu",但 GPU 在任务管理器中显示有负载?

A: "Using device: cpu" 是原始代码的中间状态日志。垫片在原始 init 完成后将模型移到 XPU,实际推理跑在 GPU 上。看任务管理器 GPU 负载即可确认。

Q: 启动时报 "No module named 'torch'"?

A: 确保使用安装了 XPU 版 PyTorch 的 Python 环境启动。

Q: import xpu_patch 后无任何输出,WebUI 中也没有 XPU 设备?

A: 检查 torch.xpu.is_available() 是否为 True。可能原因:驱动未安装、PyTorch 不是 XPU 版、或同时有 NVIDIA GPU(此时垫片不激活,CUDA 优先)。

Q: 推理时报 "TypeError: 'NoneType' object is not subscriptable"?

A: 请确保使用最新版 xpu_patch.py,该问题已在 inference_params 参数传递中修复。


6. 参考链接

About

MSST-WebUI Intel Arc (XPU) Support 让 [MSST-WebUI](https://github.com/SUC-DriverOld/MSST-WebUI) 支持 Intel Arc 系列显卡(A750/A770/B580 等)进行音乐源分离推理。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors