Week Report

进度汇报(2022.8.31-2022.9.4)

  1. 读zeroq量化代码并在实验室集群上调试,跑通了对resnet18的压缩
  2. 读赵随意师兄的BaselineIR的部分代码,并放在集群上进行了训练,
    解决了数据集路径错误、训练中途闪退问题。

本周计划(2022.8.31-2022.9.4)

  1. 阅读最新Quantization综述以及部分zero-shot quantization最新论文,整理思路。
  2. 解决zeroq量化代码中看不懂的部分

进度汇报(2022.9.5-2022.9.11)

  1. 对照论文理解了zeroq代码,并对distill data部分的total_loss进行修改,实验证明在分类任务上原total_loss的部分成分对量化后的精度影响极小,top-1 accuracy 波动在0.01%左右。
  2. 阅读投稿JMLC一篇文章的手稿和相关论文,对疑问点进行评论。
  3. 阅读2021模型量化最新综述。

本周计划(2022.9.5-2022.9.11)

  1. floating point quantization: 阅读论文FP8 Quantization: The Power of the Exponent(2022.8)及相关论文,尝试代码实现。
  2. fixed point quantization: 阅读论文Post training 4-bit quantization of convolutional networks for rapid-deployment(2019)

进度汇报(2022.9.12-2022.9.18)

  1. 阅读论文FP8 Quantization: The Power of the Exponent(2022.8),尝试代码实现
  2. 阅读QPyTorch: A Low-Precision Arithmetic Simulation Framework(2019.10),并阅读了框架部分源码
  3. 中翻英 teaching statement

本周计划(2022.9.12-2022.9.18)

  1. floating point quantization: 继续FP8 coding相关部分学习
  2. fixed point quantization: 阅读论文Post training 4-bit quantization of convolutional networks for rapid-deployment(2019)

进度汇报(2022.9.19-2022.9.25)

  1. floating point quantization: FP8 coding -> 进度缓慢,暂时放下
  2. fixed point quantization:
    • 阅读论文Post training 4-bit quantization of convolutional networks for rapid-deployment(2019),理解ACIQ
    • 阅读论文SQUANT(2022)

本周计划(2022.9.19-2022.9.25)

  1. SQUANT 源码理解
  2. 审稿

进度汇报 (2022.9.26-2022.10.9)

  1. SQUANT 源码理解
  2. 审稿

本周计划(2022.9.26-2022.10.9)

  1. 重温zeroq,和21年最新综述
  2. 重构SQuant代码,作为以后工作的baseline
  3. 审稿

进度汇报 (2022.10.10-2022.10.16)

  1. 理清了SQuant代码中是如何控制tensor shape的转变来进行kernel-wise channel-wise不同粒度的量化,对代码中的杂乱、无效部分做了重构
  2. 审稿:EC0065699_O_基于改进YOLOX的公路路面裂缝检测网络

本周计划(2022.10.10-2022.10.16)

  1. 重温zeroq和21年最新综述
  2. QAT量化感知训练入门,在MNIST数据集上跑通一个demo

进度汇报 (2022.10.17-2022.10.23)

  1. 回顾ZeroQ和21年最新综述,组会准备
  2. 特殊环境去雨项目:填写开题表格,做PPT
  3. QAT量化感知训练入门,在MNIST数据集上的demo尚未跑通

本周计划(2022.10.17-2022.10.23)

  1. 实验:将ZeroQ蒸馏出的数据用在SQuant中间层激励的剪切范围确定上,看效果
  2. 跑通MNIST数据集上的QAT量化demo
  3. 完成学科前沿作业;准备数理统计考试

进度汇报 (2022.10.24-2022.10.30)

  1. 实验:将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])
  2. 在MNIST数据集上跑通了的量化感知训练(QAT)的demo

  3. 阅读论文 Data-Free Quantization Through Weight Equalization and Bias Correction (2019)

本周计划(2022.10.24-2022.10.30)

  1. fix上周实验出现的中间层activation异常偏大的bug
  2. 实验评估:在原模型上统计clip range与叠加量化clip error和round error之后统计clip range, 二者对量化结果精度的影响
  3. 处理作业,准备考试

进度汇报 (2022.10.31-2022.11.06)

  1. 实验:在原模型上统计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,最终的精度出现轻微下降,符合猜测

  2. 解决了上周实验出现的中间层activation异常偏大的bug

  3. 初步改出了fp32模拟量化到fp8的代码,在resnet18上实验效果不理想

本周计划(2022.10.31-2022.11.06)

  1. 结合相关论文,改进fp8模拟量化
  2. 组会准备;考试准备

进度汇报 (2022.11.07-2022.11.13)

  1. 组会准备;处理交代的改稿工作
  2. 数理统计考试准备

本周计划(2022.11.07-2022.11.13)

  1. 矩阵理论考试准备

进度汇报 (2022.11.14-2022.11.20)

  1. 处理考试相关
  2. 整理之前解决问题的很多网页记录;学习docker

本周计划(2022.11.14-2022.11.20)

  1. 阅读浮点量化相关论文,改进FP8量化

进度汇报 (2022.11.21-2022.11.27)

  1. FP8: 对于fixed FP8 formats即在sign:exponet:mantissa固定在1:4:3或1:5:2的情况下,如果像IEEE754 FP32一样固定尾数偏移,得不到论文中展示的接近或 优于IN8的表现,采用类似INT8的缩放策略亦未奏效。
  2. 审稿

本周计划(2022.11.21-2022.11.27)

  1. 课程考试、作业处理
  2. 阅读论文:On-Device Training Under 256KB Memory

进度汇报 (2022.12.05-2022.12.11)

  1. 调研了解模型剪枝和稀疏化
  2. 尝试在手机上部署NCNN mobilenetssd(demo)

本周计划(2022.12.05-2022.12.11)

  1. 审稿
  2. 准备计算机体系结构考试

进度汇报 (2022.12.12-2022.12.18)

  1. ICASSP 审稿
  2. 了解NCNN,在手机上部署demo: mobilenetssd yolov7

本周计划(2022.12.12-2022.12.18)

  1. 读论文:PD-Quant(2022.12)
  2. 调研了解Mixed Precision Quantization相关工作

进度汇报 (2022.12.19-2022.12.26)

  1. 读论文:PD-Quant(2022.12)
  2. 调研了解Mixed Precision Quantization相关工作

本周计划(2022.12.19-2022.12.26)

  1. 将PD-Quant引入的量化损失Metric与之前工作结合,尝试复现
  2. 继续调研Mixed Precision Quantization相关

进度汇报 (2022.12.27-2023.1.1)

  1. 在量化参数scaling factor和offset选取上借鉴PD-Quant引入当前层activation量化在最终预测结果引起的差异。不仅考虑当前层activation量化前后差异,还引入当前层的activation量化在后面若干层累积后引起的差异。
  2. 改稿

后期计划(2022.12.27-2023.1.1)

继续完善量化引入全局累积差异的代码,提升性能


进度汇报 (2023.2.8-2023.2.12)

  • workshop (NTIRE 2023 Efficient Super-Resolution Challenge)
  1. 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)

  1. rfdn基础上改进模型

进度汇报 (2023.2.13-2023.2.19)

  • workshop (MAI 2023 Video Super Resolution)
    1. 先train 2022官方仓库 MRRN baseline
      • 环境配置

        1. Python 3.8.10

        2. Tensorflow 2.9.0

        3. Cuda 11.2

        4. Cudnn v8.7.0

          • 官网:https://developer.nvidia.com/cudnn
          • uname -m 查看cpu架构,cudnn有不同架构的版本 x86_64 PPC SBSA
          • tar -xvf解压缩后用以下命令安装并赋予所有用户读取权限
          1
          2
          3
          sudo 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
          3
          export 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行内容
      • 结果

        1. 用默认config.yml训练太慢了大约需要1周时间,中途停掉了
        2. 用改进后config.yml训练。8小时左右训练完成,但是loss很大
        3. 结合往年此赛道总结文章放弃训练提供的mobilernn baseline 思考其它基于cnn的模型
    2. 从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,需要调试改进

本周计划

  1. workshop 改进
    • Pruning via NNI
    • Quantization via NNI
    • Hyper Parameter Optimization via NNI
  2. 基金研究基础改小错误
  3. 考试复习

进度汇报 (2023.2.20-2023.2.26)

  • workshop (MAI 2023 Video Super Resolution)
    1. RLFN精度提升 ‘psnr’: 25.57 -> 25.91, ‘ssim’: 0.69 -> 0.71; 重构的baseline结构可能存在问题,需要与原作保持一致,恢复精度
    2. 尝试基于RNN的方案 SWRN, ‘psnr’: 28.19, ‘ssim’: 0.8093;
    3. 3D卷积用于视频超分调研,后期可以考虑3D卷积重参数化加速推理

本周计划(2023.2.20-2023.2.26)

  1. workshop
    • 恢复baseline模型tensorflow版本的PSNR
    • 有余力 剪枝加速推理
  2. 考试复习

进度汇报 (2023.2.27-2023.3.5)

  1. 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)

  1. workshop
    • 利用tensorflow model optimization toolkit(TFMOT)进行模型压缩,看效果
    • 寻找新idea
  2. 两门考试复习

进度汇报 (2023.3.6-2023.3.12)

  1. 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)

  1. workshop
    • 将模型重构为函数式模型(Functional Model)再进行剪枝
    • 模型量化部署
  2. 审稿
  3. 组会准备

进度汇报 (2023.3.13-2023.3.19)

  1. 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)

  1. workshop
    • 模型8bit量化实现
    • 寻找降低runtime的新方法

进度汇报 (2023.3.20-2023.3.26)

  1. 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模型
  2. work
    • 参考CVPR2023”Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks”移植了partial convolution (PConv)模块

本周计划(2023.3.20-2023.3.26)

  1. workshop
    • 解决以上问题
  2. work
    • 提升在REDS数据集上的PSNR

进度汇报 (2023.3.27-2023.4.2)

  1. 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

  2. work
    • 移动端视频超分的模型基本确定,并同步进行了部分对比实验,后续需要对剪枝/权重聚类/量化部分进行微调
    • 文献搜集,了解移动端视频超分的现状和最新进展

本周计划(2023.3.27-2023.4.2)

  1. workshop
    • 对训练好的模型的量化策略进行调整,看能否进一步降低推理时间
    • 尝试新的训练损失函数/训练策略,看能否进一步提升PSNR SSIM
  2. work
    • 整理思路,论文撰写

进度汇报 (2023.4.3-2023.4.9)

  1. 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

  2. work
    • 搜集在REDS数据集上完全相同实验设置的paper
    • 剪枝/权重聚类的代码之前在基于单帧的单输入单输出模型上跑通,现模型多输入多输出,进行调整后现已跑通

本周计划(2023.4.3-2023.4.9)

  1. work
    • 汇总完全相同实验设置的paper的结果
    • 完成模型量化部分
    • 撰写论文

进度汇报 (2023.4.17-2023.4.23)

  1. video super-resolution work
    • Channel/Spatial/Pixel Attention RNN调研
    • Dynamic pruning/Sparsity调研
      1. 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.
      2. 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.
    • 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)

  1. video super-resolution work
    • Dynamic routing 尝试改造现有模型(一周时间出效果,PSNR⬆ -> 28.00, Runtime⬇ -> 20ms)
  2. 审稿

进度汇报 (2023.5.8-2023.5.14)

  1. video super-resolution work
    • video frame selection 调研
    • SWAT SORT hyperparameter fine tuning
    • Dynamic routing was deprecated

本周计划(2023.5.8-2023.5.14)

  1. video super-resolution work
    • 写论文,调模型

进度汇报 (2023.5.15-2023.5.21)

  1. video super-resolution work
    • 论文introduction撰写了一部分
    • 模型加入Non Activation Block 和 前一帧HR预测做对齐辅助(former predicted HR frame acting as auxiliary aligned frame)

本周计划(2023.5.15-2023.5.21)

  1. 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)

  1. video super-resolution work

    • 论文撰写

    • 模型微调:

      1. Activation Free Block 利用乘法产生代替激活函数产生非线性 -> PSNR ↓, SSIM ↓
      2. 利用注意力机制对与主网络超分输出做残差连接的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 -
  2. pose/gesture recognition deploy

    • 了解trt_pose类似项目的部署

本周计划(2023.5.22-2023.5.28)

  1. video super-resolution work
    • 论文撰写
    • 模型微调:参考An Implicit Alignment for Video Super-Resolution(arxiv 2023.04), 尝试对帧对齐模块的注意力机制加入位置编码
  2. pose/gesture recognition deploy
    • 调研摄像头视角跟随目标的相关项目,尝试部署

进度汇报 (2023.5.29-2023.6.04)

  1. video super-resolution work
    • 论文撰写
    • 模型微调:
      1. light-weight attention based frame alignment(基于attention的轻量帧对齐): PSNR ↑ 0.003, SSIM ↑ 0.006, Runtime ↑ 9 ms
  2. pose/gesture recognition deploy
    • 调研摄像头视角跟随目标的相关项目

本周计划(2023.5.29-2023.6.04)

  1. video super-resolution work
    • 论文撰写
  2. pose/gesture recognition deploy
    • 尝试部署视角跟随目标

进度汇报 (2023.6.05-2023.6.11)

  1. video super-resolution work
    • 论文撰写
    • 消融实验

本周计划(2023.6.05-2023.6.11)

  1. video super-resolution work
    • 论文撰写
    • 消融实验

进度汇报 (2023.6.12-2023.7.01)

  1. video super-resolution work
    • 论文撰写、修改、提交

进度汇报 (2023.7.03-2023.7.16)

  1. video super-resolution on mobile
    • 项目代码整理,上传github
  2. Jetson Nano 部署 ZeroDCE,远远达不到实时性要求,处理单张512×512图片暗光增强耗时 > 2 min。具体结果如下:Elapsed Time(ms)/photo
  3. NeurIPS 审稿
  4. 补充PPT: 模型压缩部署部分

本周计划(2023.7.03-2023.7.16)

  1. 调研了解最新量化进展,寻找下个工作方向
  2. 8-bit 浮点数量化项目(FP8 quantization)高通已开源,测试了解下有无follow的空间

进度汇报 (2023.7.17-2023.7.23)

  1. Jetson Nano 部署暗光增强 ZeroDCE++,处理单张512×512图片耗时约10ms,但有波动(最高4931.46 ms/张),基本满足实时性要求。
    • Elapsed Time(ms)/photo

今后计划(2023.7.17-2023.7.23)

  1. 休假(威海 潍坊 邯郸)
  2. ChinaMM云南行(昆明 丽江 大理)

进度汇报 (2023.8.07-2023.8.13)

  1. Jetson Nano 部署 Face Tracking,结合之前的Pose Estimation 达不到实时30 frame/s的要求
    • Elapsed Time(ms)/photo
    • Elapsed Time(ms)/photo
  2. PRCV审稿
  3. FP8 Quantization 调研
    • FP8 Quantization: The Power of the Exponent (Qualcomm_NeurIPS 2022)
      1. FP8更适应离群值多的场景
      2. PTQ时精度优于INT8,QAT时精度比INT8略差
    • FP8 FORMATS FOR DEEP LEARNING (NVIDIA/Arm/Intel_ArXiv 2022.09) -> 训练推理统一数据格式FP8
      1. FP8 可以加速训练和减少训练所需的资源,同时方便部署且可以保证训练出的精度
      2. INT8 量化模型通常需要进行校准或微调,训练与推理数据类型不一致不便于部署,且通常精度会下降
    • FP8 versus INT8 for efficient deep learning inference (Qualcomm_ArXiv 2023.06) -> FP8 目前在性能和精度上不能取代INT8推理,目前INT4-INT8-INT16是边缘端推理的最优解
      1. PTQ时在离群值显著的情况下,FP8相较INT8有精度优势; 通常这种情况可以通过W8A16混合精度以及QAT来解决
      2. FP8推理硬件开销大, FP8 MAC 单元效率比 INT8 低50%至180%
      3. 为了更高效,已经有一些INT4量化的工具, 但到目前为止并没有FP4相关的工作
    • Integer or Floating Point? New Outlooks for Low-Bit Quantization on Large Language Models (MSRA_ArXiv 2023.05) -> Layer wise混合精度LLM

本周计划(2023.8.07-2023.8.13)

  1. 开题报告 -> success
  2. FANI andriod app -> false
  3. 实习简历 -> success
  4. 天空之眼广域持续监视系统 PPT -> success
  5. 尝试魔改 Qualcomm_FP8 + SQuant -> pending
  6. 尝试集成Face Tracking 和 Pose Estimation实现相机角度跟随人体并进行姿态估计 -> pending
  7. 大湾区算法比赛: 视频插帧 + 单目深度估计 -> pending
  8. ACwing 算法课 -> pending
  9. CSAPP 课程+实验 -> pending
  10. Dipoorlet MQBench 使用 -> pending

进度汇报 (2023.8.14-2023.8.27)

  1. 机载广域持续监视方案调研,PPT制作
  2. 开题报告
  3. 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)

  1. 完成jetson nano 项目:Face Tracking + Pose Estimation
  2. 调研了解TensorRT/TNN/MNN/NCNN等推理框架,重点尝试运用TensorRT加速RTMPose的推理
  3. 参加大湾区算法比赛: 视频插帧 + 单目深度估计
  4. 实习简历投递

进度汇报(2023.8.28-2023.9.10)

  1. 完成jetson nano 项目:Face Tracking + Pose Estimation -> 70%
  2. 调研了解TensorRT/TNN/MNN/NCNN等推理框架,重点尝试运用TensorRT加速RTMPose的推理 -> 0%
  3. 参加大湾区算法比赛: 视频插帧 + 单目深度估计 -> 0%

本周计划(2023.8.28-2023.9.10)

  1. 实习简历投递(30-40份)
  2. 调研ChatGPT的各种应用
  3. 参加大湾区算法比赛: 视频插帧 + 单目深度估计,baseline搭建
  4. 撰写FANI专利,整理已有专利状态

进度汇报(2023.9.11-2023.9.17)

  1. ICDM投稿FANI专利撰写
  2. 组内已有专利状态整理
  3. 大湾区算法比赛: 视频插帧 -> 0%, 单目深度估计 -> 10%

本周计划(2023.9.11-2023.9.17)

  1. 实习简历投递(30-40份)
  2. 调研ChatGPT的各种应用
  3. 大湾区算法比赛: 视频插帧 -> 50% (baseline搭建); 单目深度估计 -> 50% (baseline搭建)

进度汇报(2023.9.18-2023.10.08)

  1. 大湾区单目深度估计比赛:
    • 数据的理解存在偏差,涉及共计6个不同数据集的ground truth, label的标签意义未能理解清(如单位mm还是m, skymask, validmask等等)
    • 选择部分结构清晰(仅包含imgs, gts)的数据集送入目前的SOTA模型 ZoeDepth 对其 metric bins module 进行微调,结果训练后的精度比原作只在 NYU Depth V2 数据集上进行微调的效果还差
    • 目前的提交的结果:A榜 42/60, B榜决定最终排名尚未出结果
  2. 视频超分量化
  3. 国奖申请答辩/助教申请/调研准备组会PPT
  4. 实习申请(累计投递40+)

本周计划(2023.9.18-2023.10.08)

  1. 实习投递+笔试面试
  2. 推进SOTA视频超分模型量化 -> 目标可部署在 OnePlus 7T 上

进度汇报(2023.10.09-2023.10.15)

  1. 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 将网络中相邻帧的激活之间的残差用于量化,更小的方差有利于缩小量化误差
      • 附图:ResQ Motivation
  2. ICDM注册提交

本周计划(2023.10.09-2023.10.15)

  1. BasicVSR++/VRT/RVRT + ResQ/CADyQ/DAQ -> VSR quantization pipeline construction

