-
手撕attention
手撕 Attention这篇用两个版本把 Scaled Dot-Product Attention 从零实现一遍: 纯 Python 版:方便看清楚每一步数学细节。 PyTorch 版:直接可用于训练和推理。 先回顾公式(单头): $$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}} ... -
qwen部署
1234567conda create -n vllm-qwen python=3.11 -yconda activate vllm-qwenpython -m pip install -U pip setuptools wheelpip install -U vllmpip install -U "transformers>=4.56.0,<5" accel... -
C++面经
构造函数初始化列表与构造函数体内赋值的区别 先看两种写法: class A {public: A(int x) : a(x) {} // 初始化列表private: int a;}; class A {public: A(int x) { a = x; // 构造函数体内赋值 }... -
大模型
大模型参数量和显存的换算关系1B参数对应多少G显存?B和G都是十亿(1000M或1024M)的意思,M是100万的意思,平时说模型参数有xB就是说有x十亿个参数,平时说显存有多少G/M是说有多少G/M个字节(byte),1个字节=8比特(bit),那么,1B模型参数对应多少G内存和参数的精度有关,如果是全精度训练(fp32),一个参数对应32比特,也就是4个字节... -
nf4反量化实现与优化
测试~/Learning-CUDA目录下 1234567891011121314151617# 默认 bf16make nf4# 显式指定 dtypemake nf4 DTYPE=fp16make nf4 DTYPE=bf16# 简写(等价于上面的 DTYPE)make nf4 fp16make nf4 bf16# 指定 GPUmake nf4 CUDA_DEVICE=7make ... -
算子实例
做了一个简单的cuda项目,故记录下来。 头文件和宏定义12345678910111213#include <algorithm>#include <cmath>#include <vector>#include <cuda_fp16.h>#include <cuda_runtime.h>#include <iostream&... -
AI编译器
AI编译器AI 编译器是一种针对 AI 和机器学习应用特别优化的编译器,它能够满足推理场景和训练场景不同需求,将高级语言编写的程序或者训练好的模型文件转换成可以在特定硬件上高效执行的程序。1)以 Python 语言为前端2)拥有多层 IR 设计3)面向神经网络深度优化4)针对不同芯片架构设计 目标 性能优化:极致降低训练、推理耗时,提升吞吐量。 资源利用:最大化硬件资源利用率(CPU... -
cuda
前言CUDA 编程需要理解线程与硬件的物理映射,并优化显存(Global Memory)访问以提升性能。 核心映射Grid/Block/Thread 在物理资源上的占用情况。 软件层级 (Software) 硬件真身 (Hardware) 说明 Grid Device (GPU) 对应显存 (Global Memory)。所有线程可见,但访问延迟较高。 Block SM ... -
ncu nsight
1vim gemm_naive.cu 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#include <cuda_runtime.h... -
c++
常见排序算法概述表 排序算法 时间复杂度(平均) 时间复杂度(最坏) 空间复杂度 是否稳定 适用场景/特点 冒泡排序 是 简单,适合小数据量 选择排序 否 简单,交换次数少 插入排序 是 适合部分有序、小数据量 希尔排序 否 改进插入排序,较快 快速排序 否 实际应用最广泛 归并排序 是 稳定,适合大数据 堆排序 否...