docs(latex): 添加amssymb包并更新技术章节的数学公式
在main.tex中添加amssymb包以支持数学符号,并在technology.tex中补充LoRA的数学原理公式,详细解释了低秩更新的参数减少机制。
This commit is contained in:
parent
585f470403
commit
6dbe9514fb
@ -76,7 +76,15 @@ QLoRA 引入了多项创新技术以在节省内存的同时不牺牲性能。
|
|||||||
|
|
||||||
QLoRA 的主要优势在于其能够在资源受限情况下实现高效微调。通过将预训练模型量化到 4 位并仅训练少量低秩适配器,QLoRA 显著降低了微调所需的 GPU 内存。例如,QLoRA 能够将微调一个 650 亿参数模型的平均 GPU 内存需求从超过 780GB 降低到低于 48GB,且不降低运行时或预测性能。这使得在单个消费级 GPU 上微调大型模型成为可能,从而大大降低了微调 LLM 的门槛。研究表明,使用 QLoRA 微调的 LLM 在各种任务上可以达到与全精度微调相当甚至更好的性能。
|
QLoRA 的主要优势在于其能够在资源受限情况下实现高效微调。通过将预训练模型量化到 4 位并仅训练少量低秩适配器,QLoRA 显著降低了微调所需的 GPU 内存。例如,QLoRA 能够将微调一个 650 亿参数模型的平均 GPU 内存需求从超过 780GB 降低到低于 48GB,且不降低运行时或预测性能。这使得在单个消费级 GPU 上微调大型模型成为可能,从而大大降低了微调 LLM 的门槛。研究表明,使用 QLoRA 微调的 LLM 在各种任务上可以达到与全精度微调相当甚至更好的性能。
|
||||||
|
|
||||||
低秩适配器(LoRA)是 QLoRA 的关键组成部分。LoRA 的核心思想是,大型预训练模型在适应下游任务时,其权重变化具有低秩特性。因此,LoRA 冻结原始预训练模型的权重,并在每个 Transformer 层的自注意力模块中注入两个小的低秩矩阵(A 和 B)。微调过程中仅更新这些低秩矩阵的参数,原始模型的权重保持不变。这大大减少了需要训练的参数数量,从而降低了计算成本和内存需求。LoRA 的线性设计也确保与完全微调的模型相比,不会引入额外推理延迟。QLoRA 通过结合量化和 LoRA,为在资源受限环境中高效微调大型语言模型提供了有力方法,使得研究人员和从业人员能够更容易利用和定制最先进的 LLM,推动 NLP 领域进一步发展。
|
低秩适配器(LoRA)是 QLoRA 的关键组成部分。LoRA 的核心思想是,大型预训练模型在适应下游任务时,其权重变化具有低秩特性。因此,LoRA 冻结原始预训练模型的权重,并在每个 Transformer 层的自注意力模块中注入两个小的低秩矩阵(A 和 B)。LoRA 的数学原理可以表示为:
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
W = W_0 + \Delta W = W_0 + BA
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
其中,$W_0 \in \mathbb{R}^{d \times k}$ 是预训练模型中的原始权重矩阵,$\Delta W = BA$ 是低秩更新,$B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,且秩 $r \ll \min(d, k)$。通过这种方式,原本需要训练 $d \times k$ 个参数,现在只需要训练 $r \times (d + k)$ 个参数。例如,当 $d = k = 1000$ 且 $r = 8$ 时,可训练参数数量从 $10^6$ 减少到约 $1.6 \times 10^4$,减少了约 98.4\%。
|
||||||
|
|
||||||
|
微调过程中仅更新这些低秩矩阵的参数,原始模型的权重保持不变。这大大减少了需要训练的参数数量,从而降低了计算成本和内存需求。LoRA 的线性设计也确保与完全微调的模型相比,不会引入额外推理延迟。在推理阶段,可以将低秩更新与原始权重合并:$W = W_0 + BA$,从而不增加模型的推理延迟。QLoRA 通过结合量化和 LoRA,为在资源受限环境中高效微调大型语言模型提供了有力方法,使得研究人员和从业人员能够更容易利用和定制最先进的 LLM,推动 NLP 领域进一步发展。
|
||||||
|
|
||||||
\subsection{Unsloth 算子}
|
\subsection{Unsloth 算子}
|
||||||
|
|
||||||
@ -84,7 +92,7 @@ Unsloth 是一个开源软件,旨在简化大型语言模型(LLMs)的微
|
|||||||
|
|
||||||
Unsloth 通过手动推导所有计算密集型数学步骤并编写自定义 GPU 内核来实现加速,而无需更改硬件。它支持 NVIDIA 自 2018 年以来的各种 GPU,包括 Tesla T4 到 H100,并可移植到 AMD 和英特尔 GPU。Unsloth 还与 Hugging Face 的 Transformers 库无缝集成,并支持其 TRL、Trainer 和 Seq2SeqTrainer 类。
|
Unsloth 通过手动推导所有计算密集型数学步骤并编写自定义 GPU 内核来实现加速,而无需更改硬件。它支持 NVIDIA 自 2018 年以来的各种 GPU,包括 Tesla T4 到 H100,并可移植到 AMD 和英特尔 GPU。Unsloth 还与 Hugging Face 的 Transformers 库无缝集成,并支持其 TRL、Trainer 和 Seq2SeqTrainer 类。
|
||||||
|
|
||||||
Unsloth 的主要特点和优势包括:加速微调:能够将 LLM(如 Llama、Mistral、Gemma 和 Phi)的微调速度提高 2 倍以上,某些情况下甚至高达 30 倍。降低内存使用:显著减少微调过程中 VRAM 消耗,通常可减少高达 70%-90% 的内存使用,使得在有限 GPU 资源的机器上微调更大模型成为可能。零精度损失:声称在使用 QLoRA(4 位)和 LoRA(16 位)进行微调时不会造成精度下降。广泛模型支持:支持各种流行 LLM 架构,包括 Llama(版本 1、2 和 3)、Mistral、Gemma 和 Phi-3,以及 Mixtral、MOE、Cohere 和 Mamba 等所有模型。多种训练算法支持:除标准微调外,还支持强化学习技术,如 DPO、GRPO、PPO、奖励建模和在线 DPO,以及 KTO 和 DoRA 训练算法。动态 4 位量化:引入动态 4 位量化方法,旨在提高准确性,同时仅比标准 BnB 4 位量化多使用不到 10% 的 VRAM。优化内核:所有核心操作均使用 OpenAI 的 Triton 语言编写,并具有手动反向传播引擎,提高了性能。易于使用和集成:提供易于使用的笔记本,用户可快速开始微调模型,并与 Hugging Face 生态系统无缝集成。更快推理:对其支持的所有模型实现 2 倍更快的推理速度。模型导出:微调后模型可轻松导出为 GGUF、Ollama、vLLM 和 Hugging Face 等各种格式。Windows 支持:可在 Linux 和 Windows 上运行。Unsloth 通过优化内存使用和速度,使得在资源有限环境中进行 LLM 微调和推理变得更容易、更高效,推动了 LLM 技术的更广泛应用。
|
Unsloth 的主要特点和优势包括:加速微调:能够将 LLM(如 Llama、Mistral、Gemma 和 Phi)的微调速度提高 2 倍以上,某些情况下甚至高达 30 倍。降低内存使用:显著减少微调过程中 VRAM 消耗,通常可减少高达 70\%-90\% 的内存使用,使得在有限 GPU 资源的机器上微调更大模型成为可能。零精度损失:声称在使用 QLoRA(4 位)和 LoRA(16 位)进行微调时不会造成精度下降。广泛模型支持:支持各种流行 LLM 架构,包括 Llama(版本 1、2 和 3)、Mistral、Gemma 和 Phi-3,以及 Mixtral、MOE、Cohere 和 Mamba 等所有模型。多种训练算法支持:除标准微调外,还支持强化学习技术,如 DPO、GRPO、PPO、奖励建模和在线 DPO,以及 KTO 和 DoRA 训练算法。动态 4 位量化:引入动态 4 位量化方法,旨在提高准确性,同时仅比标准 BnB 4 位量化多使用不到 10\% 的 VRAM。优化内核:所有核心操作均使用 OpenAI 的 Triton 语言编写,并具有手动反向传播引擎,提高了性能。易于使用和集成:提供易于使用的笔记本,用户可快速开始微调模型,并与 Hugging Face 生态系统无缝集成。更快推理:对其支持的所有模型实现 2 倍更快的推理速度。模型导出:微调后模型可轻松导出为 GGUF、Ollama、vLLM 和 Hugging Face 等各种格式。Windows 支持:可在 Linux 和 Windows 上运行。Unsloth 通过优化内存使用和速度,使得在资源有限环境中进行 LLM 微调和推理变得更容易、更高效,推动了 LLM 技术的更广泛应用。
|
||||||
|
|
||||||
\subsection{Gradio 框架}
|
\subsection{Gradio 框架}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
%\graphicspath{{chapter/}{figures/}}
|
%\graphicspath{{chapter/}{figures/}}
|
||||||
\usepackage{CJK}
|
\usepackage{CJK}
|
||||||
\usepackage{amsmath}%数学
|
\usepackage{amsmath}%数学
|
||||||
|
\usepackage{amssymb}%数学符号
|
||||||
%\usepackage[colorlinks,linkcolor=red]{hyperref}%超链接
|
%\usepackage[colorlinks,linkcolor=red]{hyperref}%超链接
|
||||||
|
|
||||||
\usepackage{fancyhdr} %使用fancyhdr包自定义页眉页脚
|
\usepackage{fancyhdr} %使用fancyhdr包自定义页眉页脚
|
||||||
|
Loading…
x
Reference in New Issue
Block a user