自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 在ARM+Ascend NPU上适配Step-Audio模型

Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤),方言(如 粤语,四川话),可控制语速及韵律风格,支持RAP和哼唱等。其核心技术突破体现在以下四大技术亮点:• 1300亿多模态模型: 单模型能实现理解生成一体化完成语音识别、语义理解、对话、语音克隆、语音生成等功能,开源千亿参数多模态模型 Step-Audio-Chat。

2025-06-09 20:06:23 838

原创 Ascend NPU上适配Step-Audio模型

Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤),方言(如 粤语,四川话),可控制语速及韵律风格,支持RAP和哼唱等。其核心技术突破体现在以下四大技术亮点:1300亿多模态模型: 单模型能实现理解生成一体化完成语音识别、语义理解、对话、语音克隆、语音生成等功能,开源千亿参数多模态模型 Step-Audio-Chat。

2025-06-09 19:49:24 590

原创 Ascend NPU上适配Step1X-Edit模型

Step1X-Edit:一个在各种真实用户指令下表现出现的统一图像编辑模型。Step1X-Edit,其性能可与 GPT-4o 和 Gemini2 Flash 等闭源模型相媲美。更具体地说,我们采用了多模态LLM 来处理参考图像和用户的编辑指令。我们提取了潜在嵌入,并将其与扩散图像解码器相结合,从而获得目标图像。为了训练模型,我们建立了一个数据生成管道,以生成高质量的数据集。为了进行评估,我们开发了 GEdit-Bench,这是一种植根于真实世界用户指令的新型基准。

2025-06-09 19:31:54 780

原创 【知识扫盲】分布式系统架构或分布式服务中的管理面,数据面和业务面

层级英文名职责关键组件举例数据面Data Plane处理用户请求、模型推理、输入输出数据转换等核心任务模型服务引擎、Tokenizer/Detokenizer、推理加速器(TensorRT、ONNX Runtime)业务面用户交互、API 接口、权限控制、结果封装等RESTful API 服务、身份认证、前端界面、日志记录管理面资源调度、监控、配置管理、模型部署、弹性伸缩等Kubernetes 控制器、Prometheus 监控、模型仓库、配额系统。

2025-06-07 08:36:51 613

原创 【知识扫盲】如何由inq,ouq和totaltime计算tokens/s

指标公式整体吞吐量(token/s)Batchsize×In_seqOut_seqTotal timeTotal timeBatchsize×In_seqOut_seq​生成吞吐量(token/s)Batchsize×Out_seqTotal timeTotal timeBatchsize×Out_seq​首 token 延迟(ms)单个 token 平均延迟参数名值Batchsize1In_seq1024Out_seq102419.88901。

2025-06-06 22:25:55 675

原创 AllToAll通信为什么用于EP并行?

EP并行一般使用在MOE层,先了解下什么是MOE。

2025-05-23 00:05:10 456

原创 Ascend的aclgraph(十)另外一种成图方式GeConcreteGraph

您可以在调用该接口后,调用GetCompiledGraphSummary获取图编译结果的概要信息(比如模型执行所需的内存资源大小及内存是否可刷新、复用等),根据查询到的内存大小,自行申请并管理内存;您可以配合编译后Graph资源占用查询接口、内存的基地址刷新接口来使用,达到自行管理模型内存、获得更多灵活性的目的。ge中涉及到的代码页比较复杂,本篇还是关注ge图与torch.compile对接,不深入探讨ge细节。包含了图编译过程,并在编译完成后进行模型所需内存资源的初始化,生成可用于执行的模型。

2025-05-16 11:28:59 964

原创 Ascend的aclgraph(九)e2e执行aclgraph

前面的几章内容探讨了aclgraph运行过程中的涉及到的关键模块和技术。本章节将前面涉及到的模块串联起来,对aclgraph形成一个端到端的了解。由于例子中的Model()是个fn, torch.nn.Module对象,因此走到下面的代码分支。调用的接口相同,但是这里却是没有传入congfig参数,一切都是默认的。,那么npu_backend 返回的就是一个可以执行的model对象。)以后的版本上aclgraph模式才得以支持,是可以运行起来的。依旧从代码的角度,看下是如何一步步执行下去的。

2025-05-15 17:08:23 354

原创 Ascend的aclgraph(八)AclConcreteGraph:capture_end

capture_end的逻辑相对简单。下一步,梳理清楚torch.compile中的FX graph和AclmdlRICaptureBegin与AclmdlRICaptureEnd抓的图是什么关系。

2025-05-14 17:42:05 266

原创 Ascend的aclgraph(七)AclConcreteGraph:capture_begin

