Week Report
进度汇报(2022.8.31-2022.9.4)
- 读zeroq量化代码并在实验室集群上调试,跑通了对resnet18的压缩
- 读赵随意师兄的BaselineIR的部分代码,并放在集群上进行了训练,
解决了数据集路径错误、训练中途闪退问题。
本周计划(2022.8.31-2022.9.4)
- 阅读最新Quantization综述以及部分zero-shot quantization最新论文,整理思路。
- 解决zeroq量化代码中看不懂的部分
进度汇报(2022.9.5-2022.9.11)
- 对照论文理解了zeroq代码,并对distill data部分的total_loss进行修改,实验证明在分类任务上原total_loss的部分成分对量化后的精度影响极小,top-1 accuracy 波动在0.01%左右。
- 阅读投稿JMLC一篇文章的手稿和相关论文,对疑问点进行评论。
- 阅读2021模型量化最新综述。
本周计划(2022.9.5-2022.9.11)
- floating point quantization: 阅读论文FP8 Quantization: The Power of the Exponent(2022.8)及相关论文,尝试代码实现。
- fixed point quantization: 阅读论文Post training 4-bit quantization of convolutional networks for rapid-deployment(2019)
进度汇报(2022.9.12-2022.9.18)
- 阅读论文FP8 Quantization: The Power of the Exponent(2022.8),尝试代码实现
- 阅读QPyTorch: A Low-Precision Arithmetic Simulation Framework(2019.10),并阅读了框架部分源码
- 中翻英 teaching statement
本周计划(2022.9.12-2022.9.18)
- floating point quantization: 继续FP8 coding相关部分学习
- fixed point quantization: 阅读论文Post training 4-bit quantization of convolutional networks for rapid-deployment(2019)
进度汇报(2022.9.19-2022.9.25)
- floating point quantization: FP8 coding -> 进度缓慢,暂时放下
- fixed point quantization:
- 阅读论文Post training 4-bit quantization of convolutional networks for rapid-deployment(2019),理解ACIQ
- 阅读论文SQUANT(2022)
本周计划(2022.9.19-2022.9.25)
- SQUANT 源码理解
- 审稿
进度汇报 (2022.9.26-2022.10.9)
- SQUANT 源码理解
- 审稿
本周计划(2022.9.26-2022.10.9)
- 重温zeroq,和21年最新综述
- 重构SQuant代码,作为以后工作的baseline
- 审稿
进度汇报 (2022.10.10-2022.10.16)
- 理清了SQuant代码中是如何控制tensor shape的转变来进行kernel-wise channel-wise不同粒度的量化,对代码中的杂乱、无效部分做了重构
- 审稿:EC0065699_O_基于改进YOLOX的公路路面裂缝检测网络
本周计划(2022.10.10-2022.10.16)
- 重温zeroq和21年最新综述
- QAT量化感知训练入门,在MNIST数据集上跑通一个demo
进度汇报 (2022.10.17-2022.10.23)
- 回顾ZeroQ和21年最新综述,组会准备
- 特殊环境去雨项目:填写开题表格,做PPT
- QAT量化感知训练入门,在MNIST数据集上的demo尚未跑通
本周计划(2022.10.17-2022.10.23)
- 实验:将ZeroQ蒸馏出的数据用在SQuant中间层激励的剪切范围确定上,看效果
- 跑通MNIST数据集上的QAT量化demo
- 完成学科前沿作业;准备数理统计考试
进度汇报 (2022.10.24-2022.10.30)
实验:将ZeroQ蒸馏出的数据用在SQuant中间层激励的剪切范围确定上,效果如下:
Experiment Model Dataset W-bit A-bit Top-1 Accuracy Top-5 Accuracy Activation Clip Range Setting Gaussian_data(μ=0,σ=1) Resnet18 ImageNet 8bit 8bit 73.012% 91.036% sigma = 25 Gaussian_data(μ=0,σ=1) Resnet18 ImageNet 8bit 8bit 73.066% 90.990% sigma = 30(较sigma=25增大了clip range) ZeroQ_Refined_Data Resnet18 ImageNet 8bit 8bit 72.854% 91.008% sigma = 25 ZeroQ_Refined_Data Resnet18 ImageNet 8bit 8bit 67.308% 87.524% sigma = 0(clip range:[0, max]) 在MNIST数据集上跑通了的量化感知训练(QAT)的demo
阅读论文 Data-Free Quantization Through Weight Equalization and Bias Correction (2019)
本周计划(2022.10.24-2022.10.30)
- fix上周实验出现的中间层activation异常偏大的bug
- 实验评估:在原模型上统计clip range与叠加量化clip error和round error之后统计clip range, 二者对量化结果精度的影响
- 处理作业,准备考试
进度汇报 (2022.10.31-2022.11.06)
实验:在原模型上统计clip range与叠加量化clip error和round error之后统计clip range,精度对比:
Experiment Model Dataset W-bit A-bit Top-1 Accuracy Top-5 Accuracy Activation Clip Range Setting Gaussian_data(μ=0,σ=1)+叠加量化error统计clip range Resnet18 ImageNet 8bit 8bit 73.012% 91.036% sigma = 25 Gaussian_data(μ=0,σ=1)+原模型统计clip range Resnet18 ImageNet 8bit 8bit 72.394% 90.656% sigma = 25 ZeroQ_refined_data+叠加量化error统计clip range Resnet18 ImageNet 8bit 8bit 72.854% 91.008% sigma = 25 ZeroQ_refined_data+原模型统计clip range Resnet18 ImageNet 8bit 8bit 72.836% 90.948% sigma = 25 结论:在原模型上统计clip range相较于叠加了量化error再统计clip range,最终的精度出现轻微下降,符合猜测
解决了上周实验出现的中间层activation异常偏大的bug
初步改出了fp32模拟量化到fp8的代码,在resnet18上实验效果不理想
本周计划(2022.10.31-2022.11.06)
- 结合相关论文,改进fp8模拟量化
- 组会准备;考试准备
进度汇报 (2022.11.07-2022.11.13)
- 组会准备;处理交代的改稿工作
- 数理统计考试准备
本周计划(2022.11.07-2022.11.13)
- 矩阵理论考试准备
进度汇报 (2022.11.14-2022.11.20)
- 处理考试相关
- 整理之前解决问题的很多网页记录;学习docker
本周计划(2022.11.14-2022.11.20)
- 阅读浮点量化相关论文,改进FP8量化
进度汇报 (2022.11.21-2022.11.27)
- FP8: 对于fixed FP8 formats即在sign:exponet:mantissa固定在1:4:3或1:5:2的情况下,如果像IEEE754 FP32一样固定尾数偏移,得不到论文中展示的接近或 优于IN8的表现,采用类似INT8的缩放策略亦未奏效。
- 审稿
本周计划(2022.11.21-2022.11.27)
- 课程考试、作业处理
- 阅读论文:On-Device Training Under 256KB Memory
进度汇报 (2022.12.05-2022.12.11)
- 调研了解模型剪枝和稀疏化
- 尝试在手机上部署NCNN mobilenetssd(demo)
本周计划(2022.12.05-2022.12.11)
- 审稿
- 准备计算机体系结构考试
进度汇报 (2022.12.12-2022.12.18)
- ICASSP 审稿
- 了解NCNN,在手机上部署demo: mobilenetssd yolov7
本周计划(2022.12.12-2022.12.18)
- 读论文:PD-Quant(2022.12)
- 调研了解Mixed Precision Quantization相关工作
进度汇报 (2022.12.19-2022.12.26)
- 读论文:PD-Quant(2022.12)
- 调研了解Mixed Precision Quantization相关工作
本周计划(2022.12.19-2022.12.26)
- 将PD-Quant引入的量化损失Metric与之前工作结合,尝试复现
- 继续调研Mixed Precision Quantization相关
进度汇报 (2022.12.27-2023.1.1)
- 在量化参数scaling factor和offset选取上借鉴PD-Quant引入当前层activation量化在最终预测结果引起的差异。不仅考虑当前层activation量化前后差异,还引入当前层的activation量化在后面若干层累积后引起的差异。
- 改稿
后期计划(2022.12.27-2023.1.1)
继续完善量化引入全局累积差异的代码,提升性能
进度汇报 (2023.2.8-2023.2.12)
- workshop (NTIRE 2023 Efficient Super-Resolution Challenge)
Efficient Super-Resolution Challenge(ESR):train rfdn baseline,test 结果如下
Model Dataset Val PSNR Val Time [ms] Params [M] FLOPs [G] Acts [M] Mem [M] Conv trained_rfdn_best DIV2K_val(801-900) 28.73 37.62 0.433 27.10 112.03 788.13 64 RFDN_baseline_1 DIV2K_val(801-900) 29.04 41.38 0.433 27.10 112.03 788.13 64 RFDN_baseline_2 DIV2K_val(801-900) 29.04 43.86 0.433 27.10 112.03 788.13 64 RFDN_baseline_3 DIV2K_val(801-900) 29.04 37.59 0.433 27.10 112.03 788.13 64
后期计划(2023.2.8-2023.2.12)
- rfdn基础上改进模型
进度汇报 (2023.2.13-2023.2.19)
- workshop (MAI 2023 Video Super Resolution)
- 先train 2022官方仓库 MRRN baseline
环境配置
Python 3.8.10
Tensorflow 2.9.0
- 查看tensorflow cuda cudnn python 版本对照表: https://www.tensorflow.org/install/source_windows
Cuda 11.2
Cudnn v8.7.0
- 官网:https://developer.nvidia.com/cudnn
- uname -m 查看cpu架构,cudnn有不同架构的版本 x86_64 PPC SBSA
- tar -xvf解压缩后用以下命令安装并赋予所有用户读取权限
1
2
3sudo cp path_to_cudnn/include/cudnn* /usr/local/cuda/include
sudo cp path_to_cudnn/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn* /usr/local/cuda/lib64/libcudnn*- Cudnn和Cuda 安装完需在/etc/profile配置环境变量PATH和LD_LIBRARY_PATH
1
2
3export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda- 可将文件夹 /usr/local/cuda-11.2 与 /usr/local/cuda 软连接起来
1
ln -s /usr/local/cuda-11.2 /usr/local/cuda
- 用下面的命令查看cudnn版本,新版本查看cuDNN版本的命令为
1
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 # -A 选项用来指定匹配成功的行之后显示2行内容
结果
- 用默认config.yml训练太慢了大约需要1周时间,中途停掉了
- 用改进后config.yml训练。8小时左右训练完成,但是loss很大
- 结合往年此赛道总结文章放弃训练提供的mobilernn baseline 思考其它基于cnn的模型
- 从NTIRE 2022 efficient super-resolution challenge选取baseline运用剪枝蒸馏等改进到移动端
- 选取2022 NTIRE ESR冠军方案RLFN(Byte Dance)作为baseline,先将其模型转换为 tensorflow 版本在 REDS 数据集上直接进行VSR的测试 -> 中间软件依赖兼容性问题放弃RLFN torch->onnx->tensorflow路线
- 直接用tensorflow 重构 RLFN -> train完精度不够’psnr’: 25.651411, ‘ssim’: 0.6954131,需要调试改进
- 先train 2022官方仓库 MRRN baseline
本周计划
- workshop 改进
- Pruning via NNI
- Quantization via NNI
- Hyper Parameter Optimization via NNI
- 基金研究基础改小错误
- 考试复习
进度汇报 (2023.2.20-2023.2.26)
- workshop (MAI 2023 Video Super Resolution)
- RLFN精度提升 ‘psnr’: 25.57 -> 25.91, ‘ssim’: 0.69 -> 0.71; 重构的baseline结构可能存在问题,需要与原作保持一致,恢复精度
- 尝试基于RNN的方案 SWRN, ‘psnr’: 28.19, ‘ssim’: 0.8093;
- 3D卷积用于视频超分调研,后期可以考虑3D卷积重参数化加速推理
本周计划(2023.2.20-2023.2.26)
- workshop
- 恢复baseline模型tensorflow版本的PSNR
- 有余力 剪枝加速推理
- 考试复习
进度汇报 (2023.2.27-2023.3.5)
- workshop (MAI 2023 Video Super Resolution)
- 目前PSNR、SSIM比较满意的是VapSR_2,但是推理时间太长,需要优化
Model Description Dataset Val PSNR Val SSIM Params Runtime on oneplus7T [ms] SWRN_0 Origin REDS 27.931335 0.7803562 43,472 25.6 SWRN_1 recon_trunk block num=2 REDS 27.820051 0.77666414 36,512 26.9 ELSR_0(vsr 22 winner) Origin REDS 26.716854 0.73988235 3,468 19.3 VapSR_0 Origin REDS 28.103758 0.7864979 154,252 5191.0 VapSR_1 Replace feature extraction conv and VAB’s 2 con1X1 with blueprint conv REDS 28.02941 0.7845887 155,916 5798.0 VapSR_2 Replace feature extraction conv with blueprint conv and reduce Attention’s kernel size=3X3 REDS 28.021387 0.7831156 131,276 2694.0
AI benchmark setting for Runtime test:
- Input Values range(min,max): 0,255
- Inference Mode: FP16
- Acceleration: TFLite GPU Delegate
本周计划(2023.2.27-2023.3.5)
- workshop
- 利用tensorflow model optimization toolkit(TFMOT)进行模型压缩,看效果
- 寻找新idea
- 两门考试复习
进度汇报 (2023.3.6-2023.3.12)
- workshop (MAI 2023 Video Super Resolution)
- tensorflow model optimization toolkit(TFMOT) Pruning: tensorflow中对于子类化的模型(Subclassed Model)剪枝支持不好,代码有些问题,目前只对模型头部特征提取的蓝图卷积部分应用到了,对于中间参数量最大的部分没有应用成功,推理时间降低很少。
Model Description Dataset Val PSNR Val SSIM Params Runtime on oneplus7T [ms] VapSR_2 Replace feature extraction conv with blueprint conv and reduce Attention’s kernel size=3X3 REDS 28.021387 0.7831156 131,276 2694.0 VapSR_3 Pruning REDS 28.021387 0.7831156 131,276 2673.0
本周计划(2023.3.6-2023.3.12)
- workshop
- 将模型重构为函数式模型(Functional Model)再进行剪枝
- 模型量化部署
- 审稿
- 组会准备
进度汇报 (2023.3.13-2023.3.19)
- workshop (MAI 2023 Video Super Resolution)
- tensorflow model optimization toolkit(TFMOT) Pruning, Weight Clustering:成功对模型的全部卷积层应用了50%的剪枝和总体10个权重聚类中心的聚类,参数量较之前只对特征提取部分应用剪枝下降很多
Model Description Dataset Val PSNR Val SSIM Params Runtime on oneplus7T [ms] VapSR_3 Pruning feature extraction part REDS 28.021387 0.7831156 131,276 - VapSR_4 apply pruning, weights clustering to conv kernels REDS 27.3111 0.7376 32,054 -
本周计划(2023.3.13-2023.3.19)
- workshop
- 模型8bit量化实现
- 寻找降低runtime的新方法
进度汇报 (2023.3.20-2023.3.26)
- workshop (MAI 2023 Video Super Resolution)
- tensorflow model optimization toolkit(TFMOT) Pruning, Weight Clustering -> INT8 Quantization Aware Training (QAT) -> tflite
- 问题1: QAT掉点严重 {‘psnr’: 27.666351, ‘ssim’: 0.77187574} -> {‘psnr’: 27.008348, ‘ssim’: 0.7406609}
- 问题2: 转换为tflite模型过程没问题,手机上用AI Benchmark测试runtime一直报输入type/shape mismatch, 定位不到bug在哪里,怀疑是软件不能自定义输入的dtype导致的
- 寻求AI Benchmark论坛的帮助
- 考虑借鉴tensorflow在andriod上的超分案例,测试转换过来的tflite模型
- tensorflow model optimization toolkit(TFMOT) Pruning, Weight Clustering -> INT8 Quantization Aware Training (QAT) -> tflite
- work
- 参考CVPR2023”Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks”移植了partial convolution (PConv)模块
本周计划(2023.3.20-2023.3.26)
- workshop
- 解决以上问题
- work
- 提升在REDS数据集上的PSNR
进度汇报 (2023.3.27-2023.4.2)
- workshop (MAI 2023 Video Super Resolution)
- 解决了在手机上对tflite模型推理只能使用CPU无法应用TFLite GPU Delegate 和 NNAPI加速的问题
- 最新结果
Model Description Dataset Val PSNR Val SSIM Params Runtime on oneplus7T [ms] FLOPs [G] SWAT_3 Sliding Window, VAB Attention, Partial Conv, Channel Shuffle(mix_ratio=1), replace fc with 1*1 conv, replace pixel normalization with layer normalization REDS 27.761642 0.7748446 25,664 27.8 (FP16_TFLite GPU Delegate) 2.949
- work
- 移动端视频超分的模型基本确定,并同步进行了部分对比实验,后续需要对剪枝/权重聚类/量化部分进行微调
- 文献搜集,了解移动端视频超分的现状和最新进展
本周计划(2023.3.27-2023.4.2)
- workshop
- 对训练好的模型的量化策略进行调整,看能否进一步降低推理时间
- 尝试新的训练损失函数/训练策略,看能否进一步提升PSNR SSIM
- work
- 整理思路,论文撰写
进度汇报 (2023.4.3-2023.4.9)
- workshop (MAI 2023 Video Super Resolution)
- 在用L1 charbonnier损失进行预训练后,继续使用L2损失训练 -> PSNR:27.76 -> 27.81 上升
- 改进注意力模块:1.增大感受野 2.部分卷积用分组卷积替代 -> Params: 25,664 -> 24,160 下降 FLOPs: 2.949 -> 2.776 下降,但是runtime反而上涨了 27.8 -> 30.0 tflite对分组卷积的支持不好
- 目前最好结果
Model Description Dataset Val PSNR Val SSIM Params Runtime on oneplus7T [ms] FLOPs [G] SWAT_5 Sliding Window, VAB Attention, Partial Conv, Channel Shuffle(mix_ratio=1), replace fc with 1*1 conv, replace pixel normalization with layer normalization, enlarge train step numbers to 250,000 REDS 27.811176 0.7763541 25,664 27.6 (FP16_TFLite GPU Delegate) 2.949
- work
- 搜集在REDS数据集上完全相同实验设置的paper
- 剪枝/权重聚类的代码之前在基于单帧的单输入单输出模型上跑通,现模型多输入多输出,进行调整后现已跑通
本周计划(2023.4.3-2023.4.9)
- work
- 汇总完全相同实验设置的paper的结果
- 完成模型量化部分
- 撰写论文
进度汇报 (2023.4.17-2023.4.23)
- video super-resolution work
- Channel/Spatial/Pixel Attention RNN调研
- Dynamic pruning/Sparsity调研
- Dynamic Channel Pruning: Feature Boosting and Suppression (ICLR 2019)
- method: subsample feature map to scalar -> channel saliency predictor (fully connect) -> multiple winners take all channel select (Top-k select)
- summary: MAC saving, Memory Usage saving but cann’t contribute to inference latency saving. Fail to achieve real-world acceleration because their hardware-incompatible channel sparsity results in repeatedly indexing and copying selected filters to a new contiguous memory for multiplication.
- Dynamic Slimmable Network (CVPR 2021)
- method: In-place distillation with In-place Ensemble Bootstrapping (IEB) scheme to train Dynamic Supernet -> sandwich gate sparsification (SGS) to train Dynamic Slimming Gate
- summary: dynamic slice-able conv achieved by double-headed dynamic gate which can achieve practical acceleration for filters remain contiguous and static during dynamic weight selection.
- Dynamic Channel Pruning: Feature Boosting and Suppression (ICLR 2019)
- Information multi-distillation Block (IMDB) 超分实现,推理延迟降低到20ms
Model Description Dataset Val PSNR Val SSIM Params Runtime on oneplus7T [ms] FLOPs [G] SORT_0 Sliding Window, IMDB REDS 27.738451 0.77409536 17,356 20.6 (FP16_TFLite GPU Delegate) 2.084
本周计划(2023.4.17-2023.4.23)
- video super-resolution work
- Dynamic routing 尝试改造现有模型(一周时间出效果,PSNR⬆ -> 28.00, Runtime⬇ -> 20ms)
- 审稿
进度汇报 (2023.5.8-2023.5.14)
- video super-resolution work
- video frame selection 调研
- SWAT SORT hyperparameter fine tuning
- Dynamic routing was deprecated
本周计划(2023.5.8-2023.5.14)
- video super-resolution work
- 写论文,调模型
进度汇报 (2023.5.15-2023.5.21)
- video super-resolution work
- 论文introduction撰写了一部分
- 模型加入Non Activation Block 和 前一帧HR预测做对齐辅助(former predicted HR frame acting as auxiliary aligned frame)
本周计划(2023.5.15-2023.5.21)
- video super-resolution work
- 模型改进:Information Multi Distillation Block(IMDB) modify -> high psnr contribution channels aggregation + partial conv
- 模型改进:light weight feature alignment 轻量级特征对齐
- 论文撰写:Introduction + Related Work
进度汇报 (2023.5.22-2023.5.28)
video super-resolution work
论文撰写
模型微调:
- Activation Free Block 利用乘法产生代替激活函数产生非线性 -> PSNR ↓, SSIM ↓
- 利用注意力机制对与主网络超分输出做残差连接的bilinear上采样进行对齐操作, 对齐的目标是前一帧HR预测帧(former predicted HR frame acting as auxiliary align frame) -> PSNR ↑, SSIM ↑
Benchmark
Rank Model Source Dataset Test PSNR Test SSIM Params 1 Diggers Real-Time Video Super-Resolution based on Bidirectional RNNs(2021 SOTA) REDS(train_videos: 240, test_videos: 30) 27.98 - 39,640 2 VSR_12 Ours REDS(train_videos: 240, test_videos: 30) 27.981062 0.7824855 57,696 3 SORT_2 Ours REDS(train_videos: 240, test_videos: 30) 27.93981 0.7808094 45,264 4 SWRN Sliding Window Recurrent Network for Efficient Video Super-Resolution (2022 SOTA) REDS(train_videos: 240, test_videos: 30) 27.92 0.77 43,472 5 MVSR_0 Ours REDS(train_videos: 240, test_videos: 30) 27.915539 0.7799377 35,777 6 SWAT_3_5 Ours REDS(train_videos: 240, test_videos: 30) 27.840628 0.7774375 37,312 7 EESRNet EESRNet: A Network for Energy Efficient Super-Resolution(2022) REDS(train_videos: 240, test_videos: 30) 27.84 - 62,550 8 LiDeR LiDeR: Lightweight Dense Residual Network for Video Super-Resolution on Mobile Devices (2022) REDS(train_videos: 240, test_videos: 30) 27.51 0.76 - 9 EVSRNet EVSRNet:Efficient Video Super-Resolution with Neural Architecture Search(2021) REDS(train_videos: 240, test_videos: 30) 27.42 - - 10 RCBSR RCBSR: Re-parameterization Convolution Block for Super-Resolution(2022) REDS(train_videos: 240, test_videos: 30) 27.28 0.775 -
pose/gesture recognition deploy
- 了解trt_pose类似项目的部署
本周计划(2023.5.22-2023.5.28)
- video super-resolution work
- 论文撰写
- 模型微调:参考An Implicit Alignment for Video Super-Resolution(arxiv 2023.04), 尝试对帧对齐模块的注意力机制加入位置编码
- pose/gesture recognition deploy
- 调研摄像头视角跟随目标的相关项目,尝试部署
进度汇报 (2023.5.29-2023.6.04)
- video super-resolution work
- 论文撰写
- 模型微调:
- light-weight attention based frame alignment(基于attention的轻量帧对齐): PSNR ↑ 0.003, SSIM ↑ 0.006, Runtime ↑ 9 ms
- pose/gesture recognition deploy
- 调研摄像头视角跟随目标的相关项目
本周计划(2023.5.29-2023.6.04)
- video super-resolution work
- 论文撰写
- pose/gesture recognition deploy
- 尝试部署视角跟随目标
进度汇报 (2023.6.05-2023.6.11)
- video super-resolution work
- 论文撰写
- 消融实验
本周计划(2023.6.05-2023.6.11)
- video super-resolution work
- 论文撰写
- 消融实验
进度汇报 (2023.6.12-2023.7.01)
- video super-resolution work
- 论文撰写、修改、提交
进度汇报 (2023.7.03-2023.7.16)
- video super-resolution on mobile
- 项目代码整理,上传github
- Jetson Nano 部署 ZeroDCE,远远达不到实时性要求,处理单张512×512图片暗光增强耗时 > 2 min。具体结果如下:

- NeurIPS 审稿
- 补充PPT: 模型压缩部署部分
本周计划(2023.7.03-2023.7.16)
- 调研了解最新量化进展,寻找下个工作方向
- 8-bit 浮点数量化项目(FP8 quantization)高通已开源,测试了解下有无follow的空间
进度汇报 (2023.7.17-2023.7.23)
- Jetson Nano 部署暗光增强 ZeroDCE++,处理单张512×512图片耗时约10ms,但有波动(最高4931.46 ms/张),基本满足实时性要求。
今后计划(2023.7.17-2023.7.23)
- 休假(威海 潍坊 邯郸)
- ChinaMM云南行(昆明 丽江 大理)
进度汇报 (2023.8.07-2023.8.13)
- Jetson Nano 部署 Face Tracking,结合之前的Pose Estimation 达不到实时30 frame/s的要求
- PRCV审稿
- FP8 Quantization 调研
- FP8 Quantization: The Power of the Exponent (Qualcomm_NeurIPS 2022)
- FP8更适应离群值多的场景
- PTQ时精度优于INT8,QAT时精度比INT8略差
- FP8 FORMATS FOR DEEP LEARNING (NVIDIA/Arm/Intel_ArXiv 2022.09) -> 训练推理统一数据格式FP8
- FP8 可以加速训练和减少训练所需的资源,同时方便部署且可以保证训练出的精度
- INT8 量化模型通常需要进行校准或微调,训练与推理数据类型不一致不便于部署,且通常精度会下降
- FP8 versus INT8 for efficient deep learning inference (Qualcomm_ArXiv 2023.06) -> FP8 目前在性能和精度上不能取代INT8推理,目前INT4-INT8-INT16是边缘端推理的最优解
- PTQ时在离群值显著的情况下,FP8相较INT8有精度优势; 通常这种情况可以通过W8A16混合精度以及QAT来解决
- FP8推理硬件开销大, FP8 MAC 单元效率比 INT8 低50%至180%
- 为了更高效,已经有一些INT4量化的工具, 但到目前为止并没有FP4相关的工作
- Integer or Floating Point? New Outlooks for Low-Bit Quantization on Large Language Models (MSRA_ArXiv 2023.05) -> Layer wise混合精度LLM
- FP8 Quantization: The Power of the Exponent (Qualcomm_NeurIPS 2022)
本周计划(2023.8.07-2023.8.13)
- 开题报告 -> success
- FANI andriod app -> false
- 实习简历 -> success
- 天空之眼广域持续监视系统 PPT -> success
- 尝试魔改 Qualcomm_FP8 + SQuant -> pending
- 尝试集成Face Tracking 和 Pose Estimation实现相机角度跟随人体并进行姿态估计 -> pending
- 大湾区算法比赛: 视频插帧 + 单目深度估计 -> pending
- ACwing 算法课 -> pending
- CSAPP 课程+实验 -> pending
- Dipoorlet MQBench 使用 -> pending
进度汇报 (2023.8.14-2023.8.27)
- 机载广域持续监视方案调研,PPT制作
- 开题报告
- jetson nano 项目:Face Tracking + Pose Estimation
- 原有基于nvidia官方trt_pose项目的姿态估计推理速度慢,现基于Shanghai AI Lab 2023最新的轻量姿态估计项目RTMPose进行部署
- 调研了解商汤MMdeploy 和 MMPose项目,编译安装相关依赖并在jetson nano上搭建了部署环境
- 完成了驱动舵机调整摄像头位置的C++代码,后续通过ctypes库实现在py文件中调用此部分调整摄像头姿态的C++代码
本周计划(2023.8.14-2023.8.27)
- 完成jetson nano 项目:Face Tracking + Pose Estimation
- 调研了解TensorRT/TNN/MNN/NCNN等推理框架,重点尝试运用TensorRT加速RTMPose的推理
- 参加大湾区算法比赛: 视频插帧 + 单目深度估计
- 实习简历投递
进度汇报(2023.8.28-2023.9.10)
- 完成jetson nano 项目:Face Tracking + Pose Estimation -> 70%
- 调研了解TensorRT/TNN/MNN/NCNN等推理框架,重点尝试运用TensorRT加速RTMPose的推理 -> 0%
- 参加大湾区算法比赛: 视频插帧 + 单目深度估计 -> 0%
本周计划(2023.8.28-2023.9.10)
- 实习简历投递(30-40份)
- 调研ChatGPT的各种应用
- 参加大湾区算法比赛: 视频插帧 + 单目深度估计,baseline搭建
- 撰写FANI专利,整理已有专利状态
进度汇报(2023.9.11-2023.9.17)
- ICDM投稿FANI专利撰写
- 组内已有专利状态整理
- 大湾区算法比赛: 视频插帧 -> 0%, 单目深度估计 -> 10%
本周计划(2023.9.11-2023.9.17)
- 实习简历投递(30-40份)
- 调研ChatGPT的各种应用
- 大湾区算法比赛: 视频插帧 -> 50% (baseline搭建); 单目深度估计 -> 50% (baseline搭建)
进度汇报(2023.9.18-2023.10.08)
- 大湾区单目深度估计比赛:
- 数据的理解存在偏差,涉及共计6个不同数据集的ground truth, label的标签意义未能理解清(如单位mm还是m, skymask, validmask等等)
- 选择部分结构清晰(仅包含imgs, gts)的数据集送入目前的SOTA模型 ZoeDepth 对其 metric bins module 进行微调,结果训练后的精度比原作只在 NYU Depth V2 数据集上进行微调的效果还差
- 目前的提交的结果:A榜 42/60, B榜决定最终排名尚未出结果
- 视频超分量化
- 国奖申请答辩/助教申请/调研准备组会PPT
- 实习申请(累计投递40+)
本周计划(2023.9.18-2023.10.08)
- 实习投递+笔试面试
- 推进SOTA视频超分模型量化 -> 目标可部署在 OnePlus 7T 上
进度汇报(2023.10.09-2023.10.15)
- Video Super-Resolution Quantization
- 基于目前在Vid4、Vimeo90k、REDS数据集上SOTA模型 BasicVSR++ 进行channel-wise distribution-aware 量化pipeline的搭建(目前尚没有视频超分量化超分方向的baseline,代码难度较大)
- 尝试引入在其它视频感知任务(Human Pose Estimation,Semantic Segmentation,Video Object Segmentation)有效上的方法,参考 ICCV2023 ResQ 将网络中相邻帧的激活之间的残差用于量化,更小的方差有利于缩小量化误差
- 附图:

