自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(210)
  • 收藏
  • 关注

原创 编译一个最小可用 Linux 内核

我们需要添加3个文件用以描述外部。直接编译的出的镜像文件大小有153M。文件系统的最小内核, 以。

2025-04-04 09:30:00 224

原创 香橙派5 Ultra(2)——RK3588 上 CPU 和 GPU 算力以及 opencv resize 性能对比测试

注:这里修改 GPU 的模式在开发板重启之后即恢复为默认值。

2025-04-04 09:15:00 178

原创 低秩分解压缩模型实验

低秩分解(Low-rank Decomposition)是一种矩阵分解技术,旨在将一个矩阵分解为两个或多个矩阵的乘积,从而将高维数据压缩为低维表示,以减少参数量。在大模型中,权重矩阵通常非常大,尤其是在全连接层和注意力机制中,运用低秩分解可以减少参数量和计算量。权重矩阵W的大小为m×n。通过低秩分解,可以将W分解为两个较小的矩阵W1​W2​W≈W1​×W2​其中W1​的大小为m×kW2​的大小为k×nk是矩阵W秩(rank),通常k。

2025-04-03 09:15:00 590

原创 香橙派5 Ultra(1)——上手记录

Orange Pi5 Ultra 采用了瑞芯微 RK3588 新一代八核 64 位 ARM 处理器,具体为四核 A76 和四核 A55,采用的三星 8nm LP 制程工艺,大核主频最高可达 2.4GHz,集成 ARM Mali-G610 MP4 GPU,内嵌高性能 3D 和 2D 图像加速模块,内置高达 6 Tops 算力的 AI 加速器 NPU,具有高达 8K 显示处理能力。我这里的读速度为 1.8GB/s,这里一定要先清除缓存,否则会由于缓存的原因,达到很高的读速度。我这里的写速度为 1.5GB/s。

2025-04-03 09:00:00 655

原创 NPU 硬件架构及张量技术开发

这里以 V853 芯片内置 NPU 为对象学习 NPU 架构。这个 NPU,其处理性能为最大 1 TOPS 并切带有 128KB 内部高速缓存用于高速数据交换,支持 OpenCL、OpenVX、android NN 与 ONNX 的 API 调用,同时也支持导入大量常用的深度学习模型。

2025-04-02 09:15:00 640

原创 LLM 优化技术(5)——StreamingLLM 拥有无限长生成能力

因为 Attention 的计算量和内存需求都随着序列长度增加而成平方增长,所以增加序列长度很难,一些实现方法包括:训练时用 FlashAttention 等工程优化,以打破内存墙的限制,或者一些 approximate attention 方法,比如 Longformer 这种 Window Attention 方法。这篇论文通过使用 approximate attention 的方法,放松了对全部输入记忆的限制,仍然只记住最近的上下文,但实现了处理无限输入并获得无限输出的效果,另辟蹊径。

2025-04-02 09:00:00 616

原创 nvidia 各 GPU 架构匹配的 CUDA arch 和 CUDA gencode

