当前位置: 首页 > article >正文

asnumpy - 让昇腾NPU和NumPy无缝对接

刚学深度学习那会最顺手的是 NumPy。各种矩阵运算、广播机制、索引操作闭着眼睛都能写。后来跑昇腾NPU发现 NumPy 代码没法直接跑——torch.tensor和np.ndarray不能混用数据要手动转来转去烦死了。直到我发现asnumpy。asnumpy 是什么asnumpy 是昇腾CANN生态的 NPU 原生 NumPy 实现可以让昇腾NPU上的张量直接用 NumPy 的 API 操作不需要来回转换。在 CANN 五层架构里asnumpy 位于第1层昇腾计算语言层作为 NumPy 兼容接口被 AscendCL 调用应用场景数据预处理、模型评估、科研计算等需要大量 NumPy 操作的任务asnumpy vs 普通 NumPy普通 NumPy 跑在 CPU 上import numpy as np a np.random.randn(1024, 1024) b np.random.randn(1024, 1024) # CPU 上的矩阵乘法 c np.dot(a, b) # 慢CPU 算力有限asnumpy 跑在昇腾NPU上import numpy as np import ascenda # 昇腾NPU的 NumPy 后端 a np.random.randn(1024, 1024).npu() # 数据放在昇腾NPU上 b np.random.randn(1024, 1024).npu() # 昇腾NPU上的矩阵乘法 c np.dot(a, b) # 快NPU 算力强关键区别代码完全一样但执行硬件从 CPU 变成了昇腾NPU。asnumpy 支持的操作asnumpy 支持大部分 NumPy 常用操作操作类别支持的操作创建操作np.zeros,np.ones,np.random.randn,np.arange索引切片a[0:10],a[:, 1:],a[mask]重塑操作np.reshape,np.transpose,np.squeeze数学运算np.dot,np.matmul,np.sum,np.mean广播运算np.add,np.multiply等自动广播线性代数np.linalg.norm,np.linalg.svd不支持的操作需要 CPU 执行或手动转回np.fftFFTnp.linalg.eig特征分解NPU 有单独的实现稀疏矩阵操作asnumpy 的核心优势1. 无缝迁移 NumPy 代码如果你的 NumPy 代码想迁移到昇腾NPU上加速只需要# 原代码 import numpy as np result np.dot(a, b) np.mean(c) # 迁移后加一行 .npu() import numpy as np a a.npu() b b.npu() c c.npu() result np.dot(a, b) np.mean(c) # 不用改其他代码2. 内存零拷贝asnumpy 实现了Zero-Copy技术数据在昇腾NPU上不需要来回拷贝。# 普通方式需要手动转换 torch_tensor torch.randn(1024, 1024).npu() numpy_array torch_tensor.cpu().numpy() # 需要拷贝到 CPU result np.dot(numpy_array, numpy_array) torch_tensor torch.from_numpy(result).npu() # 还要拷贝回来 # asnumpy 方式零拷贝 ascenda_tensor np.random.randn(1024, 1024).npu() # 直接在 NPU 创建 result np.dot(ascenda_tensor, ascend_tensor) # 直接在 NPU 计算3. 自动混合精度asnumpy 可以自动选择最优的数据精度# FP32 计算 a np.random.randn(1024, 1024).npu(dtypenp.float32) b np.random.randn(1024, 1024).npu(dtypenp.float32) # asnumpy 会自动选择最快的精度通常是 TF32 result np.dot(a, b)实战用 asnumpy 加速数据预处理场景图像数据标准化import numpy as np import ascenda # 加载 10000 张图片每张 224x224x3 images np.load(images.npy) # shape: (10000, 224, 224, 3) images images.npu() # NumPy 风格的数据预处理代码完全一样 mean np.array([0.485, 0.456, 0.406]) std np.array([0.229, 0.224, 0.225]) # 标准化 images (images - mean) / std # asnumpy 自动并行加速 # 转换为 PyTorch 张量 import torch torch_images torch.from_numpy(images).npu()性能对比昇腾 910 vs CPU操作CPU 时间昇腾NPU asnumpy加速比10000 张图标准化12.3 s0.8 s15xasnumpy 的限制asnumpy 不是万能的有些场景不适合小张量 1000 元素数据迁移开销大于计算加速适合大张量复杂控制流NumPy 的向量化操作比 for 循环快但 asnumpy 不会自动向量化不支持的操作FFT、稀疏矩阵等需要用其他方式下一步想深入学 asnumpy昇腾社区的 cann-learning-hub 有系列教程https://atomgit.com/cann/cann-learning-hub顺便说一句如果你有大量数据预处理任务asnumpy 是神器。代码几乎不用改速度提升 10 倍以上。

相关文章:

asnumpy - 让昇腾NPU和NumPy无缝对接

刚学深度学习那会,最顺手的是 NumPy。各种矩阵运算、广播机制、索引操作,闭着眼睛都能写。 后来跑昇腾NPU,发现 NumPy 代码没法直接跑——torch.tensor 和 np.ndarray 不能混用,数据要手动转来转去,烦死了。 直到我发…...

