通过伪造NPU设备,让AscendSpeed在没有安装torch_npu的环境中跑起来

通过伪造NPU设备,让AscendSpeed在没有安装torch_npu的环境中跑起来

背景: 我想在GPU上运行AscendSpeed框架,因为没有torch_npu、deepspeed_npu,又不想一个个注释掉

方法:

  • 1.本文本通过创建一个FakeDevice 类来伪造 NPU(Neural Processing Unit)的行为。
  • 2.它将伪造的NPU接口注入到sys.modules,使得在没有实际NPU硬件的情况下,可以模拟NPU相关操作。
  • 3.这在开发和测试代码时特别有用,即使没有实际的NPU硬件环境,也可以模拟NPU调用。

代码

python 复制代码
import sys
import torch

class FakeDevice(object):
    def __init__(self, name=""):
        self.name = name
    def __getattr__(self, item):
        return FakeDevice(f"{self.name}.{item}")
    def __call__(self, *args, **kwargs):
        print(f"run fake: {self.name}")
        return 0

# 实例化设备
torch.npu = FakeDevice("torch.npu")
fake_torch_npu = FakeDevice("torch_npu")
fake_deepspeed_npu = FakeDevice("deepspeed_npu")

# 更新sys.modules
sys.modules.update({
    "torch.npu": torch.npu,
    "torch.npu.contrib": torch.npu.contrib,
    "torch_npu": fake_torch_npu,
    "torch_npu.utils": fake_torch_npu.utils,
    "torch_npu.contrib": fake_torch_npu.contrib,
    "torch_npu.testing": fake_torch_npu.testing,
    "torch_npu.testing.testcase": fake_torch_npu.testing.testcase,
    "deepspeed_npu": fake_deepspeed_npu
})

import torch.npu
import torch_npu
from torch_npu.utils import cpp_extension
from torch_npu.contrib import transfer_to_npu
from torch_npu.testing.testcase import TestCase, run_tests
import deepspeed_npu

torch_npu.npu_clear_float_status(1)
torch_npu.npu_get_float_status(1)
torch_npu.npu_apply_adam_w(1)
torch_npu.fast_gelu(1 + 1)
torch_npu.npu_scaled_masked_softmax(1, 1, 1, False)
device = torch.npu.current_device()
torch.npu.synchronize()
torch.npu.set_compile_mode(jit_compile=True)

输出

bash 复制代码
run fake: torch_npu.npu_clear_float_status
run fake: torch_npu.npu_get_float_status
run fake: torch_npu.npu_apply_adam_w
run fake: torch_npu.fast_gelu
run fake: torch_npu.npu_scaled_masked_softmax
run fake: torch.npu.current_device
run fake: torch.npu.synchronize
run fake: torch.npu.set_compile_mode
相关推荐
Coding茶水间21 分钟前
基于深度学习的螺栓螺母检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉
Salt_072831 分钟前
DAY 36 官方文档的阅读
python·算法·机器学习·github
AI小怪兽32 分钟前
RF-DETR:实时检测Transformer的神经架构搜索,首个突破 60 AP 的实时检测器 | ICLR 2026 in Submission
人工智能·深度学习·yolo·目标检测·架构·transformer
k***921634 分钟前
Python 科学计算有哪些提高运算速度的技巧
开发语言·python
superman超哥34 分钟前
仓颉条件变量深度解析与实践:解锁高效并发同步
开发语言·python·c#·仓颉
长空任鸟飞_阿康35 分钟前
LangGraph 技术详解:基于图结构的 AI 工作流与多智能体编排框架
人工智能·python·langchain
【建模先锋】35 分钟前
故障诊断模型讲解:基于1D-CNN、2D-CNN分类模型的详细教程!
人工智能·深度学习·分类·cnn·卷积神经网络·故障诊断·轴承故障诊断
其美杰布-富贵-李43 分钟前
tsai 中 Learner 机制深度学习笔记
人工智能·笔记·深度学习
love530love1 小时前
ComfyUI 升级 v0.4.0 踩坑记录:解决 TypeError: QM_Queue.task_done() 报错
人工智能·windows·python·comfyui
一瞬祈望1 小时前
ImportError: cannot import name ‘OrderedDict‘ from ‘typing‘ 问题解决
pytorch·python3.7