Dachuan Shi
Dachuan Shi
> > Hello, thanks for your nice work! I am now having trouble reproducing the reported score on the VQA task. I evaluated the checkpoint downloaded from https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_vqa_capfilt_large.pth and followed...
@DeVriesMatt Hey, I have the same problem with you when I was training R2U-Net and R2AttU-Net on my own dataset. Have you solved this problem yet? These two models produced...
> @lorenmt @sdc17 It has been reported by others that a discrepancy in PyTorch version can lead to different evaluation results. Can I know if your PyTorch is 1.10? If...
same question here
你好, 1. 更新alpha时变动的元素是alpha的grad值大还是值小的元素 论文算法1的10-12行有具体流程,第10行的`TopKMask`代表取累计梯度最大的K个位置生成 0-1 Mask $M^t$ 。 $M_t$ 为0代表需要保留的位置, $M_t$为1代表需要剪枝的位置,也即累计梯度大的位置需要被剪枝。 2. 为何grad比threshold大的部分参数重要性就小以至于能趋于0呢 首先需要区分在Progressive Pruning中会涉及到的两种不同mask。我们不想让需要被剪枝的值从原值直接变为0(这对应我们直接将二值化的 $M^t$ 乘到模型里),而是想让其逐渐变为0,因此这里我们需要把二值化的 $M^t$ 平滑成一个连续实值的mask $\zeta^t$,也即让 $\zeta^t$ 作为真正乘到模型里的mask。 所有的mask $\zeta^t$的初值都为1,为促进稀疏化,其范数会被作为额外的损失项,即公式3。如果按正常随机梯度下降更新mask $\zeta^t$ 的参数,那么在不重要的位置上mask $\zeta^t$ 的值学出来会比较小,这也意味着从iteration 0开始他们的累计梯度比较大。由于在Progressive Pruning中我们需要控制在每个iteration时mask...
您好,可以使用自己的数据集在retrain阶段进行微调。也可以在BLIP本来的数据集上search和retrain完,再拿自己的数据集微调。 如果是在BLIP模型上剪枝,使用代码和脚本里提供的对于BLIP剪枝的默认参数即可。 如果时间允许,可以多跑一些retrain的epoch,效果应该会好些。
单卡与单卡比较速度应该是相近的,但是log中是用多卡训练的。 只用单卡4090的话,相比log可能需要5倍左右或者再多一点的时间。
可以的,直接load剪枝后的checkpoint就不用search了
amp=automatic mixed precision 自动混合精度 readme里有写
您好,是的。 对于加载压缩后的checkpoints,代码中先使用原来的build model创建模型,然后通过`prune_if_compressed`方法将原模型的各个参数形状修改成和checkpoint匹配的形状,最后加载checkpoint的参数。 如果想直接使用原来的build model函数加载压缩后的checkpoints,可以改写各个模型的`compress`方法,使得模型compression结束后保存checkpoint时不实际删除模型中多余的参数,而是像非结构化剪枝一样将它们置为0。这样可以保持参数矩阵形状不变,从而可以使用原来的build model函数加载checkpoint,但缺点是没有实际压缩模型的大小。