Skip to content

Roundaboutt/NF4-Dequantize-Kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

快速开始性能测试

uv run main.py运行测试程序,终端输出误差以及性能分析报告

结果示例:

--- 正在执行: 编译 C++ CUDA 内核 ---
--- 正在执行: 生成随机量化权重 ---
维度: 32768x32768 | Block: 64 | Group: 256
数据已写入: ./data/qlora_test.bin
--- 运行反量化 ---
耗时: 24.4132 ms | 吞吐: 1106.48 GB/s
基准输出已保存: ./data/py_output.bin
--- 正在执行: 运行自定义 CUDA 内核 ---
原始元素: 1073741824
对齐元素: 1073741824
Launch Kernel...
Kernel 耗时: 21.6289 ms
有效带宽: 1248.91 GB/s
--- 正在执行: 对比精度与性能表现 ---
测试维度: 32768 x 32768
Python: ./data/py_output.bin
C++: ./data/cpp_output.bin

==================================================
误差分析报告
==================================================
平均绝对误差 (MAE):6.5369757067e-05
均方误差 (MSE):2.4582243441e-07
最大误差 (Max Diff):1.5625000000e-02
--------------------------------------------------
完全一致元素数:1043509311 / 1073741824
一致率:97.1844%
==================================================

 随机数据采样对比
---------------------------------------------------------------------------
Index      | Python (BF16)      | C++ (BF16)         | Diff           
---------------------------------------------------------------------------
0          | 0.394531           | 0.394531           | 0.0000e+00     
1          | 1.171875           | 1.171875           | 0.0000e+00     
2          | -0.215820          | -0.215820          | 0.0000e+00     
446162790  | -0.277344          | -0.277344          | 0.0000e+00     
1066319814 | 0.000000           | 0.000000           | 0.0000e+00     
230426597  | 0.205078           | 0.205078           | 0.0000e+00     
951028163  | 0.322266           | 0.322266           | 0.0000e+00     
857049811  | -0.566406          | -0.566406          | 0.0000e+00     
527929503  | 0.718750           | 0.718750           | 0.0000e+00     
23305680   | 0.000000           | 0.000000           | 0.0000e+00     
168636035  | 0.134766           | 0.134766           | 0.0000e+00     
660748068  | -0.625000          | -0.625000          | 0.0000e+00     
801264382  | 0.098633           | 0.098633           | 0.0000e+00     
---------------------------------------------------------------------------
bnb耗时:24.41320ms, 带宽:1106.47730GB/s
nf4 kernel耗时:21.62890ms, 带宽:1248.91000GB/s

data目录

data目录存放测试文件以及反量化的输出结果。 在param.txt中可以修改测试用矩阵大小等参数。 data/log目录存放输出的性能日志。

kernel_test目录

kernel_test目录中是kernel逐步优化的过程。

src目录

generate_data.py 用于生成随机矩阵,并使用bnb库量化后输出文件qlora_test.bin供nf4_kernel.cu读取进行反量化。同时generate_data.py将量化后的矩阵进行反量化并计时,性能日志输出到data/log/log_py.txt,运算结果输出到data/py_output.bin

nf4_kernel.cu是CUDA实现的nf4反量化算子,从qlora_test.bin中读取量化后的矩阵进行反量化,并将结果输出到data/cpp_output.bin,性能日志输出到data/log/log_cpp.txt

benchmark.py 是测试程序。读取cpp_output.bin与py_output.bin,对二者反量化结果进行精度对比。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors