自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 通过云服务器远程连接局域网内的windows电脑

这个需求是来自于我在家里的办公电脑是性能比较强的,但是没有公网 IP,在外面的时候(例如坐车,开会fish),有时候想要使用家里的办公电脑搞些好玩的,画画图什么的,就可以通过 windows 的远程桌面连接上家里的电脑,直接开始了。需要的条件:1)一个有公网IP的云服务器,我这使用的是阿里云的 ECS2)一个在局域网内能够访问到云服务器,但是外部网络访问不到的 windows 电脑,我这里就是家里的 windows11 办公电脑。

2025-04-23 09:15:00 1011

原创 手写 CPU 卷积核加速神经网络计算(2)——OpenCL 简单实现卷积、池化、激活、全连接、批归一化(python 实现)

这里使用 pyopencl 这个支持在 python 环境下跑 opencl 的库,用 opencl 简单实现了这五个算子,没有做其他的算法和内存上的优化。

2025-04-23 09:00:00 915

原创 多节点 CPU+GPU 协同计算负载均衡性设计

假设按输入数据划分,我们可以采用动态的方式给每个 CPU 或 GPU 设备分配数据,做到动态负载均衡,然而这种划分方式,使所有的线程向同一个输出位置保存结果,为了正确性,需要使所有的线程对每个结果进行原子操作,这样将会严重影响性能,极端情况下,所有线程还是按顺序执行的。因此,这种方式效果很差。从输出角度,让所有的计算进程(设备)都有一份计算结果,设备内的线程对结果进行并行计算,每个设备都有一份局部的计算结果,所有设备都计算完毕之后,利用MPI进程对所有设备的计算结果进行规约,规约最后的结果即是最终的结果。

2025-04-22 09:15:00 1885

原创 NCCL 原理

NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信(all-gather, reduce, broadcast)库,Nvidia做了很多优化,以在PCIe、Nvlink、InfiniBand上实现较高的通信速度。

2025-04-22 09:00:00 1056

原创 单节点到多节点优化思路

主要在于如何高效进行多节点并行计算的优化,以及单节点如何利用现代CPU和的缓存的特点高效执行计算。

2025-04-21 09:15:00 1472

原创 NCCL 介绍

模型规模和单一算例下GPU集群数量的指数化增长,对于大规模的神经网络的训练和推理,需要对计算任务进行分割并协调GPU集群来执行单个同步计算。无论使用哪一种并行运算技术,始终无法避免GPU与GPU之间的相互通讯。

2025-04-21 09:00:00 1607

原创 手写 CPU 卷积核加速神经网络计算(1)——naive 实现 卷积、池化、激活、全连接、批归一化(python 实现)

导入一个真实的网络测试一下。

2025-04-16 10:07:53 1367

原创 贡献 Triton 算子库