与最常用的 GPU 卡匹配的标志。这将实现更快的运行时,因为代码生成将在编译期间发生。) 指定了 CUDA 文件将为其编译的 NVIDIA GPU 架构的名称。标志,则 CUDA 驱动程序将在JIT编译器上生成 GPU 代码。) 允许更多的 PTX 代,并且可以针对不同的架构重复多次。但是,有时可能希望通过添加更全面的。当想要加速 CUDA 编译时,想要减少不相关的。当编译 CUDA 代码时,应该始终只编译一个。标志来获得更好的 CUDA 向后兼容性。)时,arch 标志 (

2025-04-01 23:21:07 307

原创 GPU D2D 原理

当下的大模型训练/推理,多 GPU 之间,除了使用高带宽的 nvlink 通信之外,在不支持 nvlink 的 GPU 上,也可以使用 PCIE 进行互联通信。一种常见的网络拓扑:8 卡 GPU 的机器通过单边 4 卡通过 PCIE SW 连接到单个 CPU,使用这种架构的常见机器包括 A100(A800) PCIE、4090、L4 等等。两个 CPU 之间再通过 QPI 连接。常见的跨 GPU 通信算子如AllReduceAlltoAll都涉及到最基本的操作:两个设备间的D2D拷贝。一般来说,

2025-04-01 08:32:49 624

原创 LLM 优化技术(4)——flash_attention 原理

如上图所示,Flash-attention 采用了矩阵分块和算子融合(safe softmax reducetion)的方法,尽可能的减少内存的 IO 时间,最大化利用 GPU 硬件中的共享内存,减少去 HBM 中进行内存的搬运等操作。在长序列的 LLM 推理任务中,能够有效的减少推理的时间,尤其是 prefill 阶段。

2025-04-01 08:23:05 918

原创 AI 模型推理算力需求计算

推理阶段,没有优化器状态和梯度信息,也不需要保存中间激活。因此推理阶段占用的显存要远远远小于训练阶段。模型推理阶段,占用显存的主要是模型权重和 kv cache。通过知识蒸馏将 DeepSeek-R1 的模型参数迁移到更小参数规模的 Qwen、Llama 等小模型中,这些模型实际上就是 Qwen、Llama 模型。在 V3 的基础上,采用传统预训练-监督微调+MoE架构模型,DeepSeek-R1专注高级推理,适合数学、代码生成和逻辑推理性能,用于科研等。使用大规模强化学习训练的 MOE 模型。

2025-03-31 09:06:20 556

原创 LLM 优化技术(3)——sliding_window_attention

一种(理论有损)提升注意力计算效率的方法:SWA(sliding window attention)。Qwen系列和Mistral就使用了SWA。对于原始的 causal attention,其注意力矩阵是一个下三角矩阵,这样每个 token 都能看到自己和在自己前面的所有的 token。这样随着输入长度s增大,这个下三角矩阵中 1 的元素数量以s2​的速度增长,计算量以序列长度平方的速度增长,缓存和长度成线性关系增长。

2025-03-31 09:01:29 1332

原创 LLM 优化技术(2)——paged_attention 原理

与进程共享物理页面的方式类似,PagedAttention 中的不同序列可以通过将它们的逻辑块映射到同一个物理块的方式来共享块。vLLM 主要用于快速 LLM 推理和服务,其核心是 PagedAttention,这是一种新颖的注意力算法,将在操作系统的虚拟内存中分页的经典思想引入到 LLM 服务中。因为块在内存中不需要连续,因而可以用一种更加灵活的方式管理 key 和 value ,就像在操作系统的虚拟内存中一样:可以将块视为页面,将 token 视为字节,将序列视为进程。

2025-03-28 19:15:11 1038

原创 LLM 优化技术(1)——Scaled-Dot-Product-Attention(SDPA)

在 Transformer 中抛弃了传统的 CNN 和 RNN,整个网络结构完全由和组成。一个基于 Transformer 的可训练的神经网络可以通过堆叠 Transformer 的形式进行搭建,论文中通过搭建编码器(encoder)和解码器(decoder)各 6 层,总共 12 层的,并在机器翻译中取得了 BLEU 值的新高。这里先之看这个接口。

2025-03-28 19:06:37 962

原创 ESP32-CAM 使用 webcam 摄像头实时查看视频

ESP32-CAM 是小尺寸的摄像头模组该模块可以作为最小系统独立工作,尺寸仅为 2740.54.5mm,可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、QR 无线识别,无线定位系统信号以及其它物联网应用,是物联网应用的理想解决方案。采用低功耗双核32位CPU,可作应用处理器主频高达240MHz,运算能力高达 600 DMIPS内置 520 KB SRAM,外置8MB PSRAM支持UART/SPI/I2C/PWM/ADC/DAC等接口。

2025-03-27 12:08:48 794

原创 DeepSpeed 训练推理压缩实践

在 DeepSpeed 的分布式训练中,通常只需要在一台服务器上运行启动脚本。NCCL 主要用于多 GPU 和多节点(即分布式)环境中的深度学习训练,以加速跨多个 GPU 或多个计算节点的数据交换。在深度学习训练过程中,特别是在使用数据并行和模型并行策略时,NCCL 可以显著提高通信效率,加速训练过程。通过这种方式,主节点会自动在所有参与的服务器上启动训练进程,并协调它们之间的通信和数据同步。通常情况下,只需要在主服务器上运行启动脚本,并确保主机列表文件中的第一台服务器是希望作为主服务器的机器即可。

2025-03-27 12:07:27 919

原创 deepseek(2)——deepseek 关键技术

然后,GRPO 使用计算出的优势来更新策略模型 (DeepSeek-V3-Base),以增加生成具有高优势的输出(如 o2 和 o3)的概率,并降低具有低优势或负优势的输出(如 o1 和 o4)的概率。这一阶段,依然使用相同的 GRPO 算法,但是奖励系统有所改变,添加了语言一致性奖励,来解决 R1 Zero 的语言混淆的问题。(或数字相同的内容),它会得到正奖励,比如说 +1。通过动态调整,DeepSeek-V3 在训练期间保持专家负载平衡,并比通过纯辅助损失鼓励负载平衡的模型实现了更好的性能。

2025-03-25 09:41:35 2146

原创 deepseek(1)——deepseek 整体架构

DeepSeek-R1 是首个验证了仅通过 RL(强化学习)无需 SFT (监督微调) 就能得到大幅推理能力增强和涌现的模型。这种训练方式大幅降低了数据标注成本,简化了训练流程,整体训练成本也得到了降低。

2025-03-25 09:38:50 875

原创 compiler 学习(3)——Auto TVM 理解

> 对于特性后端识别出一系列针对硬件的优化原语,这些优化原语组成一个庞大的搜索空间,TVM 使用基于机器学习的优化器(AutoTVM),从搜索空间中找到一种高性能的优化方法 --> 将优化后的算子部署到后端设备。各种深度学习框架 --> 计算图 --> 高层级graph --> 优化计算图 --> 算子级别的优化和 code gen。XGBTuner 使用 XGBoost 作为成本模型。例如对于矩阵乘,搜索空间可以是矩阵的不同切法,例如。

2025-03-24 10:03:41 215

原创 compiler 学习(2)——Triton 概览

Triton 基于 python 的 DSL,面向 GPU 体系特点,自动分析和实施神经网路计算的分块,triton 既是语言,也是编译器。

2025-03-24 10:01:16 936

原创 compiler 学习(1)——MLIR 官方入门学习

clang 对 AST 进行静态分析和转换操作,各个语言的AST都需要进行类似的优化转换成对应的 IR:分为高级编程语言和机器学习框架两种不同的前端。如上图,以C语言为例,在编译阶段,首先由 Clang 编译器前端生成对应的抽象语法树 AST,然后 AST 会被转换成 LLVM IR,在LLVM IR 上进行相关的优化工作。之后,优化完成的 LLVM IR 会经过一系列的流程被转换成机器码,最终在指定的硬件设备上运行。

2025-03-23 17:09:51 748 1

原创 CUDA 学习(4)——CUDA 编程模型

在现在的计算机体系架构中,要完成 CUDA 并行计算,单靠 GPU 一人之力是不能完成计算任务的,必须借助 CPU 来协同配合完成一次高性能的并行计算任务。一般而言,并行部分在 GPU 上运行,串行部分在 CPU 运行,这就是。异构计算的意思就是不同体系结构的处理器相互协作完成计算任务。CPU 负责总体的程序流程,GPU 负责具体的计算任务,当 GPU 各个线程完成计算任务后,将 GPU 那边计算得到的结果拷贝到 CPU 端,完成一次计算任务。

2025-03-23 17:08:52 854

原创 CUDA 学习(3)——CUDA 初步实践

来定位发起 thread,下面发起 1 个 grid,里面有 2 个 block,每个 block 里有 5 个 threads。将向量 a 与向量 b 逐元素相加,计算的结果为向量 c。使用 cpu 与 GPU 分别实现向量相加,并比较执行速度。这段代码需要向 GPU 申请显存,用来存储数组。使用 cuDNN 实现 sigmoid 函数。对数组进行规约操作。

2025-03-22 22:29:25 441

原创 CUDA 学习(2)——CUDA 介绍

GeForce 256 是英伟达 1999 年开发的第一个 GPU,最初用作显示器上渲染高端图形,只用于像素计算。在早期,OpenGL 和 DirectX 等图形 API 是与 GPU 唯一的交互方式。后来,人们意识到 GPU 除了用于渲染图形图像外,还可以做其他的数学计算,但是 OpenGL 和 DirectX 等图形 API 的交互方式比较复杂,不利于程序员设计 GPU 计算程序,这促成了 CUDA 编程框架的开发,它提供了一种与 GPU 交互的简单而高效的方式。

2025-03-22 22:28:34 1365

原创 CUDA 学习(1)——GPU 架构

2010 年提出 Fermi 架构,开启了架构演进的进程,属于首个完整的 GPU 计算架构,里面提出的新概念一直沿用至今。2016 年提出 Pascal 架构,首次提出 NVLink,双向互联带宽达到 160 GB/s 对 AI 领域产生重大影响,是具有历史性意义的里程碑架构。2017 年提出 Volt 架构,首次提出张量核心(Tensor Core),专门针对神经网络矩阵卷积运算进行加速的第一代核心,同时提出 NVSwitch1.0,提高 GPU 之间的通信效率和性能。

2025-03-21 15:17:51 2142 4

原创 Deepseek API 调用

安装一个本地的第三方大模型客户并配置,常见的包括 Chatbox(https://chatboxai.app/zh)和 Cherry Studio(https://cherry-ai.com/)目前比较知名的提供了DeepSeek的推理服务商包括硅基流动、阿里云、腾讯云等等。这些推理服务商一般是提供API接口,需要安装大模型客户端并配置API。选项,将之前复制的 API 密钥粘贴到对应的输入框中,然后在下方的。,然后粘贴从硅基流动获取的 API 密钥,在对话界面选择模型。

2025-03-20 09:46:25 385

原创 ChatTTS 开源文本转语音模型本地部署 API 使用和搭建 WebUI 界面

ChatTTS(Chat Text To Speech),专为对话场景设计的文本生成语音(TTS)模型,适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。支持中文和英文,还可以穿插笑声、说话间的停顿、以及语气词等。

2025-03-20 09:45:13 498

原创 基于香橙派 KunpengPro学习CANN(3)——pytorch 模型迁移

通用模型迁移适配可以分为四个阶段:迁移分析、迁移适配、精度调试与性能调优。迁移分析迁移适配精度调试性能调优。

2025-03-18 23:22:29 738

原创 基于香橙派 KunpengPro学习CANN(2)——Ascend Extension for PyTorch 配置与安装

将 PyTorch 网络迁移到昇腾平台并执行训练或推理,直接使用昇腾提供的构图接口构图。Ascend Extension for PyTorch插件用于适配PyTorch框架,可以使用昇腾AI处理器的算力。

2025-03-18 23:21:07 581

原创 基于香橙派 KunpengPro学习CANN(1)——CANN 总体架构

异构计算架构CANN(Compute Architecture for Neural Networks)是,向上支持多种AI框架,包括MindSpore、PyTorch、TensorFlow等,向下服务AI处理器与编程。

2025-01-06 21:10:12 1057

原创 github 个人主页配置

Guthub 个人主页 (官方称呼是 profile)可以展示很多有用的信息,例如添加一个首页被访问次数的计数器,一个被 Star 与 Commit 的概览信息,以及各种技能标签,设备标签等,还可以利用 wakatime 显示你最近编码各类语言的使用时长。

2025-01-06 21:05:12 1957

原创 阿里云服务器配置成代理服务器

访问ssh协议远程仓库,相关代理并不通过git来设置,而是设置本地ssh的相关文件。不出意外的话,此时使用 ssh 协议 clone github 仓库是可以的了。阿里云服务器需要去防火墙里把3128端口打开,不然访问不了。设置git协议的代理,需要安装connect-proxy。设置ssh协议的代理,需要安装connect-proxy。文件中添加下面的配置即可。

2025-01-02 20:22:20 966

原创 ubuntu 常见问题(持续记录)

由于我对于 torch 的版本目前没有使用最新版的需求,因此通过回退 torch 的版本也可以解决。通过安装 2.3.0 版本可以正常使用。ubuntu server 在重启之后,IP 会变化,这很不利于作内网穿透,因此很有必要使用静态 IP。安装最新的 torch-2.5.1 之后,将nameservier 修改为。编辑 netplan 配置文件。这里写的很明白,因此需要在文件。导致,需要重新正确连接;

2025-01-02 20:21:19 604

原创 树莓派linux内核源码编译

为防止内核覆盖中的现有模块,并在uname输出中说明运行的是自己的内核,调整。修改.config为防止内核覆盖中的现有模块,并在uname输出中说明运行的是自己的内核,调整。修改.config。

2025-01-01 23:11:32 1105

原创 linux查看硬件信息

【代码】linux查看硬件信息。

2025-01-01 23:09:35 259

原创 使用NCNN在树莓派部署深度学习模型流程

这个工具依赖 protobuf,编译起来比较麻烦,可以直接去官方仓库里直接下载:https://github.com/Tencent/ncnn/releases,根据操作系统选择合适的版本下载即可,zip 里面就有 onnx2ncnn 文件。后续还可以使用 C++ 调用和封装,大概流程是先加载模型创建一个指向模型的指针,然后创建session、创建用于处理输入的tensor,将input_tensor送入session,运行session,最后得到网络的输出。这里由于是自己编译的 ncnn,

2024-11-02 14:40:15 1204

原创 树莓派5使用 MobileNet v2 实时推理相机视频

Pytorch 对于树莓派提供了较好的支持,可以利用 Pytorch 在树莓派上进行试试推理,本文将尝试在树莓派5上使用 CPU 实时推理 MobileNet v2 分类模型。github 项目: https://github.com/Taot-chen/raspberrypi_dl。

2024-11-02 14:38:45 925

原创 树莓派5_PCIE_2_M2_SSD硬盘

树莓派5支持了 mini PCIE 接口,默认工作在 PCIE gen2x1,也可以通过修改配置,使其工作在 PCIE gen3x1。通过 PCIE to M.2 HAT,可以使用 NVME 协议 M.2 接口的 SSD。

2024-11-01 11:27:40 1697

原创 树莓派5实时时钟(RTC)

树莓派5板载一个实时时钟模块。它可以通过 USB-C 电源插口右侧板上的 J5(BAT) 插口进行电池供电。如果没有互联网连接来通过 NTP 获取时间,RTC 可能会很有用。可以设置唤醒警报,将树莓派5切换到非常低功耗的状态(大约3mA)。当到达闹钟时间时,树莓派将重新上电。这对于定时拍摄图像等周期性作业非常有用。

2024-11-01 11:21:42 1006

原创 树莓派基于mobilenet_v2自训练手语识别模型

随机灰度化是为了在训练过程中,有一定的概率将图像转换为灰度图,这可以帮助我们的模型更好地泛化。])Resize:将图像调整到指定的高度和宽度。RandomGrayscale:以一定的概率将图像转换为灰度图。ToTensor:将图像数据转换为PyTorch的Tensor格式Normalize:对图像进行标准化处理,使数据分布在[-1, 1]之间])对于验证数据加载器,不需要随机灰度化。print("类别名称:", class_names)print("加载已有模型继续训练")

2024-10-25 14:13:42 643 1

原创 树莓派5使用pytorch训练模型(CPU)

Pytorch 对于树莓派提供了较好的支持,可以利用 Pytorch 在树莓派上进行试试推理,当然也可以使用树莓派进行模型训练了,这里尝试使用树莓派CPU对模型进行训练。

2024-10-25 13:58:25 1356

空空如也

空空如也

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

TA关注的人

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