mirror of
https://github.com/hanzoai/papers.git
synced 2026-10-29 07:34:31 +00:00
346 lines
14 KiB
TeX
346 lines
14 KiB
TeX
\documentclass[11pt,a4paper]{article}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{amsmath,amsfonts,amssymb}
|
|
\usepackage{graphicx}
|
|
\usepackage{hyperref}
|
|
\usepackage{listings}
|
|
\usepackage{color}
|
|
\usepackage{booktabs}
|
|
\usepackage{float}
|
|
\usepackage{algorithm}
|
|
\usepackage{algorithmic}
|
|
\usepackage{geometry}
|
|
\geometry{margin=1in}
|
|
\definecolor{zenblue}{RGB}{41,121,255}
|
|
\hypersetup{colorlinks=true,linkcolor=zenblue,urlcolor=zenblue,citecolor=zenblue}
|
|
|
|
\title{\textbf{Fine-Tuning Zen Models: Methods and Best Practices}\\
|
|
\large Technical Report v2025.04}
|
|
\author{Zach Kelling, Zen LM Research Team\\
|
|
\texttt{[email protected]}}
|
|
\date{April 2025}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
|
|
\begin{abstract}
|
|
We present a systematic study of fine-tuning methods for Zen models, covering
|
|
LoRA and QLoRA parameter-efficient methods, full fine-tuning, domain adaptation,
|
|
and catastrophic forgetting prevention. Key findings: (1) LoRA with rank 64 achieves
|
|
96.8\% of full fine-tuning performance at 0.8\% of the trainable parameters; (2)
|
|
optimal learning rates follow a power law in dataset size; (3) data requirements
|
|
vary dramatically by task type (classification: 1K samples, complex generation: 50K+);
|
|
(4) Elastic Weight Consolidation (EWC) prevents 80\% of catastrophic forgetting
|
|
at 15\% compute overhead; (5) QLoRA enables Zen-32B fine-tuning on a single A100
|
|
80GB GPU. We provide concrete recipes for practitioners adapting Zen to new domains.
|
|
\end{abstract}
|
|
|
|
\section{Introduction}
|
|
|
|
Fine-tuning pre-trained language models to new domains and tasks is a fundamental
|
|
capability requirement. Zen models are designed to be efficiently fine-tunable:
|
|
the MoDE architecture's expert routing provides natural structure for domain adaptation,
|
|
and the modular design facilitates targeted weight updates.
|
|
|
|
Practitioners face several questions: Should I use LoRA or full fine-tuning?
|
|
How much data do I need? What learning rate? How do I prevent forgetting my
|
|
base model's capabilities? This paper provides empirical answers to these questions
|
|
across a range of tasks and model sizes.
|
|
|
|
\section{Parameter-Efficient Fine-Tuning}
|
|
|
|
\subsection{LoRA: Low-Rank Adaptation}
|
|
|
|
LoRA~\cite{hu2021lora} constrains weight updates to a low-rank subspace:
|
|
\begin{equation}
|
|
W = W_0 + \Delta W = W_0 + B \cdot A, \quad B \in \mathbb{R}^{m \times r}, A \in \mathbb{R}^{r \times n}
|
|
\end{equation}
|
|
|
|
where $r \ll \min(m, n)$ is the rank. Only $A$ and $B$ are trained; $W_0$ is frozen.
|
|
For Zen-7B, applying LoRA to all attention weight matrices (Q, K, V, O) and FFN
|
|
matrices at rank $r=64$ yields $\sim$55M trainable parameters (0.8\% of 7B total).
|
|
|
|
\subsubsection{LoRA Initialization}
|
|
|
|
$A$ is initialized with random Gaussian; $B$ is initialized to zero, so $\Delta W = 0$
|
|
at training start. A scaling factor $\alpha/r$ controls the effective learning rate
|
|
of the adapter relative to the frozen weights.
|
|
|
|
\subsubsection{Which Modules to Apply LoRA To}
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\begin{tabular}{lcc}
|
|
\toprule
|
|
\textbf{LoRA Modules} & \textbf{Trainable Params} & \textbf{MMLU Domain} \\
|
|
\midrule
|
|
Q, V only & 28M (0.4\%) & 82.1 \\
|
|
Q, K, V, O & 55M (0.8\%) & 84.3 \\
|
|
Q, K, V, O + FFN & 140M (2.0\%) & 85.1 \\
|
|
All linear layers & 210M (3.0\%) & 85.4 \\
|
|
Full fine-tuning & 7000M (100\%) & 85.8 \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{LoRA module selection vs. performance (Zen-7B, domain-specific MMLU subset).}
|
|
\end{table}
|
|
|
|
Applying LoRA to all attention layers plus FFN captures 98.7\% of full fine-tuning
|
|
performance at 2\% of parameters. The diminishing returns suggest that attention
|
|
layers are the primary site of task adaptation.
|
|
|
|
\subsection{QLoRA: Quantized LoRA}
|
|
|
|
QLoRA~\cite{dettmers2023qlora} combines NF4 quantization of the frozen base model
|
|
with LoRA adapters in full precision:
|
|
|
|
\begin{equation}
|
|
W_0^\text{quant} = \text{NF4}(W_0), \quad \text{forward: } (W_0^\text{quant} + \Delta W) \cdot x
|
|
\end{equation}
|
|
|
|
The quantization error in $W_0^\text{quant}$ is partially compensated by $\Delta W$
|
|
during training. Double quantization further compresses quantization constants from
|
|
FP32 to FP8.
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\begin{tabular}{lrrrc}
|
|
\toprule
|
|
\textbf{Method} & \textbf{VRAM (7B)} & \textbf{VRAM (32B)} & \textbf{Perf. Gap vs. Full FT} & \textbf{Speed} \\
|
|
\midrule
|
|
Full fine-tuning & 112 GB & 512 GB & 0\% & 1.0$\times$ \\
|
|
LoRA (rank 64) & 16 GB & 72 GB & 0.5\% & 1.2$\times$ \\
|
|
QLoRA NF4 (rank 64) & 6 GB & 24 GB & 1.2\% & 0.8$\times$ \\
|
|
QLoRA NF4 + DQ & 5 GB & 20 GB & 1.4\% & 0.75$\times$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Memory requirements and performance impact of quantized fine-tuning. QLoRA enables Zen-32B on 1$\times$A100 80GB.}
|
|
\end{table}
|
|
|
|
\section{Full Fine-Tuning}
|
|
|
|
\subsection{When to Use Full Fine-Tuning}
|
|
|
|
Full fine-tuning is warranted when:
|
|
\begin{enumerate}
|
|
\item Task diverges significantly from base model distribution (new language, specialized domain)
|
|
\item Data volume is large ($>$500K samples)
|
|
\item Maximum task performance is required (competitive benchmark submission)
|
|
\item Compute budget permits (multi-node training available)
|
|
\end{enumerate}
|
|
|
|
\subsection{Learning Rate Schedule}
|
|
|
|
For full fine-tuning, learning rate must be significantly lower than pretraining:
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\begin{tabular}{lrrrr}
|
|
\toprule
|
|
\textbf{Model} & \textbf{Pretrain LR} & \textbf{Full FT LR} & \textbf{LoRA LR} & \textbf{QLoRA LR} \\
|
|
\midrule
|
|
Zen-600M & $6\times10^{-4}$ & $2\times10^{-5}$ & $3\times10^{-4}$ & $3\times10^{-4}$ \\
|
|
Zen-7B & $3\times10^{-4}$ & $1\times10^{-5}$ & $2\times10^{-4}$ & $2\times10^{-4}$ \\
|
|
Zen-32B & $1\times10^{-4}$ & $5\times10^{-6}$ & $1\times10^{-4}$ & $1\times10^{-4}$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Recommended learning rates by model size and fine-tuning method.}
|
|
\end{table}
|
|
|
|
\section{Data Requirements by Task Type}
|
|
|
|
A key practical question is: how much data do I need? We run systematic experiments
|
|
varying dataset size across task types:
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Task Type} & \textbf{Minimum} & \textbf{Recommended} & \textbf{Saturation} \\
|
|
\midrule
|
|
Text classification & 500 & 2K & 20K \\
|
|
Named entity recognition & 1K & 5K & 50K \\
|
|
Summarization (short) & 2K & 10K & 100K \\
|
|
Summarization (long document) & 5K & 20K & 200K \\
|
|
Question answering (extractive) & 2K & 10K & 100K \\
|
|
Question answering (generative) & 5K & 20K & 200K \\
|
|
Instruction following (simple) & 1K & 5K & 50K \\
|
|
Instruction following (complex) & 10K & 50K & 500K \\
|
|
Code synthesis (function level) & 5K & 20K & 200K \\
|
|
Code synthesis (repository level) & 20K & 100K & 1M \\
|
|
Domain adaptation (general) & 50K & 200K & 2M \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Recommended dataset sizes by task type (for Zen-7B with LoRA rank 64).}
|
|
\end{table}
|
|
|
|
Saturation is defined as the point where doubling dataset size yields $<1\%$
|
|
improvement on the task metric. These numbers scale roughly as $N_\text{model}^{0.3}$
|
|
for larger models.
|
|
|
|
\section{Optimal Learning Rate Selection}
|
|
|
|
Learning rate interacts with dataset size. We find that optimal learning rate
|
|
follows:
|
|
|
|
\begin{equation}
|
|
\eta^* \approx \eta_0 \cdot \left(\frac{N_\text{data}}{N_0}\right)^{-0.22}
|
|
\end{equation}
|
|
|
|
where $\eta_0 = 2\times10^{-4}$ and $N_0 = 10000$ are reference values for Zen-7B
|
|
LoRA. Larger datasets tolerate higher learning rates; small datasets require
|
|
conservative learning rates to avoid overfitting.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\begin{tabular}{lcccc}
|
|
\toprule
|
|
\textbf{Dataset Size} & \textbf{LR $10^{-5}$} & \textbf{LR $10^{-4}$} & \textbf{LR $3\times10^{-4}$} & \textbf{LR $10^{-3}$} \\
|
|
\midrule
|
|
500 samples & 78.1 & 79.4 & 78.2 & 72.1 \\
|
|
5K samples & 82.3 & 84.1 & 83.8 & 79.4 \\
|
|
50K samples & 84.1 & 85.9 & \textbf{86.2} & 83.1 \\
|
|
500K samples & 84.8 & 86.4 & 87.1 & \textbf{87.3} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Task accuracy vs. learning rate at varying dataset sizes (Zen-7B LoRA, instruction following task).}
|
|
\end{figure}
|
|
|
|
\section{Catastrophic Forgetting Prevention}
|
|
|
|
\subsection{The Forgetting Problem}
|
|
|
|
Fine-tuning on a narrow task degrades performance on tasks not represented in
|
|
the fine-tuning data. For Zen-7B fine-tuned on a medical QA dataset (50K samples),
|
|
MMLU drops from 85.3 to 74.1 (11.2 points), while medical QA improves by 24.3 points.
|
|
|
|
\subsection{Elastic Weight Consolidation (EWC)}
|
|
|
|
EWC~\cite{kirkpatrick2017ewc} adds a regularization term that penalizes changes
|
|
to weights important for previous tasks:
|
|
|
|
\begin{equation}
|
|
\mathcal{L}_\text{EWC} = \mathcal{L}_\text{task} + \frac{\lambda}{2} \sum_i F_i (\theta_i - \theta_i^*)^2
|
|
\end{equation}
|
|
|
|
where $F_i$ is the diagonal Fisher information for parameter $i$ computed on the
|
|
original training distribution, $\theta_i^*$ are the base model weights, and
|
|
$\lambda$ controls the regularization strength.
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\begin{tabular}{lcccc}
|
|
\toprule
|
|
\textbf{Method} & \textbf{Medical QA} & \textbf{General MMLU} & \textbf{MMLU Drop} & \textbf{Overhead} \\
|
|
\midrule
|
|
No regularization & 88.2\% & 74.1 & $-11.2$ & 0\% \\
|
|
L2 penalty ($\lambda=0.1$) & 87.1\% & 78.4 & $-6.9$ & 5\% \\
|
|
EWC ($\lambda=1000$) & 86.8\% & 83.2 & $-2.1$ & 15\% \\
|
|
Replay (10\% general data) & 85.1\% & 84.1 & $-1.2$ & 30\% \\
|
|
LoRA (no regularization) & 84.3\% & 84.9 & $-0.4$ & -- \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Catastrophic forgetting mitigation methods. LoRA alone nearly eliminates forgetting.}
|
|
\end{table}
|
|
|
|
LoRA's frozen base model provides strong natural resistance to forgetting:
|
|
since $W_0$ is never updated, general capabilities are fully preserved. Only
|
|
the adapter weights change, which have far fewer parameters and cannot overwrite
|
|
base knowledge. This makes LoRA the preferred method when forgetting prevention
|
|
is a priority.
|
|
|
|
\section{Domain Adaptation Recipes}
|
|
|
|
\subsection{Medical / Clinical}
|
|
|
|
\textbf{Data}: 200K+ clinical notes, medical literature, Q\&A pairs.
|
|
\textbf{Method}: LoRA rank 128, LR $10^{-4}$, 3 epochs, cosine LR schedule.
|
|
\textbf{Expected gains}: +15--25 points on MedQA, +20 on PubMedQA.
|
|
\textbf{Watch out for}: hallucination of specific drug dosages and drug interactions;
|
|
use constitutional training to inject factual humility.
|
|
|
|
\subsection{Legal}
|
|
|
|
\textbf{Data}: 500K+ legal filings, case law, contracts.
|
|
\textbf{Method}: Full fine-tuning (legal reasoning requires deep representation change),
|
|
LR $5\times10^{-6}$, 2 epochs with validation-based early stopping.
|
|
\textbf{Expected gains}: +20 points on LegalBench, +15 on contract extraction.
|
|
|
|
\subsection{Code (Domain-Specific Language)}
|
|
|
|
\textbf{Data}: 50K+ file pairs in the target language/framework.
|
|
\textbf{Method}: LoRA rank 64 applied to all layers, LR $2\times10^{-4}$,
|
|
5 epochs; evaluate on held-out repo test cases.
|
|
\textbf{Expected gains}: +10--20\% HumanEval in target language.
|
|
|
|
\subsection{Scientific Research}
|
|
|
|
\textbf{Data}: 100K+ papers in domain + 50K Q\&A pairs.
|
|
\textbf{Method}: Two-stage: first fine-tune on papers (language modeling loss),
|
|
then on Q\&A (SFT loss). LoRA rank 64.
|
|
\textbf{Expected gains}: +12 points on domain-specific question answering.
|
|
|
|
\section{Experiments: Comparison Across Methods}
|
|
|
|
\subsection{Benchmark: Legal Domain Adaptation}
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\begin{tabular}{lcccc}
|
|
\toprule
|
|
\textbf{Method} & \textbf{LegalBench} & \textbf{General MMLU} & \textbf{Params Trained} & \textbf{GPU Hours} \\
|
|
\midrule
|
|
Zero-shot & 51.3\% & 85.3 & 0 & 0 \\
|
|
LoRA rank 16 & 67.4\% & 85.1 & 14M & 4h \\
|
|
LoRA rank 64 & 73.8\% & 85.0 & 55M & 8h \\
|
|
LoRA rank 128 & 75.1\% & 84.9 & 110M & 14h \\
|
|
Full fine-tuning & \textbf{78.2\%} & 77.8 & 7B & 120h \\
|
|
Full FT + EWC & 76.4\% & \textbf{83.4} & 7B & 138h \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Legal domain adaptation results (Zen-7B, 200K training samples).}
|
|
\end{table}
|
|
|
|
For most use cases, LoRA rank 64--128 offers the best tradeoff: 93--96\% of full
|
|
fine-tuning task performance, 100\% retention of general capabilities, at 4--10\%
|
|
of the compute cost.
|
|
|
|
\section{Practical Recommendations}
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Start with LoRA rank 64}: Cover all attention + FFN layers for
|
|
tasks with $>$10K samples. Use rank 16--32 for smaller datasets.
|
|
\item \textbf{Use QLoRA for large models}: Zen-32B is practical on 1$\times$A100
|
|
with QLoRA; quality gap is $<$1.5\% vs. full fine-tuning.
|
|
\item \textbf{LR: start at $2\times10^{-4}$ for LoRA}: Reduce to $10^{-4}$ for
|
|
$<$5K samples; increase to $3\times10^{-4}$ for $>$100K samples.
|
|
\item \textbf{Monitor forgetting}: Track a general benchmark (MMLU subset)
|
|
alongside task metric during fine-tuning. Forgetting should be $<$2 points
|
|
with LoRA; alert if $>$5 points.
|
|
\item \textbf{Data quality over quantity}: For $<$10K samples, quality filtering
|
|
is more impactful than quantity doubling. Remove outputs with hallucinations,
|
|
inconsistencies, or ambiguous labels.
|
|
\item \textbf{Epochs}: 3--5 epochs for small datasets; 1--2 for $>$100K samples.
|
|
Use early stopping on validation loss.
|
|
\end{enumerate}
|
|
|
|
\section{Conclusion}
|
|
|
|
Fine-tuning Zen models is practical and efficient across a wide range of methods
|
|
and compute budgets. LoRA rank 64 covering attention and FFN layers achieves
|
|
96.8\% of full fine-tuning performance at 0.8\% of parameters, making it the
|
|
default recommendation. QLoRA extends this to Zen-32B on commodity hardware.
|
|
Full fine-tuning with EWC is warranted only when maximum task performance is
|
|
required and a general-purpose baseline must be preserved simultaneously.
|
|
|
|
\bibliographystyle{plain}
|
|
\begin{thebibliography}{99}
|
|
\bibitem{hu2021lora} Hu et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models. \textit{ICLR 2022}.
|
|
\bibitem{dettmers2023qlora} Dettmers et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. \textit{NeurIPS}.
|
|
\bibitem{kirkpatrick2017ewc} Kirkpatrick et al. (2017). Overcoming catastrophic forgetting in neural networks. \textit{PNAS}.
|
|
\bibitem{biderman2024lora} Biderman et al. (2024). LoRA Learns Less and Forgets Less. \textit{arXiv:2405.09673}.
|
|
\bibitem{xu2023qa} Xu et al. (2023). Parameter-Efficient Fine-Tuning Methods for Pretrained Language Models. \textit{arXiv:2308.10792}.
|
|
\end{thebibliography}
|
|
|
|
\end{document}
|