FlagGems 使用 pre-commit(https://pre-commit.com) 的 git hooks 格式化源代码,在调用 git commit 命令时进行代码静态检查,并且 pre-commit 测试也是 CI 的一部分,不通过检查的 Pull Request 不能被提交到 FlagGems​​​​​​​。打开 FlagGems GitHub 首页(https://github.com/FlagOpen/FlagGems),单击 Fork 按钮创建一个仓库副本​​​​​​​。

2025-04-16 10:06:44 1503

原创 Triton(3)——Triton 语义

Triton 在大多数情况下遵守 NumPy 的语义,但也有一些例外。

2025-04-15 09:15:00 1641

原创 Triton(2)——Triton源码接结构

转换 pass:lib/Conversion/TritonToTritonGPU/TritonToTritonGPUPass.cpp。注:transforms 用于各级 dialect 之上,conversion 用于各级 dialect 之间。include/:核心逻辑定义,核心功能的。python/:python 接口代码。unittest/:单元测试代码。utils/:项目配置文件目录。cmake/:构建配置相关。lib/:核心逻辑实现,docs/:项目文档。test/:测试代码。

2025-04-15 09:00:00 1316

原创 Triton(1)——Triton get started

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

2025-04-14 09:15:00 1329

原创 Tiny Cluster(2)——集群内 SSH 免密登录及批处理

在集群环境中,我们希望能够在多台主机上批量安装软件、获取信息等操作。为了提高效率,需要实现集群内的SSH免密登录和批处理任务执行。操作默认在主节点进行。

2025-04-14 09:00:00 704

原创 Tiny Cluster(1)——搭建树莓派小型计算集群

由于Kubernetes的Pod之间通信复杂,推荐使用支持MPI的Kubernetes Operator或专门的MPI部署工具,如MPI Operator。注意:由于MPI需要在多个Pod之间进行通信,上述简单的Deployment可能无法满足需求。按回车接受默认路径(~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub),​不要设置密码​(直接回车两次),否则后续自动化操作会失败。创建一个Kubernetes的Deployment配置文件,以在K3s集群中运行容器化的Python脚本。

2025-04-12 16:04:13 2038

原创 LLM 部署(7)——LivePortrait 数字人_开源的图生视频模型本地部署和专业视频制作

LivePortrait大模型,只需要一张人脸正面图片和一段文字或音频,即可制作专业的视频内容。LivePortrait 的展示样例:https://liveportrait.github.io/LivePortrait 理论研究,论文:https://arxiv.org/pdf/2407.03168s。

2025-04-12 15:00:38 930

原创 在 Docker 中搭建 CUDA&CUDNN 开发环境

使用容器搭建开发环境:一是可以单独配置开发环境,防止不同工程与项目所用技术的不同引发环境冲突;二来也可以充分的保护主机环境不会因为自己搭建的失误导致系统崩溃。在 Ubuntu 系统中,使用 Docker 容器创建可以使用 GPU+CUDA+cudnn 的步骤。主机需要正常运行 NVIDIA GPU 驱动,通过 docker 来调用 CUDA driver(实际上是在 docker 之上,NVIDIA 又实现了一层才能正常使用),并在创建的 container 中虚拟出 CUDA driver。

2025-04-11 09:30:00 1079

原创 LLM 部署(6)——KTransformers_4090 单卡部署 deepseekseek_r1

【代码】LLM 部署(6)——KTransformers_4090 单卡部署 deepseekseek_r1。

2025-04-11 09:15:00 1172

原创 Vscode 配置代码助手

打开 VSCode,进入扩展市场(快捷键 Ctrl+Shift+X),搜索 “Continue”,然后点击安装。插件:Continue - Codestral, Claude, and more。在 VSCode 中,按。配置自动补全模型(选配)

2025-04-10 09:15:00 1134

原创 LLM 部署(5)——大模型部署私有化 RAG 知识库系统(Docker+AnythingLLM)

AnythingLLM框架: https://github.com/Mintplex-Labs/anything-llm。

2025-04-10 09:00:00 1617

原创 torch.cosine_similarity接口安全性改进

范数可能会超过输入 tensor 的数据类型的表示范围,得到。的计算可能出现 0 做分母,算出 NAN 来。计算的 tensor 的。计算的 tensor 的。范数可能为 0,那么。做分母,算出 0 来。更安全的余弦相似度计算。

2025-04-09 12:01:19 1398

原创 LLM 部署(4)——使用开源大模型部署私有化 Code Copilot

插件,目前支持VS Code和JetBrains 全家桶这 2 个主流 IDE 的扩展,可以在对应的插件市场中直接搜索Continue下载安装。安装成功并重启之后,可以看到VS Code的左侧多了一个Continue按钮。插件管理器中,搜索Continue,点击安装,安装成功之后重启 vscode 即可。快捷键,然后在按下回车键,可以看到代码已经生成,可以按Tab键使用代码。,然后按下回车键,可以生成测试用例代码。在编辑器中,选中一段代码函数,然后按下。在编辑器中,选中一段代码,然后按下。

2025-04-09 12:00:27 1129

原创 LLM 部署(3)——vLLM CPU 和 GPU 模式部署大语言模型

vLLM的依赖包默认支持 GPU 部署和推理,如果使用CPU推理,需要根据vLLM源代码重新编译打包。frpc_linux_amd64文件默认在 HF 上,需要通畅的网络,百度网盘。需要下载vLLM源代码,自己编译打包和安装。(如是Windows WSL子系统,可以通过。参数启用 GPU 多卡分布式并行推理能力。vLLM目前只支持Linux操作系统。命令获取 WSL 的 IP 地址)客户端的使用方法,与之前完全一样。

2025-04-08 16:37:48 1877 1

原创 树莓派 NCNN 部署 yolov5(fp32/fp16)

github 项目仓库:https://github.com/Taot-chen/raspberrypi_dl。

2025-04-08 09:46:45 1422

原创 LLM 部署(2)——Ollama 部署大模型

Ollama官网:https://ollama.com/Ollama是一个开源的 LLM(大型语言模型)服务工具,支持的大语言模型列表,可通过搜索模型名称查看:https://ollama.com/library, 官方 GitHub 源代码仓库:https://github.com/ollama/ollama/。在官网首页,可以直接下载Ollama安装程序(支持 Windows/MacOS/Linux):https://ollama.com/安装完成之后常用的系统环境变量参数设置:删除单个本地大模型:

2025-04-07 09:30:00 2474

原创 虚拟网络设备

Linux提供了许多虚拟网络设备用于运行 VMs 和 containers。

2025-04-07 09:15:00 2577

原创 常用数据时域降噪方法

数据降噪是最常用的数据处理方法之一。从时域和频域的角度,数据降噪方法可以分为时域降噪和频域降噪,本文主要介绍一些常用的时域降噪方法。

2025-04-06 18:47:05 1269

原创 LLM 部署(1)——LLM 部署框架对比

它通过创新的PagedAttention技术、连续批处理、CUDA核心优化以及分布式推理支持,显著提高了LLM的推理性能。PagedAttention技术:通过内存管理技术,PagedAttention能够将注意力机制中的键(keys)和值(values)存储在不连续的显存空间中,从而减少显存碎片,提高显存利用率。捆绑模型组件:Ollama将模型权重、配置和数据捆绑到一个包中,称为Modelfile,这有助于优化设置和配置细节,包括GPU使用情况。可以应用于多种场景,如聊天机器人、文本生成、问答系统等。

2025-04-06 18:43:58 1146

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

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

2025-04-04 09:30:00 784

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

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

2025-04-04 09:15:00 2269 1

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

低秩分解(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 1209

原创 香橙派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 1387

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

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

2025-04-02 09:15:00 1153

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

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

2025-04-02 09:00:00 1103

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

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

2025-04-01 23:21:07 806

原创 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 1122

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

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

2025-04-01 08:23:05 1756

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

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

2025-03-31 09:06:20 1088

原创 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 1810

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

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

2025-03-28 19:15:11 1525

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

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

2025-03-28 19:06:37 1499

原创 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 1704

空空如也

空空如也

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

TA关注的人

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