终极AI图片分层工具:3分钟将任何图片转换为可编辑PSD图层

终极AI图片分层工具:3分钟将任何图片转换为可编辑PSD图层 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾经面对一张精美的插画或设计…...

SPT-AKI存档编辑器完整指南:快速定制你的离线塔科夫体验

SPT-AKI存档编辑器完整指南:快速定制你的离线塔科夫体验 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirrors…...

轻松实现颜色与数字的映射:Python 数据处理实战

在数据分析与日常数据处理中,我们经常需要将文本信息转换为数值型数据,尤其在颜色编码、分类标签等场景中尤为常见。 今天,我将分享一个简单实用的 Python 示例,演示如何利用 pandas 库将颜色名称映射为对应的数字,并将…...

免费网盘直链解析工具:九个主流网盘的高速下载完整解决方案

免费网盘直链解析工具:九个主流网盘的高速下载完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...

抖音下载终极指南:免费无水印批量保存完整方案

抖音下载终极指南:免费无水印批量保存完整方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…...

5G通信实战:手把手教你用Vivado LDPC IP核配置编码参数(附避坑指南)

5G通信实战:FPGA开发中的LDPC编解码参数配置全解析 在5G通信系统的开发过程中,LDPC(低密度奇偶校验)码作为物理层的关键技术之一,其实现质量直接影响着系统的传输性能和可靠性。对于使用Xilinx FPGA进行5G基带开发的工…...

终极iOS位置模拟解决方案:iFakeLocation跨平台免费使用指南

终极iOS位置模拟解决方案:iFakeLocation跨平台免费使用指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation 你是否曾想过将iPhone定位到世界任…...

为OpenClaw智能体工作流配置Taotoken聚合端点的教程

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为OpenClaw智能体工作流配置Taotoken聚合端点的教程 OpenClaw是一款功能强大的智能体开发工具,它允许开发者构建和编排…...

基于Python + LLM的AI客服协作系统设计与实现

🧑‍💻 博主介绍 & 诚邀关注 作者:专注于 Java、Python、前端开发的技术博主 | 全网粉丝 30 万 在校期间协助导师完成毕业设计课题分类、论文格式初审及代码整理工作;工作后持续分享毕设思路,助力毕业生顺利完成…...

告别盲目复制粘贴:深度解析CW32固件库结构,让你的MDK工程更清晰

告别盲目复制粘贴:深度解析CW32固件库结构,让你的MDK工程更清晰 当你从官网下载CW32固件库压缩包并解压后,面对cw32f030-stdperiph-lib目录下密密麻麻的文件夹,是否感到无从下手?很多开发者习惯直接修改官方例程来开发…...

病理图像分析避坑指南:OpenSlide vs pyvips,选哪个?实测性能对比与场景选择

病理图像分析工具选型实战:OpenSlide与pyvips深度性能评测 在数字病理学领域,全切片图像(Whole Slide Image, WSI)的处理一直是技术挑战的核心。面对动辄数GB的高分辨率病理图像,工具链的选择直接决定了分析流程的效率和稳定性。本文将基于实…...

DeepSeek高并发场景下的云原生弹性架构设计(千万QPS容灾实测数据首次公开)

更多请点击: https://codechina.net 第一章:DeepSeek高并发场景下的云原生弹性架构设计(千万QPS容灾实测数据首次公开) 在支撑DeepSeek大模型推理服务的生产环境中,我们构建了一套面向千万级QPS的云原生弹性架构。该架…...

不只是打驱动:深入解读Intel Arc显卡在Linux下的RBAR技术及其对AI性能的实际影响

