diff --git a/paper/latex/chapters/implementation.tex b/paper/latex/chapters/implementation.tex index 13d1792..2df5678 100644 --- a/paper/latex/chapters/implementation.tex +++ b/paper/latex/chapters/implementation.tex @@ -3,7 +3,6 @@ \section{关键技术实现} \subsection{系统架构设计} -\subsubsection{整体架构设计} 本系统采用经典的三层架构设计,分为表现层、业务逻辑层和数据访问层。 在表现层中,基于Gradio框架构建了一个用户友好的Web界面,包含7个功能模块:模型管理、模型推理、模型微调、数据集生成、数据集管理、提示词模板管理和系统设置。该界面采用响应式设计,支持流式输出和灵活的参数配置,以满足不同用户的交互需求。 @@ -12,16 +11,9 @@ 数据访问层主要负责数据的存储与管理。系统使用SQLite存储系统配置,同时采用TinyDB内存数据库管理数据集,支持JSON格式的数据导入和导出。通过这种分层设计,各层之间明确分工,不仅提升了系统的可扩展性和可维护性,还为后续的功能扩展奠定了基础。 -\subsubsection{模块划分与交互流程} -系统根据功能需求划分为多个模块,各模块之间通过清晰的交互流程协同工作,确保系统的高效运行。 +\input{figures/system_architecture.tex} -模型管理模块 是系统的核心之一,负责加载、卸载和配置大语言模型。用户可以通过该模块选择并管理不同的模型,而模型推理模块则负责处理用户输入并生成模型响应。此外,模型训练模块支持执行LoRA微调训练流程,帮助用户优化模型性能。 -数据集生成模块 的设计重点在于灵活性和效率。它支持多种文档格式输入(优先支持Markdown),提供可视化模板编辑和变量配置功能,同时支持多轮次并发生成。为了保证生成结果的可靠性,模块还内置了自动验证和转换机制。在技术实现上,使用LangChain PromptTemplate处理模板,采用异步调用提高生成效率,并通过原子操作保证数据一致性。此外,模块还提供了进度反馈和错误处理机制,进一步提升用户体验。 - -数据管理模块 涵盖了数据集生成、存储以及提示词模板管理等功能。数据集生成功能用于创建和预处理训练数据,数据集存储则通过TinyDB实现内存数据库管理,确保数据的高效存取。提示词模板管理模块负责维护对话模板和系统提示,为模型推理提供必要的上下文支持。 - -系统交互流程 从用户发起请求开始,用户通过Gradio界面与系统交互。前端模块接收用户请求后,调用对应的业务逻辑模块进行处理。业务逻辑模块根据需要访问数据存储层获取或保存数据,并将处理结果返回给前端展示。整个流程清晰且高效,确保用户能够快速获得所需的结果。 \subsection{数据库设计与实现} diff --git a/paper/latex/figures/system_architecture.tex b/paper/latex/figures/system_architecture.tex new file mode 100644 index 0000000..badc63c --- /dev/null +++ b/paper/latex/figures/system_architecture.tex @@ -0,0 +1,56 @@ +\begin{figure}[htbp] + \centering + \begin{tikzpicture}[node distance=1.5cm, auto, + block/.style={rectangle, draw, fill=white, text width=12cm, text centered, rounded corners, minimum height=1.2cm, font=\small}, + layer/.style={rectangle, draw, fill=white, text width=12cm, text centered, rounded corners, minimum height=4cm, font=\small}, + module/.style={rectangle, draw, fill=white, text width=3cm, text centered, rounded corners, minimum height=1cm, font=\small}, + arrow/.style={thick,->,>=stealth}, + title/.style={font=\bfseries\small} + ] + + % 定义三层架构 + \node[layer, fill=blue!10, text height=5cm] (presentation) at (0,0) {}; + \node[title, above=0.1cm of presentation.north west, anchor=west] {表现层}; + + \node[layer, fill=green!10, below=0.5cm of presentation] (business) {}; + \node[title, above=0.1cm of business.north west, anchor=west] {业务逻辑层}; + + \node[layer, fill=orange!10, below=0.5cm of business] (data) {}; + \node[title, above=0.1cm of data.north west, anchor=west] {数据访问层模块}; + + % 表现层模块 + \node[module, fill=blue!20] (ui1) at (-3.5, 1.5) {模型管理}; + \node[module, fill=blue!20] (ui2) at (0, 1.5) {模型推理}; + \node[module, fill=blue!20] (ui3) at (3.5, 1.5) {模型微调}; + \node[module, fill=blue!20] (ui4) at (-3.5, 0) {数据集生成}; + \node[module, fill=blue!20] (ui5) at (0, 0) {数据集管理}; + \node[module, fill=blue!20] (ui6) at (3.5, 0) {提示词模板管理}; + \node[module, fill=blue!20] (ui7) at (0, -1.5) {系统设置}; + + % 业务逻辑层模块 + \node[module, fill=green!20] (bl1) at (-3.5, -4.5) {模型训练模块\\(Unsloth/TRL)}; + \node[module, fill=green!20] (bl2) at (0, -4.5) {模型推理模块\\(流式生成)}; + \node[module, fill=green!20] (bl3) at (3.5, -4.5) {数据集生成模块\\(LangChain)}; + \node[module, fill=green!20] (bl4) at (-2, -6) {数据处理模块}; + \node[module, fill=green!20] (bl5) at (2, -6) {配置管理模块}; + + % 数据访问层模块 + \node[module, fill=orange!20] (dl1) at (-3.5, -10) {SQLite\\(系统配置)}; + \node[module, fill=orange!20] (dl2) at (0, -10) {TinyDB\\(数据集管理)}; + \node[module, fill=orange!20] (dl3) at (3.5, -10) {JSON文件\\(导入/导出)}; + + % 层间连接 + \draw[arrow] (presentation.south) -- (business.north) node[midway, right] {函数调用}; + \draw[arrow] (business.south) -- (data.north) node[midway, right] {数据操作}; + + % 添加Gradio框架标注 + \node[above=0.1cm of presentation.north east, anchor=east, font=\small\itshape] {基于Gradio框架}; + + % 添加说明 + \node[below=0.2cm of data.south, text width=12cm, text centered, font=\footnotesize] + {系统采用三层架构设计,实现了功能模块间的解耦与分层,提高了系统的可扩展性和可维护性}; + + \end{tikzpicture} + \caption{系统三层架构设计图} + \label{fig:system-architecture} +\end{figure} \ No newline at end of file diff --git a/paper/latex/main.tex b/paper/latex/main.tex index e375133..3b5cc11 100644 --- a/paper/latex/main.tex +++ b/paper/latex/main.tex @@ -48,6 +48,9 @@ \usepackage{makecell}%表格竖线连续 +\usepackage{tikz}%绘制架构图 +\usetikzlibrary{arrows.meta,positioning,shapes,fit,backgrounds,calc} + \def\I{\vrule width1.2pt} %!\I 就可以代替| 来画表格了