在aclmdlRICaptureBegin和aclmdlRICaptureEnd接口之间捕获到的任务会暂存在系统内部模型运行实例中,随着任务数量的增加,以及通过Event推导、内部任务的操作,导致更多的Stream进入捕获状态,Stream资源被不断消耗,最终可能会导致Stream资源不足(Stream数量限制请参见aclrtCreateStream),因此需提前规划好Stream的使用、关注捕获的任务数量。接口之间捕获的任务,若要更新任务(包含任务本身以及任务的参数信息),则需在。

2025-05-14 15:50:16 977

原创 Ascend的aclgraph(六)AclConcreteGraph

当你使用 torch.profiler.profile 来分析你的模型时,record_function 标记的部分会在分析结果中以你指定的名字出现,使得分析报告更易于理解。回到warmup阶段。代码中并未标注该warmup过程的作用,不过在前几篇的介绍中提到在图运行前进行warmup操作,可以生成一些缓存,避免在真正运行时候产生的编译时间开销。总之,fx.Interpreter 的 run 方法提供了一种直接且灵活的方式来执行 torch.fx 计算图,使得开发者可以更容易地进行模型调试、变换及优化。

2025-05-13 19:24:15 794

原创 Ascend的aclgraph(五)PrimTorch & TorchInductor

在inductor的默认实现中调用的是compile_fx_inner,而其中的核心函数是。

2025-05-12 19:26:33 957

原创 Ascend的aclgraph(四)AOT Autograd

在前期分析的torchair的源代码中,FX Graph是complie相关函数输入的第一个参数,joint graph,default_partition,call_function都是常见的对象,看完本篇,相应大家对这些概念有个基础的了解。下一篇张,主要介绍Inductor相关的优化部分。

2025-05-12 19:06:20 894

原创 Ascend的aclgraph(三)TorchDynamo

针对TorchDynamo的介绍,该文章已经讲的比较仔细,本篇文章,主要是基于原文并加上自己的理解介绍。在上一篇,解释了torch.compile出现的背景并初步了解了其使用和基础组。先回顾下torch.compile主要包含四个:从python bytecode中解析构建计算图,是一个动态的、Python级别的编译器,旨在捕捉 PyTorch 模型的动态执行路径,将其转换为优化代码,实现bytecode-to-bytecode编译。

2025-05-12 16:16:20 866

原创 Ascend的aclgraph(二)_npu_backend中还有些什么秘密?

从如上的定义:深度学习编译器,可为多种加速器和后端生成代码,生成OpenAI Triton(Nvidia/AMD GPU)和OpenMP/C++(CPU)代码。也就是说,这种后端的作用,是为了生成能够执行的代码。那是否可以自己自定义后端实现?来来来,试一下。

2025-05-09 20:46:47 900

原创 Ascend的aclgraph(一)aclgraph是什么?torchair又是怎么成图的?

在 torch.fx 中,no_dispatch 上下文用于临时关闭 Python 的调度机制(dispatch mechanism),这通常涉及到自动求导(autograd)、函数转换(如将Python函数转换为计算图中的节点)等过程。此外,由于其内部维护了一个计算图,它还支持进一步的分析和变换,这使得它成为实现高级功能(如量化、剪枝等)的理想选择。FX 是 PyTorch 提供的一个用于模型变换和分析的高级工具集,它允许用户对 PyTorch 模型执行图级别的操作,如插入、删除或修改计算图中的节点。

2025-05-09 17:03:26 1203

原创 vllm+vllm-ascend本地部署QwQ-32B

基础镜像地址:https://quay.io/repository/ascend/vllm-ascend?具体可以参考链接:https://vllm-ascend.readthedocs.io/en/latest/installation.html。/xxx/models/llmmodels是宿主机放模型的目录,/usr1/project/models是容器内目录。/usr1/project/models/QwQ-32B:模型路径。served-model-name:接口调用需要传入的模型名称。

2025-04-21 19:24:12 463

原创 【知识扫盲】per-token/per-channel/per-token量化

这三种是模型量化中常见的不同粒度策略,主要区别在于它们应用量化的维度不同。通过合理选择量化粒度,可以在模型大小、推理速度和精度之间取得最佳平衡。

2025-04-11 14:48:21 1017

原创 初识华为RazorAttention

文中提出的RazorAttention是目前业界唯一的静态KV Cache压缩算法,一方面没有在线动态计算开销(既不依赖Attention score,也不涉及在线Topk计算),类似PTQ仅需少量输入样本进行离线校准,便可轻量快捷的决定Attention稀疏模式;另一方面能与FlashAttention等主流融合算子兼容,无明显overhead。

2025-04-07 19:52:15 558

原创 NPU上如何使能pytorch图模式