进度汇报(2023.10.16-2023.10.22)

  1. Video Super-Resolution Quantization
    • 参考 GPTQ 完成了 BasicVSR++ (未涉及ViT)量化的基础部分
    • 阅读论文,了解其它几个SOTA模型(ViTs)是否有需要单独改进的模块:
      • CVPR2022: TTVSR
      • NIPS2022: PSRT, RVRT
      • CVPR2023: IART
  2. SelecQ latex 排版调整,期刊注册提交
  3. 学校HPC实例到期, 实验室浪潮集群上 Docker 镜像搭建

本周计划(2023.10.16-2023.10.22)

  1. 结合 ResQ 采用 PaddlePaddleSlim 改进视频超分 BasicVSR++ 量化模块
  2. 深度神经网络课程PPT制作
  3. 专利修改
  4. 一番摆事实讲道理: 老师同意 sensetime 实习3个月, 开心到爆炸 :)

进度汇报(2023.10.23-2023.10.29)

  1. Video Super-Resolution Quantization
    • 试用百度 paddleslim 分别用静态动态量化(PTQ)对 BasicVSR++ 进行量化
  2. 深度神经网络课程PPT制作
  3. 拔智齿~ -> 耽误了一些 VSR Quantization 工作的进度

本周计划(2023.10.23-2023.10.29)

  1. play with paddleslim and basicvsr++

进度汇报 (2023.10.30-2023.11.05)

  1. Video Super-Resolution Quantization
    • BasicVSR++ PTQ: 量化过程有bug正在解决
      1. BasicVSR++ torch模型转onnx模型并检查
      2. 激活校准,产出量化参数: scale zero_point
      3. 权重调整,提升量化精度
      4. 量化误差分析,定位量化问题
    • note: 目前 BasicVSR++ 的 PTQ 基于开源工具 Dipoorlet 进行,优点代码简洁明了易修改,相较百度框架 paddleslim 便于快捷验证idea; VSR 量化方法成熟后可进一步迁移至 paddleslim
  2. 读文献找idea提升PTQ精度

本周计划(2023.10.30-2023.11.05)

  1. 解决 dipoorlet 量化 BasicVSR++ 遇到的bug

进度汇报 (23.11.06-23.11.12)

  1. Video Super-Resolution Quantization

    • BasicVSR++ 采用 Dipoorlet PTQ: 量化过程有不支持动态输入的问题, 即不支持视频随机长度(time_step)的问题, github提了issue 暂未有回复
    • BasicVSR++ 采用 MQBench PTQ: BasicVSR++ 模型 forward 过程存在动态控制流, 即控制流的判断条件含有运算变量(Input/Activation)参与, 而MQBench调用 torch.fxsymbolic_trace 完成 forward 过程计算图捕捉, 其本身的限制不支持动态控制流。正尝试:
      1. 把模型的动态控制流用静态的代替
      2. torch 2.0 新发布的 torch.compile 也即 (TorchDynamo), 了解后尝试来解决模型 forward 中广泛存在的动态控制流
  2. RustDesk 中继服务搭建, 降低远程桌面的延迟

本周计划 (23.11.06-23.11.12)

  1. 推进 VSR 模型的常规量化(Naive PTQ)的工作
  2. 实习相关工作

进度汇报 (23.11.13-23.11.19)

  1. Video Super-Resolution Quantization
    • BasicVSR++ 采用 Dipoorlet PTQ: 量化过程有不支持动态输入的问题, 即不支持视频随机长度(time_step)的问题, github官方答复暂不支持
  2. Sensetime Internship
    • 与mentor沟通了解了实际业务量化部署过程中大体流程以及其重难点(torch模型 -> onnx计算图中间表示 -> 目标平台SDK),尚未接触实际项目
    • 调研了解LLM Quantization, 之后会逐步扩展形成对 LLM -> Transformer -> CNN整个链条的量化部署的覆盖

本周计划 (23.11.13-23.11.19)

  1. 完成 LLM Quantization 的初步调研(会将文档共享给大家), 和mentor探讨下一步该从哪种方法开始上手复现
  2. 准备 ICDM presentation -> false

