diff --git "a/2023/10/18/SmallProjects/\345\215\232\345\256\242\346\220\255\345\273\272/Hexo+Github\346\220\255\345\273\272\344\270\252\344\272\272Wiki\351\243\216\346\240\274\345\215\232\345\256\242/index.html" "b/2023/10/18/SmallProjects/\345\215\232\345\256\242\346\220\255\345\273\272/Hexo+Github\346\220\255\345\273\272\344\270\252\344\272\272Wiki\351\243\216\346\240\274\345\215\232\345\256\242/index.html" index ef41ecb9..02d22001 100644 --- "a/2023/10/18/SmallProjects/\345\215\232\345\256\242\346\220\255\345\273\272/Hexo+Github\346\220\255\345\273\272\344\270\252\344\272\272Wiki\351\243\216\346\240\274\345\215\232\345\256\242/index.html" +++ "b/2023/10/18/SmallProjects/\345\215\232\345\256\242\346\220\255\345\273\272/Hexo+Github\346\220\255\345\273\272\344\270\252\344\272\272Wiki\351\243\216\346\240\274\345\215\232\345\256\242/index.html" @@ -18,7 +18,7 @@ - + @@ -182,6 +182,24 @@

+ +
  • + + +   + 工具 + + +
  • + +
  • + + +   + 科研 + + +
  • +
  • Welcome to Lacia's Wiki and Blog
  • + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    + + +
    + + + + + +

    + 论文阅读:A_Survey_of_Quantization_Methods_for_Efficient_Neural_Network_Inference +

    + + +
    + + +
    + + + +
    + 文章目录 +
    1. 1. 摘要
    2. 2. 介绍
    3. 3. 量化历史
    4. 4. 量化的基本概念
      1. 4.1. 问题设置和符号
      2. 4.2. 均匀量化
      3. 4.3. 对称和非对称量化
      4. 4.4. 范围校准算法:静态与动态量化
      5. 4.5. 量化粒度
      6. 4.6. 非均匀量化
      7. 4.7. 微调方法
        1. 4.7.1. QAT
        2. 4.7.2. PTQ
        3. 4.7.3. Zero-shot Quantization(ZSQ)
      8. 4.8. 随机量化
    5. 5. 参考资料
    +
    + + + +
    +

    论文地址:A Survey of Quantization Methods for Efficient Neural Network Inference

    +
    +

    摘要

    这篇论文是关于模型量化方向的综述,介绍了量化相关领域的研究。

    +

    提到了量化的好处:

    +
      +
    • 加快模型的推理过程
    • +
    • 减少模型的存储开销
    • +
    • 可以部署到特定设备(比如有的设备只能进行整型运算)
    • +
    +

    介绍

    过去模型的能力有了巨大的提升,其中一个原因就是模型参数的增加,但这也为模型的部署提升了难度。

    +

    过去几年关于这方面的尝试有如下几种:

    +
      +
    • 设计高效的神经网络模型架构,包括微观结构和宏观结构
    • +
    • 神经网络软件和硬件协同设计
    • +
    • 剪枝,减去对模型影响小的参数,分为结构化剪枝(删去部分参数)和非结构化剪枝(删去部分结构,相当于参数按组删去),两个方法各有优劣
    • +
    • 知识蒸馏,用“教师”模型训练“学生”模型,可与前面方法结合
    • +
    • 量化:分为训练中量化和推理量化
    • +
    • 量化和神经科学的发展
    • +
    +
    +

    这里很多次提到了AutoML和NAS技术调整网络结构

    +
    +

    量化历史

    量化,作为一种从大的(通常是连续的)集合中的输入值映射到小的(通常是有限的)集合中的输出值的方法,具有很长的历史。早在1897年就有微积分相关工作从事量化研究,同时,量化在信号处理中也非常重要。

    +

    香农在信息学和信号处理的研究过程中也针对量化进行过研究。同时,量化在连续数学量的数值求解中研究过。一些问题的良好解法可能由于数字量化会导致巨大误差,从而引出了算法数值稳定性的概念。

    +

    神经网络的发展给量化带来了机遇。神经网络的计算是计算密集型任务且目前很多模型都过度参数化。很多问题的解决都是基于一个某种误差度量,因此量化可能会增大误差,但同时也会增加模型的鲁棒性。

    +

    量化的基本概念

    问题设置和符号

    在不失一般性的情况下,让我们关注监督学习问题,即最小化下面所示的损失函数。

    +

    $$
    L(\theta)=\frac{1}{N} \sum^{N}_{i=1}l(x_i,y_i;\theta)
    $$

    +

    (x,y)是输入数据和对应的标签,$ l(x_i,y_i;\theta)$是损失函数,N是数据数目

    +

    同时让我们把第$i$层的输入隐藏激活表示为$h_i$,输出隐藏激活表示为$a_i$,我们假设浮点格式存储的模型参数为$\theta$.

    +

    均匀量化

    +

    均匀量化和非均匀量化

    +

    1699360183609

    +
    +

    均匀量化的一个常用的函数是

    +

    $$
    Q(r)=Int(\frac{r}{S})-Z
    $$

    +

    $Q$是压缩函数,$r$是实数类型的输入,$S$是实数类型的比例因子,$Z$是整数零点,$Int$函数通过舍入操作把实数映射到整数

    +

    去量化操作

    +

    $$
    Q(\tilde{r})=S(Q(r)+Z)
    $$

    +

    由于舍入操作$\tilde{r}$和$r$不会严格相等

    +

    对称和非对称量化

    +

    对称和非对称量化

    +

    1699360947746

    +
    +

    确定放缩因子$S$的式子为

    +

    $$
    S=\frac{\beta-\alpha}{2^{b}-1}
    $$

    +

    $[\alpha,\beta]$代表剪切范围,$b$代表量化位宽.

    +

    确定$[\alpha,\beta]$的两个方式:

    +
      +
    • $\alpha=r_{min},\beta=r_{max}$
    • +
    • $-\alpha=\beta=max(|r_{min}|,|r_{max}|)$
    • +
    +

    利用实数的最大最小位选定裁剪范围可能会容易被异常数据影响,从而增加不必要的范围.解决这个问题的一种方法是使用百分位数,另一种方法是选择$α$和$β$,以最小化真实值和量化值之间的KL散度(即信息损失).也有学者对不同的量化范围选取范围方法进行了评估.

    +

    确定$S$的两个方式:

    +
      +
    • $\frac{2max(|r|)}{2^n-1}$
    • +
    • $\frac{max(|r|)}{2^{n-1}-1}$
    • +
    +

    对称量化使用广泛,因为可以把零点降为0,减少计算成本并且实现更加简单;非对称量化对于范围可能是倾斜的和不对称的情况表现会更加优秀.

    +

    非对称激活中的偏移而占据的交叉项是一个静态数据独立项并且可以被偏差吸收(或用于初始化累加器).

    +

    范围校准算法:静态与动态量化

      +
    • 动态量化:运行期间计算量化参数,高精度,高开销
    • +
    • 静态量化:量化参数预先确定,推理期间为静态,低开销,低精度
    • +
    +

    量化粒度

      +
    • 分层量化:通过一整个层的数值来计算量化参数,实现简单,精度次优
    • +
    • 分组量化:把每一层的多个通道进行分组量化,有助于解决单个通道、激活分布离散的情况,但是计算开销会增加
    • +
    • 分通道量化:每一层的每个通道进行量化,更好的精度,更高的计算成本
    • +
    • 分卷积核(滤波器)量化:输入通道为$n$,输出通道为$m$,那么应该会有$n*m$个卷积核,根据卷积核量化会有更高的精度
    • +
    +

    总结(量化粒度)。通道量化是目前用于量化卷积核的标准方法。它使从业者能够以可忽略不计的开销来调整每个单独的内核的剪切范围。相比之下,子信道量化可能会导致巨大的开销,而且目前还不是标准的选择。

    +

    非均匀量化

    量化步骤和量化水平被允许是非均匀间隔的

    +

    $$
    Q(r)=X_i, \quad if\quad r \in [r_i,r_{i+1}]
    $$

    +

    非均匀量化对于固定的位宽,可以获得更高的精度
    典型的有

    +
      +
    • 钟型分布
    • +
    • 对数分布
    • +
    • 二进制码,把一个向量拆成多个基向量的和,每个基向量的每个维度的值的绝对值为1
    • +
    +

    很多把量化问题转化为优化问题,减少原始张量r和量化后张量Q(r)的差异

    +

    $$
    \underset{Q}{min}||Q(r)-r||
    $$

    +

    此外,量化器本身也可以和模型参数一起学习,称之为可学习的量化器
    还有一些工作使用聚类来减少量化损失

    +

    非均匀量化能更好的捕获信息,但是计算成本更高,因此目前主流的还是均匀量化

    +

    微调方法

    量化后需要对参数进行微调,有两种方式:

    +
      +
    • 量化感知训练QAT
    • +
    • 训练后量化PTQ
    • +
    +

    左边是QAT,右边是PTQ
    1700397462765

    +

    QAT

    QAT一种方法展示
    1700397965758
    反向传播方法有:

    +
      +
    • STE
    • +
    • 随机神经元
    • +
    • 组合优化
    • +
    • 目标传播
    • +
    • Gumbelsoftmax
    • +
    • 正则化算子来强制执行要量化的权重(量化过程没有不可微分算符)
    • +
    +

    也可以考虑量化感知训练的过程种学习量化参数

    +

    PTQ

    由于PTQ不需要训练,所以对数据集的依赖比较低,当然,精度也会下降

    +

    因此,PTQ的研究重点都在于减轻PTQ的精度下降:

    +
      +
    • ACIQ 解析地计算了PTQ的最佳剪切范围和通道级位宽设置
    • +
    • OMSE方法在激活时去除信道级量化,并提出通过优化量化张量与相应的浮点张量之间的L2距离来进行PTQ
    • +
    • 一种离群值信道分裂(OCS)方法,该方法将包含离群值的信道重复和减半,缓解离群值对PTQ的不利影响
    • +
    • AdaRound表明,简单的圆到最近的量化方法(round-to-nearest)可以反直觉地得到次优解,并且提出了一种自适应四舍五入的方法
    • +
    • AdaQuant提出了一种更通用的方法,允许量化权值根据需要进行变化。
    • +
    +

    在PTQ中,所有的权值和激活量化参数都是不需要再训练而确定的。因此,PTQ是一种非常快速的神经网络模型量化方法。然而,与QAT相比,这往往以较低的准确性为代价。

    +

    Zero-shot Quantization(ZSQ)

    PTQ的极端场景,量化过程中不使用数据

    +
      +
    • Level 1: 没有数据且没有微调 (ZSQ + PTQ).
    • +
    • Level 2: 没有数据但需要微调 (ZSQ +QAT).
    • +
    +

    ZSQ中一个流行的研究分支是生成与类似于真实数据的合成数据,从中训练目标预先训练的模型。

    +

    随机量化

    在推理过程中,量化方案总是确定的,小的权重更新可能不会导致任何权重变化,因为舍入操作可能总是返回相同的权重。然而,启用一个随机舍入可能为神经网络提供一个随机的机会,从而更新其参数。

    +

    比如,在有的论文里面,INT操作定义为

    +

    $$
    INT(x)=\begin{cases}
    \lfloor x \rfloor ,with \quad probability \quad \lceil x \rceil-x\
    \lceil x \rceil ,with \quad probability \quad x-\lfloor x \rfloor\
    \end{cases}
    $$

    +

    有的会选择在量化的适合选择随机从量化参数权重子集里选一个进行量化运算

    +

    参考资料

    + +
    + +
    + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git "a/2023/10/23/\347\247\221\347\240\224/\350\256\272\346\226\207\351\230\205\350\257\273/\350\256\272\346\226\207\351\230\205\350\257\273~BitNet-Scaling-1-bit-Transformers-for-Large-Language-Models/index.html" "b/2023/10/23/\347\247\221\347\240\224/\350\256\272\346\226\207\351\230\205\350\257\273/\350\256\272\346\226\207\351\230\205\350\257\273~BitNet-Scaling-1-bit-Transformers-for-Large-Language-Models/index.html" new file mode 100644 index 00000000..721d6f39 --- /dev/null +++ "b/2023/10/23/\347\247\221\347\240\224/\350\256\272\346\226\207\351\230\205\350\257\273/\350\256\272\346\226\207\351\230\205\350\257\273~BitNet-Scaling-1-bit-Transformers-for-Large-Language-Models/index.html" @@ -0,0 +1,547 @@ + + + + + + + 论文阅读:BitNet_Scaling_1-bit_Transformers_for_Large_Language_Models | Blogs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    + + +
    + + + + + +

    + 论文阅读:BitNet_Scaling_1-bit_Transformers_for_Large_Language_Models +

    + + +
    + + +
    + + + +
    + 文章目录 +
    1. 1. 摘要
    2. 2. 介绍
    3. 3. 参考资料
    +
    + + + +
    +

    论文地址:BitNet: Scaling 1-bit Transformers for Large Language Models

    +
    +

    摘要

    这篇论文展示了BitNet,一种为大型语言模型设计的可扩展和稳定的1-bit转换器架构。具体地说,引入了BitLinear作为nn.Linar的插入替代,以便从头开始训练1-bit的权重。在语言建模上的实验结果表明,与最先进的8-bit量化方法和FP16 Transformer相比,BitNet在显著降低内存占用和能量消耗的同时,实现了强力的性能。此外,BitNet还展示了一种类似于全精度Transformers的缩放律,这表明它可以在保持效率和性能效益的同时有效地扩展到更大的语言模型。

    +

    1698064373146

    +

    图1: BitNet从头开始训练1-bit Transformers,以一种高效的方式获得竞争结果。BitNet明显优于最先进的量化方法。随着模型规模的扩大,成本节约变得更加显著,同时实现与FP16训练的模型的竞争性能。

    +

    介绍

    大多数现有的大型语言模型的量化方法都是训练后的。它们简单且易于应用,因为它不需要对训练管道进行任何更改或重新训练模型。然而,它将导致更显著的精度损失,特别是当精度较低时,因为模型在训练过程中没有对量化表示进行优化。

    +

    深度神经网络的另一条量化链是量化感知训练。与训练后相比,它通常会产生更好的准确性,因为该模型被训练是为了考虑到从一开始就降低的精度。此外,它允许模型继续训练或进行微调,这对于大型语言模型至关重要。量化感知训练的挑战主要在于优化,即随着精度的降低,模型越来越难以收敛。此外,量化感知训练是否遵循神经语言模型的标度规律尚不清楚。

    +

    参考资料

    + +
    + +
    + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git "a/2023/11/22/\345\267\245\345\205\267/\346\226\207\347\214\256\347\256\241\347\220\206\345\267\245\345\205\267zotero/index.html" "b/2023/11/22/\345\267\245\345\205\267/\346\226\207\347\214\256\347\256\241\347\220\206\345\267\245\345\205\267zotero/index.html" new file mode 100644 index 00000000..6bdf8fba --- /dev/null +++ "b/2023/11/22/\345\267\245\345\205\267/\346\226\207\347\214\256\347\256\241\347\220\206\345\267\245\345\205\267zotero/index.html" @@ -0,0 +1,541 @@ + + + + + + + 文献管理工具zotero | Blogs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    + + +
    + + + + + +

    + 文献管理工具zotero +

    + + +
    + + +
    + + + +
    + 文章目录 +
    1. 1. 参考资料
    +
    + + + +

    这里推荐一个文献管理工具,zotero,很好用的文献管理工具,也能很好的辅助写论文,获取文献,免费开源且支持插件,可以参考这个b站up的视频搭建和使用这个工具。

    + + +

    参考资料

    + +
    + +
    + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git "a/2023/12/08/AI\345\256\236\346\210\230/Kaggle/\350\247\243\351\242\230\346\265\201\347\250\213/index.html" "b/2023/12/08/AI\345\256\236\346\210\230/Kaggle/\350\247\243\351\242\230\346\265\201\347\250\213/index.html" new file mode 100644 index 00000000..03563f70 --- /dev/null +++ "b/2023/12/08/AI\345\256\236\346\210\230/Kaggle/\350\247\243\351\242\230\346\265\201\347\250\213/index.html" @@ -0,0 +1,587 @@ + + + + + + + 解题流程 | Blogs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    + + +
    + + + + + +

    + 解题流程 +

    + + +
    + + +
    + + + +
    + 文章目录 +
    1. 1. 前言
    2. 2. 问题分析
    3. 3. 数据分析
    4. 4. 大致思路
    5. 5. 数据预处理
    6. 6. 选择模型
    7. 7. 搭建模型
    8. 8. 训练尝试
    9. 9. 搜索超参数
    10. 10. 得到最后结果并测试
    11. 11. 参考资料
    +
    + + + +

    前言

    这个目录下都是个人打Kaggle比赛的记录,也是作为学习回顾的文件.

    +

    感觉很多题目都有相似的流程,为了快速上手和回顾, 也为了方便或者减少问GPT, 所以特意写了这篇博客

    +

    问题分析

    首先肯定要先对问题进行分析,需要明确解决什么样的问题,熟悉一下题目提供的各种信息,比如:

    +
      +
    • 数据格式:现在有哪些数据
    • +
    • 目标数据:要得到什么样的数据
    • +
    • 评价指标:如何评价模型在测试集的表现,通常也是损失函数
    • +
    • 已有的解决方案,baseline等
    • +
    • +
    +

    数据分析

    要对数据进行一下统计分析,需要了解:

    +
      +
    • 数据分布
    • +
    • 缺失值
    • +
    • 异常值
    • +
    • 关联性
    • +
    • +
    +

    大致思路

    试着先在大脑过一遍大致思路,很多问题可能需要分解为多个子问题来解决

    +

    数据预处理

    根据数据情况,清洗数据,可能需要:

    +
      +
    • 处理异常值和缺失值
    • +
    • 根据统计指标进行归一化
    • +
    • 特征工程创建新特征或转化现有特征
    • +
    • 数据分割
    • +
    • 生成新数据
    • +
    • +
    +

    文本任务可能需要:

    +
      +
    • 删去多余字符
    • +
    • 设置特殊字符并且生成vocab
    • +
    • 分词后设置最大长度,截断,填充等
    • +
    • +
    +

    图像任务可能需要:

    +
      +
    • 尝试对图像数据进行修改生成更多图像
    • +
    • +
    +

    选择模型

    根据问题要求,尝试去选择模型,很多问题的求解可能需要:

    +
      +
    • 从Huggingface上面选择合适的神经网络模型
    • +
    • 现有的机器学习库
    • +
    • 自己搭建模型
    • +
    +

    搭建模型

    首先完成模型的第一步,把数据和模型,保证数据流可以成功传输并且处理

    +

    训练尝试

    选择几组超参数进行模型的训练,确保模型训练流程不会出现问题

    +

    搜索超参数

    可以通过一定的方式进行超参数的搜索,比如:

    +
      +
    • py包
    • +
    • 自己写(
    • +
    • +
    +

    得到最后结果并测试

    确认最后的结果,提交答案

    +

    参考资料

    +
      +
    • +
    • +
    +
    + +
    + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/about/index.html b/about/index.html index 2348faa6..84b18574 100644 --- a/about/index.html +++ b/about/index.html @@ -177,6 +177,24 @@

    + +
  • + + +   + 工具 + + +
  • + +
  • + + +   + 科研 + + +
  • +
  • Welcome to Lacia's Wiki and Blog
  • + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    + +
    + +

    2023

    +
    + +
    + +

    2023-111

    +
    + +
    + +
    + + +

    + 文献管理工具zotero +

    + + + + + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/archives/2023/12/index.html b/archives/2023/12/index.html new file mode 100644 index 00000000..38f96bf6 --- /dev/null +++ b/archives/2023/12/index.html @@ -0,0 +1,448 @@ + + + + + + + 归档: 2023/12 | Blogs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    + +
    + +

    2023

    +
    + +
    + +

    2023-121

    +
    + +
    + +
    + + +

    + 解题流程 +

    + + + + + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/archives/2023/index.html b/archives/2023/index.html index fd4b1641..3c07f759 100644 --- a/archives/2023/index.html +++ b/archives/2023/index.html @@ -175,6 +175,24 @@

    + +
  • + + +   + 工具 + + +
  • + +
  • + + +   + 科研 + + +
  • +
  • Welcome to Lacia's Wiki and Blog
  • + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    +
    + +

    Kaggle

    +
    + +
    + +
    + + +

    + 解题流程 +

    + + + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git "a/categories/AI\345\256\236\346\210\230/index.html" "b/categories/AI\345\256\236\346\210\230/index.html" new file mode 100644 index 00000000..75676b0d --- /dev/null +++ "b/categories/AI\345\256\236\346\210\230/index.html" @@ -0,0 +1,441 @@ + + + + + + + 分类: AI实战 | Blogs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    +
    + +

    AI实战

    +
    + +
    + +
    + + +

    + 解题流程 +

    + + + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/categories/SmallProjects/index.html b/categories/SmallProjects/index.html index addeb3a3..061db57f 100644 --- a/categories/SmallProjects/index.html +++ b/categories/SmallProjects/index.html @@ -175,6 +175,24 @@

    + +
  • + + +   + 工具 + + +
  • + +
  • + + +   + 科研 + + +
  • +
  • Welcome to Lacia's Wiki and Blog
  • + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    +
    + +

    工具

    +
    + +
    + +
    + + +

    + 文献管理工具zotero +

    + + + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git "a/categories/\347\247\221\347\240\224/index.html" "b/categories/\347\247\221\347\240\224/index.html" new file mode 100644 index 00000000..08f10154 --- /dev/null +++ "b/categories/\347\247\221\347\240\224/index.html" @@ -0,0 +1,477 @@ + + + + + + + 分类: 科研 | Blogs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    +
    + +

    科研

    +
    + + + + + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git "a/categories/\347\247\221\347\240\224/\350\256\272\346\226\207\351\230\205\350\257\273/index.html" "b/categories/\347\247\221\347\240\224/\350\256\272\346\226\207\351\230\205\350\257\273/index.html" new file mode 100644 index 00000000..aad587e9 --- /dev/null +++ "b/categories/\347\247\221\347\240\224/\350\256\272\346\226\207\351\230\205\350\257\273/index.html" @@ -0,0 +1,477 @@ + + + + + + + 分类: 论文阅读 | Blogs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + +
    +
    +
    + +

    论文阅读

    +
    + + + + + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/content.json b/content.json index a7b1b430..fa2a29b7 100644 --- a/content.json +++ b/content.json @@ -1 +1 @@ -{"meta":{"title":"Blogs","subtitle":"","description":"","author":"lacia","url":"http://example.com","root":"/"},"pages":[{"title":"Categories","date":"2023-10-17T15:00:40.120Z","updated":"2023-10-17T15:00:40.120Z","comments":true,"path":"categories/index.html","permalink":"http://example.com/categories/index.html","excerpt":"","text":""},{"title":"Tags","date":"2023-10-17T15:00:40.121Z","updated":"2023-10-17T15:00:40.121Z","comments":true,"path":"tags/index.html","permalink":"http://example.com/tags/index.html","excerpt":"","text":""},{"title":"About","date":"2023-10-17T15:00:40.120Z","updated":"2023-10-17T15:00:40.120Z","comments":true,"path":"about/index.html","permalink":"http://example.com/about/index.html","excerpt":"","text":""}],"posts":[{"title":"Welcome to Lacia's Wiki and Blog","slug":"Welcome-to-Lacia-s-Wiki-and-Blog","date":"2023-10-18T13:45:35.655Z","updated":"2023-10-18T13:45:35.655Z","comments":true,"path":"2023/10/18/Welcome-to-Lacia-s-Wiki-and-Blog/","link":"","permalink":"http://example.com/2023/10/18/Welcome-to-Lacia-s-Wiki-and-Blog/","excerpt":"","text":"这是lacia的个人Wiki和Blog站点,主要是把知识系统的罗列出来以及存放一些特殊bug的处理,当然也会更一些游戏或者二次元相关东西,也希望在成长的过程中可以认识许多志同道合的人。 本人一直认为互联网的开源是社会发展的重要原因之一,因为开源使得技术知识和解决问题的经验可以被记录和传承下去,很多时候在需要的时候可以被人们所发掘。","categories":[],"tags":[]},{"title":"Hexo+Github搭建个人Wiki风格博客","slug":"SmallProjects/博客搭建/Hexo+Github搭建个人Wiki风格博客","date":"2023-10-18T08:12:44.000Z","updated":"2023-10-19T14:07:57.373Z","comments":true,"path":"2023/10/18/SmallProjects/博客搭建/Hexo+Github搭建个人Wiki风格博客/","link":"","permalink":"http://example.com/2023/10/18/SmallProjects/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/Hexo+Github%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BAWiki%E9%A3%8E%E6%A0%BC%E5%8D%9A%E5%AE%A2/","excerpt":"","text":"介绍以前一直不理解更新博客的用处,后来发现记录一些学到的东西和处理问题的经验对个人还是互联网都是有促进作用的(希望不是在生产互联网垃圾)。 所以本文会介绍一下个人搭建这个博客的过程。 博客风格 简洁(本来想弄点二次元风格的,但是博客还是减少点无用东西吧) 多级分类:多级分类可以帮助来快速浏览学过的知识点 标签:标签还是比较重要的,可以实习对相关博客的快速定位 主题选择基于上述的需求,最终选择了Wikitten作为自己的博客主题 顺便放一下这个大佬的相关链接: Wiki地址:http://wiki.zthxxx.me/ Wikitten主题地址:https://github.com/zthxxx/hexo-theme-Wikitten/ 环境搭建参考地址:使用 Hexo+GitHub 搭建个人免费博客教程(小白向) - 知乎 (zhihu.com) 1.Github创建项目并取名为 用户名.github.io 2.使用 npm 一键安装 Hexo 博客程序 1npm install -g hexo-cli 使用npm安装package.json里面的依赖 1npm install 安装用于部署的包hexo-deployer-git 1npm install hexo-deployer-git --save 修改_config.yml文件末尾的Deployment部分 1234deploy: type: git repository: git@github.com:用户名/用户名.github.io.git branch: master Hexo常用命令1234hexo clean #清除生成的网页文件hexo g #生成静态网页hexo s #本地运行博客hexo d #将网页文件推送至远程服务器 Hexo常用文件夹 文件夹 备注 node_modules 依赖文件 .deploy_git 推送到远程的文件 public 生成的网页文件 themes 主题文件夹 scaffolds 博客模板文件夹 source 博客源文件 主题安装Wikitten主题地址:https://github.com/zthxxx/hexo-theme-Wikitten/里面提供了双语详细的安装步骤,笔者使用的版本是 5b0d493 注意:里面有个可选步骤 配置mathjax渲染,笔者发现进行这个步骤后会出现生成网页文件失败的情况,跳过即可,并且暂时没发现有什么问题 评论系统giscus由于不知名的原因,Gitment和Gitalk无法使用,选择了giscus来替代,参考Hexo静态博客使用giscus评论系统教程 1.打开自己的GitHub,选择博客所在仓库或可新建一个仓库 确保仓库是公开的(新建的时候选择 private或者在仓库的 Settings - General,选择 change visibility - change to public) 确保仓库开启了 Discussions(在仓库的 Settings - General,勾选 Discussions) 确保安装了 giscus app 2.打开官方配置页面giscus,生成代码 语言 仓库:填写格式:你的用户名/你的仓库名 页面 与 discussion 映射关系:由于本博客会分级,所以选择路径pathname Discussion分类:General 特性:按个人喜好即可,本博客加载了:启用主贴上的反应,将评论框放在评论上方,懒加载评论 主题:选择与博客风格一致的主题 3.修改主题 _config.yml在文件末尾添加 12giscus: enable: true 方便以后直接从配置文件开关评论区 4.粘贴代码网页会自动生成代码,复制粘贴到网页模板文件即可不同主题的模板文件位置可能不同,本主题在 themes/Wikitten/layout/_partial/article.ejs添加代码,代码添加位置用 footer元素定位 123456789101112131415161718192021222324252627282930<% /* 其他代码 */ %><% if (theme.gitalk.enable) { %><script src="https://giscus.app/client.js" data-repo="bg51717/Hexo-Blogs-comments" data-repo-id="*********" data-category="General" data-category-id="*********" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="top" data-theme="light" data-lang="zh-CN" data-loading="lazy" crossorigin="anonymous" async></script><% } %> <footer class="article-footer"> </footer><% /* 其他代码 */ %> 常见QA1.修改配置文件应该修改站点的 _config.yml 还是主题的 _config.yml?具体使用哪个,要看主题的源代码,如果是 config.xxx那就是用的根目录配置文件,如果是 theme.xxx那就用的是主题目录的配置文件。 2.怎么让自己的博客可以被常用搜索引擎搜索到?很多搜索引擎可以在搜索框里用site:网址来判断是否被收录Google1.打开Google搜索,搜索“Google Search Console”2.根据提示登录你的Google账号3.选择资源类型4.选择验证方式(本博客用的是HTML标记,把对应代码添加到主题文件里面,本主题是themes/Wikitten/layout/common/head.ejs)5.在Google Search Console后台添加站点地图 参考资料 使用 Hexo+GitHub 搭建个人免费博客教程(小白向) Hexo 的个人 Wiki 主题 - Wikitten 超详细Hexo+Github博客搭建小白教程 Hexo静态博客使用giscus评论系统教程 Hexo官方文档","categories":[{"name":"SmallProjects","slug":"SmallProjects","permalink":"http://example.com/categories/SmallProjects/"},{"name":"博客搭建","slug":"博客搭建","permalink":"http://example.com/categories/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"}],"tags":[{"name":"博客","slug":"博客","permalink":"http://example.com/tags/%E5%8D%9A%E5%AE%A2/"},{"name":"Hexo","slug":"Hexo","permalink":"http://example.com/tags/Hexo/"},{"name":"Wiki","slug":"Wiki","permalink":"http://example.com/tags/Wiki/"}]}],"categories":[{"name":"SmallProjects","slug":"SmallProjects","permalink":"http://example.com/categories/SmallProjects/"},{"name":"博客搭建","slug":"博客搭建","permalink":"http://example.com/categories/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"}],"tags":[{"name":"博客","slug":"博客","permalink":"http://example.com/tags/%E5%8D%9A%E5%AE%A2/"},{"name":"Hexo","slug":"Hexo","permalink":"http://example.com/tags/Hexo/"},{"name":"Wiki","slug":"Wiki","permalink":"http://example.com/tags/Wiki/"}]} \ No newline at end of file +{"meta":{"title":"Blogs","subtitle":"","description":"","author":"lacia","url":"http://example.com","root":"/"},"pages":[{"title":"Tags","date":"2023-10-17T15:00:40.121Z","updated":"2023-10-17T15:00:40.121Z","comments":true,"path":"tags/index.html","permalink":"http://example.com/tags/index.html","excerpt":"","text":""},{"title":"About","date":"2023-10-17T15:00:40.120Z","updated":"2023-10-17T15:00:40.120Z","comments":true,"path":"about/index.html","permalink":"http://example.com/about/index.html","excerpt":"","text":""},{"title":"Categories","date":"2023-10-17T15:00:40.120Z","updated":"2023-10-17T15:00:40.120Z","comments":true,"path":"categories/index.html","permalink":"http://example.com/categories/index.html","excerpt":"","text":""}],"posts":[{"title":"解题流程","slug":"AI实战/Kaggle/解题流程","date":"2023-12-08T08:16:20.000Z","updated":"2023-12-08T15:41:50.212Z","comments":true,"path":"2023/12/08/AI实战/Kaggle/解题流程/","link":"","permalink":"http://example.com/2023/12/08/AI%E5%AE%9E%E6%88%98/Kaggle/%E8%A7%A3%E9%A2%98%E6%B5%81%E7%A8%8B/","excerpt":"","text":"前言这个目录下都是个人打Kaggle比赛的记录,也是作为学习回顾的文件. 感觉很多题目都有相似的流程,为了快速上手和回顾, 也为了方便或者减少问GPT, 所以特意写了这篇博客 问题分析首先肯定要先对问题进行分析,需要明确解决什么样的问题,熟悉一下题目提供的各种信息,比如: 数据格式:现在有哪些数据 目标数据:要得到什么样的数据 评价指标:如何评价模型在测试集的表现,通常也是损失函数 已有的解决方案,baseline等 … 数据分析要对数据进行一下统计分析,需要了解: 数据分布 缺失值 异常值 关联性 … 大致思路试着先在大脑过一遍大致思路,很多问题可能需要分解为多个子问题来解决 数据预处理根据数据情况,清洗数据,可能需要: 处理异常值和缺失值 根据统计指标进行归一化 特征工程创建新特征或转化现有特征 数据分割 生成新数据 … 文本任务可能需要: 删去多余字符 设置特殊字符并且生成vocab 分词后设置最大长度,截断,填充等 … 图像任务可能需要: 尝试对图像数据进行修改生成更多图像 … 选择模型根据问题要求,尝试去选择模型,很多问题的求解可能需要: 从Huggingface上面选择合适的神经网络模型 现有的机器学习库 自己搭建模型 搭建模型首先完成模型的第一步,把数据和模型,保证数据流可以成功传输并且处理 训练尝试选择几组超参数进行模型的训练,确保模型训练流程不会出现问题 搜索超参数可以通过一定的方式进行超参数的搜索,比如: py包 自己写( … 得到最后结果并测试确认最后的结果,提交答案 参考资料","categories":[{"name":"AI实战","slug":"AI实战","permalink":"http://example.com/categories/AI%E5%AE%9E%E6%88%98/"},{"name":"Kaggle","slug":"AI实战/Kaggle","permalink":"http://example.com/categories/AI%E5%AE%9E%E6%88%98/Kaggle/"}],"tags":[{"name":"Kaggle","slug":"Kaggle","permalink":"http://example.com/tags/Kaggle/"},{"name":"深度学习","slug":"深度学习","permalink":"http://example.com/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"},{"name":"机器学习","slug":"机器学习","permalink":"http://example.com/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"},{"name":"数据处理","slug":"数据处理","permalink":"http://example.com/tags/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/"}]},{"title":"文献管理工具zotero","slug":"工具/文献管理工具zotero","date":"2023-11-22T02:12:21.000Z","updated":"2023-11-22T02:23:12.185Z","comments":true,"path":"2023/11/22/工具/文献管理工具zotero/","link":"","permalink":"http://example.com/2023/11/22/%E5%B7%A5%E5%85%B7/%E6%96%87%E7%8C%AE%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7zotero/","excerpt":"","text":"这里推荐一个文献管理工具,zotero,很好用的文献管理工具,也能很好的辅助写论文,获取文献,免费开源且支持插件,可以参考这个b站up的视频搭建和使用这个工具。 参考资料 [Zotero零基础保姆级教程](【Zotero零基础保姆级教程】 https://www.bilibili.com/video/BV1o3411Q7JQ/?share_source=copy_web&vd_source=27d2d5ef19f3ac0063f3e8c909037848)","categories":[{"name":"工具","slug":"工具","permalink":"http://example.com/categories/%E5%B7%A5%E5%85%B7/"}],"tags":[{"name":"工具","slug":"工具","permalink":"http://example.com/tags/%E5%B7%A5%E5%85%B7/"},{"name":"文献管理","slug":"文献管理","permalink":"http://example.com/tags/%E6%96%87%E7%8C%AE%E7%AE%A1%E7%90%86/"}]},{"title":"论文阅读:BitNet_Scaling_1-bit_Transformers_for_Large_Language_Models","slug":"科研/论文阅读/论文阅读~BitNet-Scaling-1-bit-Transformers-for-Large-Language-Models","date":"2023-10-23T12:10:11.000Z","updated":"2023-10-23T12:38:05.114Z","comments":true,"path":"2023/10/23/科研/论文阅读/论文阅读~BitNet-Scaling-1-bit-Transformers-for-Large-Language-Models/","link":"","permalink":"http://example.com/2023/10/23/%E7%A7%91%E7%A0%94/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB~BitNet-Scaling-1-bit-Transformers-for-Large-Language-Models/","excerpt":"","text":"论文地址:BitNet: Scaling 1-bit Transformers for Large Language Models 摘要这篇论文展示了BitNet,一种为大型语言模型设计的可扩展和稳定的1-bit转换器架构。具体地说,引入了BitLinear作为nn.Linar的插入替代,以便从头开始训练1-bit的权重。在语言建模上的实验结果表明,与最先进的8-bit量化方法和FP16 Transformer相比,BitNet在显著降低内存占用和能量消耗的同时,实现了强力的性能。此外,BitNet还展示了一种类似于全精度Transformers的缩放律,这表明它可以在保持效率和性能效益的同时有效地扩展到更大的语言模型。 图1: BitNet从头开始训练1-bit Transformers,以一种高效的方式获得竞争结果。BitNet明显优于最先进的量化方法。随着模型规模的扩大,成本节约变得更加显著,同时实现与FP16训练的模型的竞争性能。 介绍大多数现有的大型语言模型的量化方法都是训练后的。它们简单且易于应用,因为它不需要对训练管道进行任何更改或重新训练模型。然而,它将导致更显著的精度损失,特别是当精度较低时,因为模型在训练过程中没有对量化表示进行优化。 深度神经网络的另一条量化链是量化感知训练。与训练后相比,它通常会产生更好的准确性,因为该模型被训练是为了考虑到从一开始就降低的精度。此外,它允许模型继续训练或进行微调,这对于大型语言模型至关重要。量化感知训练的挑战主要在于优化,即随着精度的降低,模型越来越难以收敛。此外,量化感知训练是否遵循神经语言模型的标度规律尚不清楚。 参考资料 BitNet: Scaling 1-bit Transformers for Large Language Models","categories":[{"name":"科研","slug":"科研","permalink":"http://example.com/categories/%E7%A7%91%E7%A0%94/"},{"name":"论文阅读","slug":"科研/论文阅读","permalink":"http://example.com/categories/%E7%A7%91%E7%A0%94/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/"}],"tags":[{"name":"量化","slug":"量化","permalink":"http://example.com/tags/%E9%87%8F%E5%8C%96/"}]},{"title":"论文阅读:A_Survey_of_Quantization_Methods_for_Efficient_Neural_Network_Inference","slug":"科研/论文阅读/论文阅读~A_Survey_of_Quantization_Methods_for_Efficient_Neural_Network_Inference","date":"2023-10-23T12:10:11.000Z","updated":"2023-11-20T13:58:57.905Z","comments":true,"path":"2023/10/23/科研/论文阅读/论文阅读~A_Survey_of_Quantization_Methods_for_Efficient_Neural_Network_Inference/","link":"","permalink":"http://example.com/2023/10/23/%E7%A7%91%E7%A0%94/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB~A_Survey_of_Quantization_Methods_for_Efficient_Neural_Network_Inference/","excerpt":"","text":"论文地址:A Survey of Quantization Methods for Efficient Neural Network Inference 摘要这篇论文是关于模型量化方向的综述,介绍了量化相关领域的研究。 提到了量化的好处: 加快模型的推理过程 减少模型的存储开销 可以部署到特定设备(比如有的设备只能进行整型运算) 介绍过去模型的能力有了巨大的提升,其中一个原因就是模型参数的增加,但这也为模型的部署提升了难度。 过去几年关于这方面的尝试有如下几种: 设计高效的神经网络模型架构,包括微观结构和宏观结构 神经网络软件和硬件协同设计 剪枝,减去对模型影响小的参数,分为结构化剪枝(删去部分参数)和非结构化剪枝(删去部分结构,相当于参数按组删去),两个方法各有优劣 知识蒸馏,用“教师”模型训练“学生”模型,可与前面方法结合 量化:分为训练中量化和推理量化 量化和神经科学的发展 这里很多次提到了AutoML和NAS技术调整网络结构 量化历史量化,作为一种从大的(通常是连续的)集合中的输入值映射到小的(通常是有限的)集合中的输出值的方法,具有很长的历史。早在1897年就有微积分相关工作从事量化研究,同时,量化在信号处理中也非常重要。 香农在信息学和信号处理的研究过程中也针对量化进行过研究。同时,量化在连续数学量的数值求解中研究过。一些问题的良好解法可能由于数字量化会导致巨大误差,从而引出了算法数值稳定性的概念。 神经网络的发展给量化带来了机遇。神经网络的计算是计算密集型任务且目前很多模型都过度参数化。很多问题的解决都是基于一个某种误差度量,因此量化可能会增大误差,但同时也会增加模型的鲁棒性。 量化的基本概念问题设置和符号在不失一般性的情况下,让我们关注监督学习问题,即最小化下面所示的损失函数。 $$L(\\theta)=\\frac{1}{N} \\sum^{N}_{i=1}l(x_i,y_i;\\theta)$$ (x,y)是输入数据和对应的标签,$ l(x_i,y_i;\\theta)$是损失函数,N是数据数目 同时让我们把第$i$层的输入隐藏激活表示为$h_i$,输出隐藏激活表示为$a_i$,我们假设浮点格式存储的模型参数为$\\theta$. 均匀量化 均匀量化和非均匀量化 均匀量化的一个常用的函数是 $$Q(r)=Int(\\frac{r}{S})-Z$$ $Q$是压缩函数,$r$是实数类型的输入,$S$是实数类型的比例因子,$Z$是整数零点,$Int$函数通过舍入操作把实数映射到整数 去量化操作 $$Q(\\tilde{r})=S(Q(r)+Z)$$ 由于舍入操作$\\tilde{r}$和$r$不会严格相等 对称和非对称量化 对称和非对称量化 确定放缩因子$S$的式子为 $$S=\\frac{\\beta-\\alpha}{2^{b}-1}$$ $[\\alpha,\\beta]$代表剪切范围,$b$代表量化位宽. 确定$[\\alpha,\\beta]$的两个方式: $\\alpha=r_{min},\\beta=r_{max}$ $-\\alpha=\\beta=max(|r_{min}|,|r_{max}|)$ 利用实数的最大最小位选定裁剪范围可能会容易被异常数据影响,从而增加不必要的范围.解决这个问题的一种方法是使用百分位数,另一种方法是选择$α$和$β$,以最小化真实值和量化值之间的KL散度(即信息损失).也有学者对不同的量化范围选取范围方法进行了评估. 确定$S$的两个方式: $\\frac{2max(|r|)}{2^n-1}$ $\\frac{max(|r|)}{2^{n-1}-1}$ 对称量化使用广泛,因为可以把零点降为0,减少计算成本并且实现更加简单;非对称量化对于范围可能是倾斜的和不对称的情况表现会更加优秀. 非对称激活中的偏移而占据的交叉项是一个静态数据独立项并且可以被偏差吸收(或用于初始化累加器). 范围校准算法:静态与动态量化 动态量化:运行期间计算量化参数,高精度,高开销 静态量化:量化参数预先确定,推理期间为静态,低开销,低精度 量化粒度 分层量化:通过一整个层的数值来计算量化参数,实现简单,精度次优 分组量化:把每一层的多个通道进行分组量化,有助于解决单个通道、激活分布离散的情况,但是计算开销会增加 分通道量化:每一层的每个通道进行量化,更好的精度,更高的计算成本 分卷积核(滤波器)量化:输入通道为$n$,输出通道为$m$,那么应该会有$n*m$个卷积核,根据卷积核量化会有更高的精度 总结(量化粒度)。通道量化是目前用于量化卷积核的标准方法。它使从业者能够以可忽略不计的开销来调整每个单独的内核的剪切范围。相比之下,子信道量化可能会导致巨大的开销,而且目前还不是标准的选择。 非均匀量化量化步骤和量化水平被允许是非均匀间隔的 $$Q(r)=X_i, \\quad if\\quad r \\in [r_i,r_{i+1}]$$ 非均匀量化对于固定的位宽,可以获得更高的精度典型的有 钟型分布 对数分布 二进制码,把一个向量拆成多个基向量的和,每个基向量的每个维度的值的绝对值为1 很多把量化问题转化为优化问题,减少原始张量r和量化后张量Q(r)的差异 $$\\underset{Q}{min}||Q(r)-r||$$ 此外,量化器本身也可以和模型参数一起学习,称之为可学习的量化器还有一些工作使用聚类来减少量化损失 非均匀量化能更好的捕获信息,但是计算成本更高,因此目前主流的还是均匀量化 微调方法量化后需要对参数进行微调,有两种方式: 量化感知训练QAT 训练后量化PTQ 左边是QAT,右边是PTQ QATQAT一种方法展示反向传播方法有: STE 随机神经元 组合优化 目标传播 Gumbelsoftmax 正则化算子来强制执行要量化的权重(量化过程没有不可微分算符) 也可以考虑量化感知训练的过程种学习量化参数 PTQ由于PTQ不需要训练,所以对数据集的依赖比较低,当然,精度也会下降 因此,PTQ的研究重点都在于减轻PTQ的精度下降: ACIQ 解析地计算了PTQ的最佳剪切范围和通道级位宽设置 OMSE方法在激活时去除信道级量化,并提出通过优化量化张量与相应的浮点张量之间的L2距离来进行PTQ 一种离群值信道分裂(OCS)方法,该方法将包含离群值的信道重复和减半,缓解离群值对PTQ的不利影响 AdaRound表明,简单的圆到最近的量化方法(round-to-nearest)可以反直觉地得到次优解,并且提出了一种自适应四舍五入的方法 AdaQuant提出了一种更通用的方法,允许量化权值根据需要进行变化。 在PTQ中,所有的权值和激活量化参数都是不需要再训练而确定的。因此,PTQ是一种非常快速的神经网络模型量化方法。然而,与QAT相比,这往往以较低的准确性为代价。 Zero-shot Quantization(ZSQ)PTQ的极端场景,量化过程中不使用数据 Level 1: 没有数据且没有微调 (ZSQ + PTQ). Level 2: 没有数据但需要微调 (ZSQ +QAT). ZSQ中一个流行的研究分支是生成与类似于真实数据的合成数据,从中训练目标预先训练的模型。 随机量化在推理过程中,量化方案总是确定的,小的权重更新可能不会导致任何权重变化,因为舍入操作可能总是返回相同的权重。然而,启用一个随机舍入可能为神经网络提供一个随机的机会,从而更新其参数。 比如,在有的论文里面,INT操作定义为 $$INT(x)=\\begin{cases}\\lfloor x \\rfloor ,with \\quad probability \\quad \\lceil x \\rceil-x\\\\lceil x \\rceil ,with \\quad probability \\quad x-\\lfloor x \\rfloor\\\\end{cases}$$ 有的会选择在量化的适合选择随机从量化参数权重子集里选一个进行量化运算 参考资料 A Survey of Quantization Methods for Efficient Neural Network Inference","categories":[{"name":"科研","slug":"科研","permalink":"http://example.com/categories/%E7%A7%91%E7%A0%94/"},{"name":"论文阅读","slug":"科研/论文阅读","permalink":"http://example.com/categories/%E7%A7%91%E7%A0%94/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/"}],"tags":[{"name":"量化","slug":"量化","permalink":"http://example.com/tags/%E9%87%8F%E5%8C%96/"}]},{"title":"Welcome to Lacia's Wiki and Blog","slug":"index","date":"2023-10-18T13:45:35.655Z","updated":"2023-12-01T13:14:22.244Z","comments":true,"path":"2023/10/18/index/","link":"","permalink":"http://example.com/2023/10/18/index/","excerpt":"","text":"这是lacia的个人Wiki和Blog站点,主要是把知识系统的罗列出来以及存放一些特殊bug的处理,当然也会更一些游戏或者二次元相关东西,也希望在成长的过程中可以认识许多志同道合的人。 本人一直认为互联网的开源是社会发展的重要原因之一,因为开源使得技术知识和解决问题的经验可以被记录和传承下去,很多时候在需要的时候可以被人们所发掘。 同时,也希望自己可以时刻铭记下面几句话: 思维要有条理 不要让思维懈怠 人要不断革新自己 做行动的巨人,即知行合一 要避免“心散”,即空间上不集中,在同一时刻不能集中于一个事物 要避免“心乱”,即时间上不集中,在一段时间内不停波动无法集中心气","categories":[],"tags":[]},{"title":"Hexo+Github搭建个人Wiki风格博客","slug":"SmallProjects/博客搭建/Hexo+Github搭建个人Wiki风格博客","date":"2023-10-18T08:12:44.000Z","updated":"2023-10-19T14:22:36.405Z","comments":true,"path":"2023/10/18/SmallProjects/博客搭建/Hexo+Github搭建个人Wiki风格博客/","link":"","permalink":"http://example.com/2023/10/18/SmallProjects/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/Hexo+Github%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BAWiki%E9%A3%8E%E6%A0%BC%E5%8D%9A%E5%AE%A2/","excerpt":"","text":"介绍以前一直不理解更新博客的用处,后来发现记录一些学到的东西和处理问题的经验对个人还是互联网都是有促进作用的(希望不是在生产互联网垃圾)。 所以本文会介绍一下个人搭建这个博客的过程。 博客风格 简洁(本来想弄点二次元风格的,但是博客还是减少点无用东西吧) 多级分类:多级分类可以帮助来快速浏览学过的知识点 标签:标签还是比较重要的,可以实习对相关博客的快速定位 主题选择基于上述的需求,最终选择了Wikitten作为自己的博客主题 顺便放一下这个大佬的相关链接: Wiki地址:http://wiki.zthxxx.me/ Wikitten主题地址:https://github.com/zthxxx/hexo-theme-Wikitten/ 环境搭建参考地址:使用 Hexo+GitHub 搭建个人免费博客教程(小白向) - 知乎 (zhihu.com) 1.Github创建项目并取名为 用户名.github.io 2.使用 npm 一键安装 Hexo 博客程序 1npm install -g hexo-cli 使用npm安装package.json里面的依赖 1npm install 安装用于部署的包hexo-deployer-git 1npm install hexo-deployer-git --save 修改_config.yml文件末尾的Deployment部分 1234deploy: type: git repository: git@github.com:用户名/用户名.github.io.git branch: master Hexo常用命令1234hexo clean #清除生成的网页文件hexo g #生成静态网页hexo s #本地运行博客hexo d #将网页文件推送至远程服务器 Hexo常用文件夹 文件夹 备注 node_modules 依赖文件 .deploy_git 推送到远程的文件 public 生成的网页文件 themes 主题文件夹 scaffolds 博客模板文件夹 source 博客源文件 主题安装Wikitten主题地址:https://github.com/zthxxx/hexo-theme-Wikitten/里面提供了双语详细的安装步骤,笔者使用的版本是 5b0d493 注意:里面有个可选步骤 配置mathjax渲染,笔者发现进行这个步骤后会出现生成网页文件失败的情况,跳过即可,并且暂时没发现有什么问题 评论系统giscus由于不知名的原因,Gitment和Gitalk无法使用,选择了giscus来替代,参考Hexo静态博客使用giscus评论系统教程 1.打开自己的GitHub,选择博客所在仓库或可新建一个仓库 确保仓库是公开的(新建的时候选择 private或者在仓库的 Settings - General,选择 change visibility - change to public) 确保仓库开启了 Discussions(在仓库的 Settings - General,勾选 Discussions) 确保安装了 giscus app 2.打开官方配置页面giscus,生成代码 语言 仓库:填写格式:你的用户名/你的仓库名 页面 与 discussion 映射关系:由于本博客会分级,所以选择路径pathname Discussion分类:General 特性:按个人喜好即可,本博客加载了:启用主贴上的反应,将评论框放在评论上方,懒加载评论 主题:选择与博客风格一致的主题 3.修改主题 _config.yml在文件末尾添加 12giscus: enable: true 方便以后直接从配置文件开关评论区 4.粘贴代码网页会自动生成代码,复制粘贴到网页模板文件即可不同主题的模板文件位置可能不同,本主题在 themes/Wikitten/layout/_partial/article.ejs添加代码,代码添加位置用 footer元素定位 123456789101112131415161718192021222324252627282930<% /* 其他代码 */ %><% if (theme.gitalk.enable) { %><script src="https://giscus.app/client.js" data-repo="bg51717/Hexo-Blogs-comments" data-repo-id="*********" data-category="General" data-category-id="*********" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="top" data-theme="light" data-lang="zh-CN" data-loading="lazy" crossorigin="anonymous" async></script><% } %> <footer class="article-footer"> </footer><% /* 其他代码 */ %> 常见QA1.修改配置文件应该修改站点的 _config.yml 还是主题的 _config.yml?具体使用哪个,要看主题的源代码,如果是 config.xxx那就是用的根目录配置文件,如果是 theme.xxx那就用的是主题目录的配置文件。 2.怎么让自己的博客可以被常用搜索引擎搜索到?很多搜索引擎可以在搜索框里用site:网址来判断是否被收录Google1.打开Google搜索,搜索“Google Search Console”2.根据提示登录你的Google账号3.选择资源类型4.选择验证方式(本博客用的是HTML标记,把对应代码添加到主题文件里面,本主题是themes/Wikitten/layout/common/head.ejs)5.在Google Search Console后台添加站点地图 参考资料 使用 Hexo+GitHub 搭建个人免费博客教程(小白向) Hexo 的个人 Wiki 主题 - Wikitten 超详细Hexo+Github博客搭建小白教程 Hexo静态博客使用giscus评论系统教程 Hexo官方文档","categories":[{"name":"SmallProjects","slug":"SmallProjects","permalink":"http://example.com/categories/SmallProjects/"},{"name":"博客搭建","slug":"博客搭建","permalink":"http://example.com/categories/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"}],"tags":[{"name":"博客","slug":"博客","permalink":"http://example.com/tags/%E5%8D%9A%E5%AE%A2/"},{"name":"Hexo","slug":"Hexo","permalink":"http://example.com/tags/Hexo/"},{"name":"Wiki","slug":"Wiki","permalink":"http://example.com/tags/Wiki/"}]}],"categories":[{"name":"AI实战","slug":"AI实战","permalink":"http://example.com/categories/AI%E5%AE%9E%E6%88%98/"},{"name":"Kaggle","slug":"AI实战/Kaggle","permalink":"http://example.com/categories/AI%E5%AE%9E%E6%88%98/Kaggle/"},{"name":"工具","slug":"工具","permalink":"http://example.com/categories/%E5%B7%A5%E5%85%B7/"},{"name":"科研","slug":"科研","permalink":"http://example.com/categories/%E7%A7%91%E7%A0%94/"},{"name":"论文阅读","slug":"科研/论文阅读","permalink":"http://example.com/categories/%E7%A7%91%E7%A0%94/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/"},{"name":"SmallProjects","slug":"SmallProjects","permalink":"http://example.com/categories/SmallProjects/"},{"name":"博客搭建","slug":"博客搭建","permalink":"http://example.com/categories/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"}],"tags":[{"name":"Kaggle","slug":"Kaggle","permalink":"http://example.com/tags/Kaggle/"},{"name":"深度学习","slug":"深度学习","permalink":"http://example.com/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"},{"name":"机器学习","slug":"机器学习","permalink":"http://example.com/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"},{"name":"数据处理","slug":"数据处理","permalink":"http://example.com/tags/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/"},{"name":"工具","slug":"工具","permalink":"http://example.com/tags/%E5%B7%A5%E5%85%B7/"},{"name":"文献管理","slug":"文献管理","permalink":"http://example.com/tags/%E6%96%87%E7%8C%AE%E7%AE%A1%E7%90%86/"},{"name":"量化","slug":"量化","permalink":"http://example.com/tags/%E9%87%8F%E5%8C%96/"},{"name":"博客","slug":"博客","permalink":"http://example.com/tags/%E5%8D%9A%E5%AE%A2/"},{"name":"Hexo","slug":"Hexo","permalink":"http://example.com/tags/Hexo/"},{"name":"Wiki","slug":"Wiki","permalink":"http://example.com/tags/Wiki/"}]} \ No newline at end of file diff --git a/index.html b/index.html index 78f8d121..a1db829a 100644 --- a/index.html +++ b/index.html @@ -175,6 +175,24 @@

    + +
  • + + +   + 工具 + + +
  • + +
  • + + +   + 科研 + + +
  • +
  • Welcome to Lacia's Wiki and Blog
  • - - - + + + + -