- 附图:
- ICDM注册提交
本周计划(2023.10.09-2023.10.15)
- BasicVSR++/VRT/RVRT + ResQ/CADyQ/DAQ -> VSR quantization pipeline construction
进度汇报(2023.10.16-2023.10.22)
- Video Super-Resolution Quantization
- 参考 GPTQ 完成了 BasicVSR++ (未涉及ViT)量化的基础部分
- 阅读论文,了解其它几个SOTA模型(ViTs)是否有需要单独改进的模块:
- CVPR2022: TTVSR
- NIPS2022: PSRT, RVRT
- CVPR2023: IART
- SelecQ latex 排版调整,期刊注册提交
- 学校HPC实例到期, 实验室浪潮集群上 Docker 镜像搭建
本周计划(2023.10.16-2023.10.22)
- 结合 ResQ 采用 PaddlePaddleSlim 改进视频超分 BasicVSR++ 量化模块
- 深度神经网络课程PPT制作
- 专利修改
- 一番摆事实讲道理: 老师同意 sensetime 实习3个月, 开心到爆炸 :)
进度汇报(2023.10.23-2023.10.29)
- Video Super-Resolution Quantization
- 试用百度 paddleslim 分别用静态动态量化(PTQ)对 BasicVSR++ 进行量化
- 深度神经网络课程PPT制作
- 拔智齿~ -> 耽误了一些 VSR Quantization 工作的进度
本周计划(2023.10.23-2023.10.29)
- play with paddleslim and basicvsr++
进度汇报 (2023.10.30-2023.11.05)
- Video Super-Resolution Quantization
- BasicVSR++ PTQ: 量化过程有bug正在解决
- BasicVSR++ torch模型转onnx模型并检查
- 激活校准,产出量化参数: scale zero_point
- 权重调整,提升量化精度
- 量化误差分析,定位量化问题
- note: 目前 BasicVSR++ 的 PTQ 基于开源工具 Dipoorlet 进行,优点代码简洁明了易修改,相较百度框架 paddleslim 便于快捷验证idea; VSR 量化方法成熟后可进一步迁移至 paddleslim
- BasicVSR++ PTQ: 量化过程有bug正在解决
- 读文献找idea提升PTQ精度
本周计划(2023.10.30-2023.11.05)
- 解决 dipoorlet 量化 BasicVSR++ 遇到的bug
进度汇报 (23.11.06-23.11.12)
Video Super-Resolution Quantization
- BasicVSR++ 采用
DipoorletPTQ: 量化过程有不支持动态输入的问题, 即不支持视频随机长度(time_step)的问题, github提了issue 暂未有回复 - BasicVSR++ 采用
MQBenchPTQ: BasicVSR++ 模型 forward 过程存在动态控制流, 即控制流的判断条件含有运算变量(Input/Activation)参与, 而MQBench调用torch.fx的symbolic_trace完成 forward 过程计算图捕捉, 其本身的限制不支持动态控制流。正尝试:- 把模型的动态控制流用静态的代替
- torch 2.0 新发布的
torch.compile也即 (TorchDynamo), 了解后尝试来解决模型 forward 中广泛存在的动态控制流
- BasicVSR++ 采用
RustDesk 中继服务搭建, 降低远程桌面的延迟
本周计划 (23.11.06-23.11.12)
- 推进 VSR 模型的常规量化(Naive PTQ)的工作
- 实习相关工作
进度汇报 (23.11.13-23.11.19)
- Video Super-Resolution Quantization
- BasicVSR++ 采用
DipoorletPTQ: 量化过程有不支持动态输入的问题, 即不支持视频随机长度(time_step)的问题, github官方答复暂不支持
- BasicVSR++ 采用
- Sensetime Internship
- 与mentor沟通了解了实际业务量化部署过程中大体流程以及其重难点(torch模型 -> onnx计算图中间表示 -> 目标平台SDK),尚未接触实际项目
- 调研了解LLM Quantization, 之后会逐步扩展形成对 LLM -> Transformer -> CNN整个链条的量化部署的覆盖
本周计划 (23.11.13-23.11.19)
- 完成 LLM Quantization 的初步调研(会将文档共享给大家), 和mentor探讨下一步该从哪种方法开始上手复现
- 准备 ICDM presentation -> false
进度汇报 (23.11.20-23.11.26)
- Sensetime Internship
- LLM Quantization 累计调研10篇典型文章,包含QAT, weight only quantization, weight and activation quantization。给mentor做了初步的讨论汇报
本周计划 (23.11.20-23.11.26)
- Video Super-Resolution Quantization
- 准备 ICDM presentation
- Sensetime Internship
- LLM Quantization 环境搭建, 在llama 7B 上跑了一下GPTQ~
- 了解 Intel neural-compressor QAT 量化
- 了解 Pytorch FX QAT 量化
- 了解 mmdeploy 量化
- 推导验证 RepVGG QAT 多支路 conv 合并后图节点量化前浮点数范围 (Real Range) 能否无损得到
- 多模态模型 codino -> onnx -> onnx runtime(ort) register grid_sampler 注册未支持的算子(参考MMCV MMDeploy),然后在A6000上部署推理
- Auto Drive
- 两个导向一种不惜计算代价,使用各种方法提高特定数据集/特定环境下的指标 (刷榜),一种是轻量化资源受限情况下优化指标
- 轻量化路线具体需要针对不同的硬件平台(如 jetson orin)来进行相应的轻量化,如:
- 设计轻量的网络结构,设计相应的算子op
- 考虑部署的inference latency,有一些比较有实际意义的探索空间,原因在于纸面的模型 FLOPs/MACs 和实际 inference latency 之间有 gap
- 实际车辆上运行的模型受限于算力,算力小用CNN,算力大用Transformer, 大公司在往大一统方向做 (如CVPR 2023 best paper: UniAD, 但目前还没有部署到实际的平台上去,目前带我的mentor在进行部署的工作:很难的一点是如何正确的把模型转换为onnx中间表示然后去进行量化,这一步还没完成)
进度汇报 (23.11.27-23.12.10)
- School Task
- ICDM presentation PPT 制作/参会
- VSR 视频超分专利修改
- Face Super-resolution/Enhancement 调研
- Sensetime Internship
- LLM Quantization 环境搭建, 在 llama 7B 上跑了一下 GPTQ
- 了解 Intel neural-compressor / Pytorch FX / mmdeploy PTQ 量化,大致如下 以 torch fx 为例 (后续会结合代码形成较详细的量化pipeline文档)
- Prepare fx: fuse模型,也就是通常的优化,比如conv+bn啥的,利用fx对模型进行transform
- Insert observer: Input/Output/Weight 均插入observer
- Calibration: 输入数据进行校准,收集 weights 和 activation 的 max 和 min 等统计信息
- Convert fx: 在 observer 位置用相应的 quantize/dequantize module代替,并合并到原始的layer中
附图:
- 推导验证 RepVGG 重参数轻量化方法与 QAT 联合使用的 weight range 能否获得数学上的等价变换问题: 具体来说,多支路 conv 合并前运用 QAT 提升精度, 在多支路 conv 合并后根据 QAT 训练得到的多分支 conv weight 的浮点数范围 (Real Range) 能否等价得到合并后的 conv weight 的浮点数范围,此浮点数范围与量化/反量化过程的 scale factor 和 zero point 基本等价可互推 -> 结论无法无损等价
- 感知模型 object detection: codino -> onnx -> onnx runtime(ort) 推理部署: register grid_sampler op 注册未支持的算子(参考MMCV MMDeploy),然后在 CPU 上实现模型推理, 后续搭建好模型前后处理的部分后会在GPU上进行推理效果验证
后续计划 (23.11.27-23.12.10)
- 了解并测试多个开源 LLM PTQ 方法,如 AWQ SmoothQuant ZeroQuantV2 等
- codino 模型前后处理部分搭建, 在 GPU 上进行 onnx runtime 推理部署
- 调研了解能否用 onnx runtime 进行 QAT, 以减轻 QAT 与 部署的 op 输入/输出/权重参数 范围对齐的压力
进度汇报 (23.11.11-23.12.24)
School Task
- 深度学习与深度神经网络原理课程报告汇总提交
Sensetime Internship
obeject detection model deploy: 基于openmmlab开源框架mmcv mmdetection,花费较长时间处理代码相关细节,具体如下
- 基于继承机制的模型config使用,模型 backbone 为 InternImage
- 模型前后处理剥离,前处理主要是resize操作,后处理模型输出为shape为[n, 5]的np.ndarray如何正确转化为 bbox 与 class 并可视化出来
- torch 模型转 onnx 时未支持算子 grid_sampler 处理
- 相关repository:
quantization frame work 调研,包括 Torch FX Quantization, Intel Neural Compressor, Tensor RT Quantization等,具体见PDF总结
调研并尝试基于 onnx 做 QAT(背景: torch 模型转为 onnx 时会出现模型结构名变化的问题,导致 QAT 得到的模型 权重以及量化参数 i.e. scale factor, zero point 无法与导出的 onnx 模型匹配)
详细了解 LLM metric Perpelexity (PPL), 以及关联的 torch cross entropy 的计算细节
opencloud 集群的使用, 了解 slurm 命令及参数等
后续计划 (23.11.11-23.12.24)
- 测试以下 LLM PTQ 方法:AWQ, SmoothQuant, Outlier Suppression+, LLM.int8()
- 推进 onnx QAT
- video super-resolution:基于 torch fx 对 basicvsr++ 进行 post training dynamic quantization (activation 的 scale factor 在推理时确定而非预先根据统计量计算出来) -> 搞明白 Torch FX OPs 插入 / 融合 / 操作 的位置与做法
- 论文写作 课程作业
进度汇报 (23.12.25-24.01.07)
School Task
- 论文写作 课程作业
- 参加了上海人工智能实验室组织的书生·浦语大模型实战营,目前已完成前两节,部署了一下类似chatgpt的问答demo,简单笔记如下~
- 阅读多模态论文:CogVLM(https://github.com/THUDM/CogVLM)
- 附图:

- 整体思路:先将 image 输入通过 MLP 映射到与 text embedding 相同的空间中(上图左侧),然后在预训练好的LLM上嫁接用与深度对齐两个模态的 Attention 和 MLP 部分,只训练这部分即可(上图右侧)
- 附图:
Sensetime Internship
- onnx QAT 项目停止:详细测试之后发现,torch.onnx.export() 模型导出后 onnx 模型结构名称与原 torch 模型的名称不匹配问题已在新版本解决。原版本为 torch1.8.0 现版本 torch1.13 及 torch2.x 都已不存在该问题
- 搞清了 Torch FX OPs 插入 / 融合 / 更改 的位置与做法, 整个基于 torch fx graph 去做量化的流程已走通
- 尝试做集成主流 LLM 量化算法(包括 AWQ, SmoothQuant, GPTQ等)的库,并可扩展新的量化算法,对比学习了 Intel Neural-Compressor / LMDeploy / OpenPPL PPQ 等,目前还需要与 mentor 进一步探讨确定如何推进
- 其它学习的部分:量化 / MLLM 多模态大模型 具体见 PPT
后续计划 (23.12.25-24.01.07)
- 跟进 video super-resolution 量化推进
- LLM / MLLM 量化算法部署测试与集成推进
- 完成 书生·浦语大模型实战营内容
进度汇报 (24.01.07-24.01.21)
- 书生·浦语大模型实战营内容完成(包括基于 InternLM 和 LangChain 搭建知识库, XTuner 大模型单卡低成本微调, LMDeploy 大模型量化部署等)
- VSR模型量化,先基于 mmdetection 的检测模型进行流程的验证,卡在捕获计算图这一步,解决掉这一步才可以游刃有余的进行量化过程中插入 op 的操作。遇到以下两类细节上的问题,正在解决
- forward 过程存在输入动态控制流,torch.fx 不支持 trace 捕获此类计算图
- forward 存在对 inputs 调用len() method 而捕获过程会把 inputs 转换为抽象的 proxy 作为输入,proxy object 不支持调用 len() method
- LLM / MLLM 量化,已经走通了常见模型 llama2-7b 的量化算法 AWQ SmoothQuant
后续计划 (24.01.07-24.01.21)
- 走通捕获计算图这一步
- 阅读 VSR 近期论文,了解最新进展
- 其它交代的事项