进度汇报 (23.11.20-23.11.26)

  1. Sensetime Internship
    • LLM Quantization 累计调研10篇典型文章,包含QAT, weight only quantization, weight and activation quantization。给mentor做了初步的讨论汇报

本周计划 (23.11.20-23.11.26)

  1. Video Super-Resolution Quantization
    • 准备 ICDM presentation
  2. 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上部署推理
  3. 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)

  1. School Task
    • ICDM presentation PPT 制作/参会
    • VSR 视频超分专利修改
    • Face Super-resolution/Enhancement 调研
  2. Sensetime Internship
    • LLM Quantization 环境搭建, 在 llama 7B 上跑了一下 GPTQ
    • 了解 Intel neural-compressor / Pytorch FX / mmdeploy PTQ 量化,大致如下 以 torch fx 为例 (后续会结合代码形成较详细的量化pipeline文档)
      1. Prepare fx: fuse模型,也就是通常的优化,比如conv+bn啥的,利用fx对模型进行transform
      2. Insert observer: Input/Output/Weight 均插入observer
      3. Calibration: 输入数据进行校准,收集 weights 和 activation 的 max 和 min 等统计信息
      4. Convert fx: 在 observer 位置用相应的 quantize/dequantize module代替,并合并到原始的layer中
        附图:torch fx ptq
    • 推导验证 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)

  1. 了解并测试多个开源 LLM PTQ 方法,如 AWQ SmoothQuant ZeroQuantV2 等
  2. codino 模型前后处理部分搭建, 在 GPU 上进行 onnx runtime 推理部署
  3. 调研了解能否用 onnx runtime 进行 QAT, 以减轻 QAT 与 部署的 op 输入/输出/权重参数 范围对齐的压力

进度汇报 (23.11.11-23.12.24)

  1. School Task

    • 深度学习与深度神经网络原理课程报告汇总提交
  2. Sensetime Internship

    • obeject detection model deploy: 基于openmmlab开源框架mmcv mmdetection,花费较长时间处理代码相关细节,具体如下

      1. 基于继承机制的模型config使用,模型 backbone 为 InternImage
      2. 模型前后处理剥离,前处理主要是resize操作,后处理模型输出为shape为[n, 5]的np.ndarray如何正确转化为 bbox 与 class 并可视化出来
      3. torch 模型转 onnx 时未支持算子 grid_sampler 处理
      4. 相关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)

  1. 测试以下 LLM PTQ 方法:AWQ, SmoothQuant, Outlier Suppression+, LLM.int8()
  2. 推进 onnx QAT
  3. video super-resolution:基于 torch fx 对 basicvsr++ 进行 post training dynamic quantization (activation 的 scale factor 在推理时确定而非预先根据统计量计算出来) -> 搞明白 Torch FX OPs 插入 / 融合 / 操作 的位置与做法
  4. 论文写作 课程作业

进度汇报 (23.12.25-24.01.07)

  1. School Task

  2. 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)

  1. 跟进 video super-resolution 量化推进
  2. LLM / MLLM 量化算法部署测试与集成推进
  3. 完成 书生·浦语大模型实战营内容

进度汇报 (24.01.07-24.01.21)

  1. 书生·浦语大模型实战营内容完成(包括基于 InternLM 和 LangChain 搭建知识库, XTuner 大模型单卡低成本微调, LMDeploy 大模型量化部署等)
  2. VSR模型量化,先基于 mmdetection 的检测模型进行流程的验证,卡在捕获计算图这一步,解决掉这一步才可以游刃有余的进行量化过程中插入 op 的操作。遇到以下两类细节上的问题,正在解决
    • forward 过程存在输入动态控制流,torch.fx 不支持 trace 捕获此类计算图
    • forward 存在对 inputs 调用len() method 而捕获过程会把 inputs 转换为抽象的 proxy 作为输入,proxy object 不支持调用 len() method
  3. LLM / MLLM 量化,已经走通了常见模型 llama2-7b 的量化算法 AWQ SmoothQuant

后续计划 (24.01.07-24.01.21)

  1. 走通捕获计算图这一步
  2. 阅读 VSR 近期论文,了解最新进展
  3. 其它交代的事项