PyTorch 的 torch.compile 是一个强大的功能,用于优化 PyTorch 模型的性能。它通过将 PyTorch 的动态图转换为静态图,并利用 Just-In-Time(JIT)编译技术,显著提高模型的推理速度和训练效率。

2025-03-24 15:27:48 822

原创 NPU上运行onnxruntime

显示的是cuda的组件找不到。由于是Ascend环境,肯定是没有GPU的,很明显是onnxruntime的包装错了。那么该如何才能构建onnxruntime适配Ascend上的whl包呢?通过如上命令,可以看到环境上确实安装的是gpu版本的。注意**–use_cann**参数。

2025-03-10 19:45:36 432

原创 MindIE BenchMark

服务化MindIE Benchmark工具是通过部署昇腾服务化配套包后,以调用终端命令的方式测试大语言模型在不同配置参数下的推理性能和精度,并通过表格的形式展示模型在各个阶段的推理耗时(例如FirstTokenTime、DecodeTime等),以及对应时延的平均值、最小值、最大值、75分位(P75)、90分位(P90、SLO_P90)和99分位(P99)概率统计值,最后将计算结果保存到本地csv文件中。它包括:需要计算和推理的自然科学,需要知识的人文科学和社会科学,以及需要生活常识的中国驾驶规则等。

2025-02-24 19:44:27 1023

原创 Ascend+FastAPI+ Uvicorn 实现推理

Uvicorn是一个基于ASGI(AsynchronousServerGatewayInterface)的轻量级异步服务器,用于运行PythonWeb应用程序,特别是那些基于ASGI的现代异步框架,如FastAPI、Starlette等。在这个例子中,我们定义了两个路由:一个根路由/和一个带参数的路由/items/{item_id}。然后就是,以FastAPI+Uvicorn启动一个web服务,通过generate_chat_output运行推理,获取推理结果。

2025-01-20 09:13:48 1022

原创 vim配置

【代码】vim配置。

2025-01-17 10:12:29 198

原创 MindIE推理采样后处理参数temperature和top_k的引发的精度问题

使用MindeIE进行推理,后采样参数temperature的和top_k设置。

2025-01-14 09:55:12 402

原创 Attention计算中的各个矩阵的维度都是如何一步步变化的?

在Transformer模型中,各个矩阵的维度变化是一个关键的过程,涉及到输入、编码器、解码器和输出等多个阶段。

2025-01-09 15:57:51 850

原创 解决Ascend上vllm运行时出现urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]

在Ascend上运行vllm测试

2024-12-25 17:27:04 550

原创 AscendC编程中的double buffer是什么?

在此过程中,数据搬运与Vector计算串行执行,Vector计算单元无可避免存在资源闲置问题。举例而言,若CopyIn、Compute、CopyOut三阶段分别耗时t,则Vector的时间利用率仅为1/3,等待时间过长,Vector利用率严重不足。如图1所示,考虑一个完整的数据搬运和计算过程,CopyIn过程将数据从Global Memory搬运到Local Memory,Vector计算单元完成计算后,经过CopyOut过程将计算结果搬回Global Memory。

2024-12-24 10:03:31 477

原创 AscendC从入门到精通系列(五)调用基于工程开发AscendC算子

单算子API调用方式,是指直接调用单算子API接口,基于C语言的API执行算子。算子工程创建完成后,基于工程代码框架完成算子原型定义、kernel侧算子实现、host侧tiling实现,通过工程编译脚本完成算子的编译部署,之后再进行单算子API的调用。

2024-11-09 14:12:24 668

原创 AscendC从入门到精通系列(四)使用Pybind调用AscendC算子

通过PyTorch框架进行模型的训练、推理时,会调用很多算子进行计算,其中的调用方式与kernel编译流程有关。对于自定义算子工程,需要使用PyTorch Ascend Adapter中的OP-Plugin算子插件对功能进行扩展,让torch可以直接调用自定义算子包中的算子,详细内容可以参考PyTorch框架;对于KernelLaunch开放式算子编程的方式,通过适配Pybind调用,可以实现PyTorch框架调用算子kernel程序。

2024-11-09 13:59:59 829

原创 AscendC从入门到精通系列(三)基于自定义算子工程开发AscendC算子

``yaml```java"ND"],"type": ["fp16"},"ND"],"type": ["fp16"],"ND"],"type": ["fp16"核函数的定义,并在核函数中调用算子类的Init和Process函数。// 获取Host侧传入的Tiling参数// 初始化算子类// 算子类的初始化函数,完成内存初始化相关工作// 完成算子实现的核心逻辑。

2024-11-09 13:47:48 1326

原创 AscendC从入门到精通系列(二)基于Kernel直调开发AscendC算子

首先要根据核函数定义 核函数-编程模型-Ascend C算子开发-算子开发-开发指南-CANN社区版8.0.RC3.alpha003开发文档-昇腾社区 (hiascend.com) 的规则进行核函数的定义,并在核函数中调用算子类的Init和Process函数。// 给CPU调用// 给NPU调用#endifpublic:// 初始化函数,完成内存初始化相关操作// 核心处理函数,实现算子逻辑,调用私有成员函数CopyIn、Compute、CopyOut完成矢量算子的三级流水操作。

2024-11-09 13:27:04 841

原创 AscendC从入门到精通系列(一)初步感知AscendC

Ascend C是CANN针对算子开发场景推出的编程语言,原生支持C和C++标准规范,兼具开发效率和运行性能。基于Ascend C编写的算子程序,通过编译器编译和运行时调度,运行在昇腾AI处理器上。使用Ascend C,开发者可以基于昇腾AI硬件,高效的实现自定义的创新算法。

2024-11-08 16:49:50 778

原创 如何在c++侧编译运行一个aclnn(AOL)算子?

CANN(Compute Architecture for Neural Networks)提供了算子加速库(Ascend Operator Library,简称AOL)。该库提供了一系列丰富且深度优化过的高性能算子API,更亲和昇腾AI处理器,调用流程如图1所示。开发者可直接调用算子库API使能模型创新与应用,以进一步提升开发效率和获取极致模型性能。其中aclnnXxxGetWorkspaceSize为第一段接口,主要用于计算本次API调用计算过程中需要多少的workspace内存。

2024-11-08 16:46:41 841

原创 Ascend推理组件MindIE LLM

是MindIE解决方案下的大语言模型推理组件,基于昇腾硬件提供业界通用大模型推理能力,同时提供多并发请求的调度功能,支持Continuous Batching、PageAttention、FlashDecoding等加速特性,使能用户高性能推理需求。MindIE LLM主要提供大模型推理。

2024-11-08 16:40:36 979

原创 ATB概念之:算子tiling

在计算机科学和深度学习领域,算子 tiling(有时也被称作操作符 tiling 或者循环 tiling)是一种优化技术,主要用于提高计算效率,尤其是在处理大规模张量运算时。Tiling 技术通常用于将大的计算任务分解成更小的块,这些小块可以在内存中更高效地处理,或者更适合并行计算环境。需要注意的是,“tiling”一词在不同的上下文中可能有不同的含义。在图像处理中,tiling 也可能指的是将图像分割成多个小块(tiles),以便于独立处理或存储。

2024-11-08 16:35:46 1045

原创 如何使用Ascend的ATB加速库?

Ascend Transformer Boost加速库(下文简称为ATB加速库)是一款高效、可靠的加速库,基于华为Ascend AI处理器,专门为Transformer类模型的训练和推理而设计。具体请阅读:ATB是什么?- 知乎 (zhihu.com)那么程序猿小白如何实现一个ATB算子呢?

2024-11-08 16:29:11 1190

原创 ATB算子实现原理解读

Context类是用于存放与管理ATB内各种公共资源的类,其包含了以下资源:两条stream、控制时序的事件、host内存池、device内存池、Runner池、溢出检测张量。两条stream分别用于kernel执行与tiling data的拷贝,kernel执行的stream由用户设置,tiling data拷贝的stream则由ATB本身来创建。当不开启多stream功能时,用于tiling data拷贝的stream将不会创建。

2024-11-08 16:10:12 1078

原创 ATB是什么?

Ascend Transformer Boost加速库(下文简称为ATB加速库)是一款高效、可靠的加速库,基于华为Ascend AI处理器,专门为Transformer类模型的训练和推理而设计。ATB加速库采用了一系列优化策略,包括算法优化、硬件优化和软件优化,能够显著提升Transformer模型的训练和推理速度,同时降低能耗和成本。具体来说,ATB加速库通过优化矩阵乘法等核心算子和注意力机制的实现方式,实现了对Transformer模型的高效加速。

2024-11-08 15:54:20 1408

原创 Ascend上的PageAttention

Paged Attention 是一种较为高级的技术,它的实现通常需要在具体的应用框架中找到相关的API支持,或者自己编写代码来实现这种机制。在华为昇腾AI处理器的API文档中提到的 PagedAttentionOperation 就是这样一种操作,它提供了分页注意力机制的具体实现方式。通过这些架构和优化,PageAttention显著提高了大型语言模型的服务效率,降低了延迟,提升了整体性能。ascend上的PagedAttention实现为,它是可通过atb算子实现。

2024-11-08 15:48:36 1001

virtio协议

云计算场景下,IO虚拟化使用的半虚拟化驱动virtio协议。

2018-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除