refactor(latex): 更新图表生成方式并优化文档结构

将图表生成方式从外部Python脚本迁移到LaTeX内部使用pgfplots绘制,以提升文档的可维护性和一致性。同时,更新了caption包的配置,移除了不再使用的caption2包,并添加了subcaption包以支持子图功能。
This commit is contained in:
carry 2025-04-30 15:21:45 +08:00
parent 9054be273a
commit 39a0ec48b1
4 changed files with 72 additions and 52 deletions

View File

@ -117,21 +117,84 @@
\label{fig:tensorboard}
\end{figure}
微调过程中,主要训练指标的变化趋势如图\ref{fig:training_metrics}所示。从图中可以观察到以下几个关键特征:
微调过程中,主要训练指标的变化趋势如图\ref{fig:training_metrics}所示,包括损失值(图\ref{fig:loss_metrics})、梯度范数(图\ref{fig:grad_norm_metrics})和学习率(图\ref{fig:learning_rate_metrics})三个关键指标。从这些中可以观察到以下几个关键特征:
\pgfplotsset{compat=1.18}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{pic/training_metrics.png}
\begin{subfigure}[b]{0.8\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[
width=\textwidth,
height=5cm,
xlabel={训练步数 (Step)},
ylabel={损失值 (Loss)},
xmin=0, xmax=7029,
ymin=0, ymax=2.5,
ymajorgrids=true,
grid style=dashed,
]
\addplot[smooth, thick, blue] table[x=Step, y=loss, col sep=comma] {./figures/training_data.csv};
\end{axis}
\end{tikzpicture}
\caption{损失值变化趋势}
\label{fig:loss_metrics}
\end{subfigure}
\begin{subfigure}[b]{0.8\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[
width=\textwidth,
height=5cm,
xlabel={训练步数 (Step)},
ylabel={梯度范数 (Grad Norm)},
xmin=0, xmax=7029,
ymin=0, ymax=1.8,
ymajorgrids=true,
grid style=dashed,
]
\addplot[smooth, thick, red] table[x=Step, y=grad_norm, col sep=comma] {./figures/training_data.csv};
\end{axis}
\end{tikzpicture}
\caption{梯度范数变化趋势}
\label{fig:grad_norm_metrics}
\end{subfigure}
\begin{subfigure}[b]{0.8\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[
width=\textwidth,
height=5cm,
xlabel={训练步数 (Step)},
ylabel={学习率 (Learning Rate)},
xmin=0, xmax=7029,
ymin=0, ymax=0.0002,
ymajorgrids=true,
grid style=dashed,
]
\addplot[smooth, thick, green!60!black] table[x=Step, y=learning_rate, col sep=comma] {./figures/training_data.csv};
\end{axis}
\end{tikzpicture}
\caption{学习率变化趋势}
\label{fig:learning_rate_metrics}
\end{subfigure}
\caption{模型微调过程中的训练指标变化趋势}
\label{fig:training_metrics}
\end{figure}
\begin{itemize}
\item \textbf{梯度范数Gradient Norm}训练初期梯度范数在0.5到1.5之间波动表明参数更新幅度较大。随着训练步数的增加梯度范数逐渐减小并在约4000步后稳定在0.1到0.5之间,这与损失函数的下降趋势一致,表明模型正在趋于收敛,参数更新的步伐减缓。
\item \textbf{损失函数Loss}:如图\ref{fig:loss_metrics}所示训练初期损失值从约2.4迅速下降。在约1000步时降至0.5以下随后继续缓慢下降。在大约5000步后损失值稳定在接近于零的水平表明模型在训练集上已经取得了很好的性能基本收敛
\item \textbf{损失函数Loss}训练初期损失值从约2.4迅速下降。在约1000步时降至0.5以下随后继续缓慢下降。在大约5000步后损失值稳定在接近于零的水平表明模型在训练集上已经取得了很好的性能基本收敛。
\item \textbf{梯度范数Gradient Norm}:如图\ref{fig:grad_norm_metrics}所示训练初期梯度范数在0.5到1.5之间波动表明参数更新幅度较大。随着训练步数的增加梯度范数逐渐减小并在约4000步后稳定在0.1到0.5之间,这与损失函数的下降趋势一致,表明模型正在趋于收敛,参数更新的步伐减缓
\item \textbf{学习率Learning Rate}学习率采用线性衰减策略从初始值约0.0002或2e-4随着训练步数的增加而稳定地线性降低直至训练结束时接近于零。这种策略有助于在训练初期快速探索解空间并在后期精细调整参数以促进模型稳定收敛。
\item \textbf{学习率Learning Rate}如图\ref{fig:learning_rate_metrics}所示,学习率采用线性衰减策略从初始值约0.0002或2e-4随着训练步数的增加而稳定地线性降低直至训练结束时接近于零。这种策略有助于在训练初期快速探索解空间并在后期精细调整参数以促进模型稳定收敛。
\item \textbf{训练效率}整个微调过程耗时约5.5小时平均每步训练时间约3秒展现了本框架在资源受限环境下的高效性。特别是在训练后期尽管学习率降低模型仍能持续优化损失值稳步下降表明LoRA微调方法的有效性。
\end{itemize}

View File

@ -3,12 +3,13 @@
\usepackage{graphicx}
\usepackage{ctex}
\usepackage{indentfirst}
\usepackage{subcaption}
%\graphicspath{{chapter/}{figures/}}
\usepackage{CJK}
\usepackage{amsmath}%数学
\usepackage{amssymb}%数学符号
%\usepackage[colorlinks,linkcolor=red]{hyperref}%超链接
\usepackage{pgfplots}
\usepackage{fancyhdr} %使用fancyhdr包自定义页眉页脚
%\pagestyle{empty}
\pagestyle{fancy}
@ -21,8 +22,8 @@
\renewcommand{\figurename}{}%将figure改为图
\usepackage[]{caption2}%去掉图片编号后的":"
\renewcommand{\captionlabeldelim}{}
\usepackage{caption}%去掉图片编号后的":"
\captionsetup{labelformat=simple, labelsep=space}
\renewcommand {\thefigure} {\thesection{}.\arabic{figure}}%图片索引该为按照章节

View File

@ -1,44 +0,0 @@
import pandas as pd
import matplotlib.pyplot as plt
# 设置全局字体大小
plt.rcParams.update({
'font.size': 16, # 全局字体大小
'axes.titlesize': 20, # 标题字体大小
'axes.labelsize': 16, # 坐标轴标签字体大小
'xtick.labelsize': 14, # x轴刻度标签字体大小
'ytick.labelsize': 14, # y轴刻度标签字体大小
'legend.fontsize': 14, # 图例字体大小
})
# 读取CSV文件
data = pd.read_csv('training_data.csv')
# 创建图表
plt.figure(figsize=(12, 12))
# 绘制梯度范数变化曲线
plt.subplot(3, 1, 1) # 修改为 3行1列的第1个
plt.plot(data['Step'], data['grad_norm'], label='Gradient Norm')
plt.xlabel('Step')
plt.ylabel('Gradient Norm')
plt.legend()
# 绘制损失值变化曲线
plt.subplot(3, 1, 2) # 修改为 3行1列的第2个
plt.plot(data['Step'], data['loss'], label='Loss', color='orange')
plt.xlabel('Step')
plt.ylabel('Loss')
plt.legend()
# 绘制学习率变化曲线
plt.subplot(3, 1, 3) # 修改为 3行1列的第3个
plt.plot(data['Step'], data['learning_rate'], label='Learning Rate', color='green')
plt.xlabel('Step')
plt.ylabel('Learning Rate')
plt.legend()
# 调整布局并保存图片
plt.tight_layout()
plt.savefig('training_metrics.png')
plt.show()