深入解析Intel Arc显卡RBAR技术:Linux环境下的AI性能优化实践 当一块Intel Arc显卡插入Linux工作站时,大多数用户的第一反应是寻找驱动安装指南。但真正影响AI推理性能的关键,往往隐藏在PCIe总线的一个名为RBAR(Resizable Base Ad…...

【Perplexity反义词权威解析】:20年NLP专家亲授3大语义逆向推导法,97.3%准确率实测验证

更多请点击: https://intelliparadigm.com 第一章:Perplexity反义词查询 在自然语言处理(NLP)领域,Perplexity(困惑度)是衡量语言模型预测能力的核心指标——值越低,表示模型对测试…...

QT开发避坑:为什么你的QWidget死活收不到mouseMoveEvent?从setMouseTracking到子控件拦截的完整排查指南

QT开发避坑指南:QWidget鼠标移动事件失效的深度排查 最近在重构一个QT项目时,我遇到了一个看似简单却令人抓狂的问题——明明已经调用了setMouseTracking(true),但mouseMoveEvent就是死活不触发。经过两天的调试和源码追踪,终于梳…...

保姆级教程:用HWSD世界土壤数据库为SWAT模型快速搭建土壤库(附SPAW软件计算避坑指南)

从HWSD到SWAT:零基础构建高精度土壤数据库的完整指南 水文模型研究者常面临一个棘手问题:如何将全球土壤数据转化为模型可用的参数?HWSD(Harmonized World Soil Database)作为国际权威土壤数据库,与SWAT模…...

使用 TaoToken CLI 工具一键配置多开发环境的大模型端点

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 TaoToken CLI 工具一键配置多开发环境的大模型端点 在团队协作或跨项目开发中,为不同的 AI 工具(如 C…...

焊接型球头杆端关节轴承鱼眼接头缺陷检测数据集VOC+YOLO格式3205张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):3205标注数量(xml文件个数):3205标注数量(txt文件个数):3205标注类别…...

RoboMaster电调通信协议逆向解析:如何用逻辑分析仪抓包调试CAN总线数据

RoboMaster电调通信协议逆向解析:如何用逻辑分析仪抓包调试CAN总线数据 当电机突然停止响应,或是反馈数据出现异常时,大多数开发者会陷入反复检查代码的循环。但真正的解决方案往往隐藏在那些肉眼不可见的CAN总线数据流中。本文将带你用逻辑…...

稀疏记忆微调:面向边缘设备的持续学习落地方法

1. 项目概述:这不是又一篇“加个正则就叫持续学习”的水文“Continual Learning via Sparse Memory Finetuning”——光看标题,你可能以为这是某篇顶会里被塞进附录、连作者自己都懒得细讲的补充实验。但实际翻开原文,它像一把薄刃手术刀&…...

压路机远程监控运维管理平台方案

某压路机设备制造商发现传统的“卖设备售后维修”模式已难以为继。其售出的设备遍布各地工地,由于缺乏远程数据交互手段,制造商总部如同“盲人摸象”:既无法实时掌握设备在工地的具体位置和作业状态,也难以在设备出现电气故障或PL…...

Codeforces Round 1056

憧憬成为 Master 第 27 集 —— 罚时上天 (Codeforces Round 1056 (Div. 2)) https://www.bilibili.com/video/BV18QxuzfEXx/ 【赛时5/6题】Codeforces Round 1056 (Div.2) https://www.bilibili.com/video/BV1Q9xuztEAo/ Codeforces Round 1056 拼好饭题解 https://www.bilibi…...

LVGL样式进阶:别再只改颜色了!手把手教你定制lv_switch的动画和lv_btn的按压反馈

LVGL样式进阶:别再只改颜色了!手把手教你定制lv_switch的动画和lv_btn的按压反馈 在嵌入式UI开发中,LVGL作为轻量级图形库的代表,其样式系统的灵活性常常被低估。大多数开发者停留在修改背景色、字体颜色等基础操作,却…...

Codeforces Round 1055

codeforces1055实况 https://www.bilibili.com/video/BV1MdxnzdErn/ Codeforces-1055 jiangly 许淇文 StarSilk tourist 王茂骅 排名演变 https://www.bilibili.com/video/BV1CyxJz5EBB/ Codeforces Round 1055 (Div. 12) A~E 思路代码讲解 https://www.bilibili.com/video/BV1…...

Go语言表单处理与文件上传实战

Go语言表单处理与文件上传实战 引言 表单处理和文件上传是Web开发中的常见需求。本文将深入探讨Go语言中表单处理的最佳实践,包括表单验证、文件上传、安全处理等方面。 一、表单处理基础 1.1 获取表单数据 func HandleForm(w http.ResponseWriter, r *http.Request…...

保姆级教程:用vsomeip实现一个简单的车内服务发现与通信(附C++代码)

车载通信实战:基于vsomeip的服务发现与消息交互全流程解析 在智能座舱与自动驾驶技术快速迭代的今天,车载电子控制单元(ECU)间的可靠通信成为系统设计的核心挑战。SOME/IP作为汽车电子领域广泛采用的通信协议,其开源实…...

Go语言模板引擎与前端渲染实战

Go语言模板引擎与前端渲染实战 引言 模板引擎是Web开发中连接后端数据与前端展示的关键组件。Go语言标准库提供了强大的模板引擎,本文将深入探讨其使用方法和最佳实践。 一、Go模板引擎基础 1.1 text/template与html/template // text/template - 纯文本模板 import…...

华为交换机Telnet配置保姆级教程:从无认证到AAA认证,手把手带你避坑

华为交换机Telnet安全配置全指南:从基础到企业级实践 远程管理网络设备是每位网络工程师的必备技能,而Telnet作为最传统的远程登录协议之一,至今仍在许多企业环境中广泛使用。记得我刚入行时,第一次通过Telnet成功登录到一台核心交…...

Go语言RESTful API设计与实现最佳实践

Go语言RESTful API设计与实现最佳实践 引言 RESTful API已经成为现代Web服务的标准设计风格。本文将深入探讨如何使用Go语言设计和实现高质量的RESTful API,涵盖设计原则、实现技巧和最佳实践。 一、RESTful设计原则 1.1 REST架构约束 约束说明实现方式客户端-服务器…...