非专业人士的AI课3:LLM大语言模型项目的典型开发流程详解

2025-3-14|2026-3-14
Pavel Han
Pavel Han
date
Mar 14, 2025
slug
2025-03-14-the-basic-development-workflow-of-LLM
status
Published
tags
神经网络理论
LLM
summary
本系列文章的目标是从非AI从业者的角度出发,去尝试理解AI及其大模型在应用中的基本概念,争取通过对这些概念的深入理解和澄清,建立对大模型的工作机制流程以及应用框架方面的知识结构,从而在我们的生活和工作中更好的使用AI。
type
Post
category
AI
AI summary
本系列文章的目标是从非AI从业者的角度出发,去尝试理解AI及其大模型在应用中的基本概念,争取通过对这些概念的深入理解和澄清,建立对大模型的工作机制流程以及应用框架方面的知识结构,从而在我们的生活和工作中更好的使用AI。
本文通过对参考资料的学习,对LLM大语言模型开发流程中的各个环节进行总结和详细的解释,建立对LLM大语言模型开发的初步知识结构。
总体而言,在商业领域中进行的大模型开发而言,其主要的开发流程包括以下几个方面:
  • 项目需求分析,确定项目的目标
  • 基于项目目标进行前期的数据准备
  • 基于项目目标进行模型的设计和选型
  • 使用数据对模型进行训练
  • 部署模型到应用环境中,提供项目需求预定义的服务
  • 模型在实际应用中的运维

1. 确定项目目标

在每个与大模型相关的项目立项开发初期,首先要做的事情就是要明确项目的目标,并构建项目的系统框架。因为这涉及到后续工作流程中,针对性的进行模型架构、算法以及训练数据集等的选型。
项目的需求分析和目标制定,是大模型项目开发的起点,为后续的数据准备、模型设计\选型、模型训练提供了明确的方向和约束条件。因此在大模型项目立项之前,应该首先明确该项目需要面对的知识领域和具体要解决的问题,只有项目目标明确确定的情况下,才能选择出来合适的模型和训练数据,进而设计出高效并且成本、效益符合项目需求最大化的系统框架
下图就是参考资料1中提供的一个财务分析模型的系统设计:
notion image
  • 针对该系统的功能和性能需求,从开源模型中选择规模和成本合适的模型作为系统设计的基础。
  • 以网上收集的公开财报等相关数据为基础,将大模型作为数据集构造器,通过让其学习这些少量标注数据的内容,来自动扩充数据集,为该项目后续的训练阶段提供更多的训练样本。

2. 模型训练数据准备

该阶段的工作实际上包含两个方面,数据收集和数据预处理。
按照项目系统设计的训练所需,开发者可以从网络、公开数据集、用户生成数据、公司内部数据等途径获取训练数据。对于LLM大语言模型的训练而言,数据类型涵盖图片、文字、音频等。开发者可重点考虑开源的数据集,以及针对当前模型要解决的垂直领域问题相关的网络公开数据集。
数据预处理的环节,则需要针对文本、图像等不同的数据进行分别处理,其目的都是构建高质量数据集:
  • 针对文本数据,常用的数据处理方法一般包含低质过滤(判断和识别低质量的数据并去除)、冗余去除(从不同粒度的角度出发去掉数据中的冗余元素)、隐私消除(识别和去除数据中包含的个人/组织隐私和敏感信息)等。
  • 针对图像数据,一般采用图像去噪(降噪)、图像重采样(分辨率缩放)和图像增强(提升对比度、亮度等)等技术,以提升图像数据质量。

分词与嵌入

数据处理完成后,下一步就是要进行分词,也就是Tokenization。所谓的分词就是把文本分割成离散的、有意义的最小语言单元的过程,而这个最小的语言单元就是Token,从训练的文本变成Token的过程使用Tokenizer完成。
  • 在平时我们使用LLM大语言模型的过程中,可以清楚的看到模型的输出以一个字或者一个词的节奏按顺序吐出来,这个字或者词就是一个Token。而当我们调用API对LLM大模型进行访问的时候,费用也是基于与大模型交互的Token数量(包括用户向模型提问问题的上行Token数量和模型输出答案的下行Token数量)来进行收费的。
  • 为了方便开发者对文本进行分词处理,许多主流的开发框架将分词功能封装成Tokenizer组件或者类,供开发者调用。Tokenizer可以简化开发流程,提高代码复用性,并且确保整个过程中的一致性。因此可以从HuggingFace上下载开源的分词器进行定制化的修改。
notion image
经过以上的分词器对训练文本所执行的分词操作后,文本语句就会被分割为一个个最小的语言单元。但是这个语言单元仍然无法被大模型识别,此时还需要对每个语言单元执行一个向量化的嵌入操作(Embedding)。而嵌入操作,就是把词汇映射成数值形式的向量的过程。如此一来,模型就能够理解和处理这些向量,并基于这些数值化的特征进行计算和分析,从而实现对自然语言的深入处理和理解。
  • 分词和嵌入的这两个概念在基于大模型的RAG应用中,也需要用到,同样是把外部文件或者网络上搜索到的文本文件的内容,执行分词操作(Tokenization)以及嵌入操作(Embedding)后送入大模型进行后续处理。
notion image

3. 模型的设计和选型

基本上,所有LLM大语言模型的基础都是Transformer架构,而多模态模型中针对图像模块的处理一般则采用Visual Transformer架构。总的来说,大模型的开发、设计和优化调试是整个系统设计与实现过程中技术难度最高的部分。因此:
  • 从现实的角度来讲,小型开发团队或个人开发者在完成大多数的人工智能业务实现时,已经无须从头构建模型,而是可以根据任务所需选择开源大模型,如Deepseek、Qwen、LLaMA、ChatGLM、Alpaca等。 这种方式可以节省大量的模型设计时间,提升开发效率。
  • 而对于有较多资源和能力的团队而言,考虑自行从头开发模型,在模型构建之前,一般需要首先选择合适的深度学习框架,目前主流的深度学习框架有TensorFlow、PyTorch等。其中TensorFlow是由谷歌团队研发的开源架构,PyTorch是Meta团队研发的开源框架,而国内主流的开源框架有百度的飞桨PaddlePaddle等。然后定义模型结构,包括层次结构、参数初始化、定义损失函数、选择优化算法等。

4. 模型的训练

大模型的训练过程一般包含分词器训练、预训练和微调3个基本步骤。
预训练Pre Training:
  • 基于大型语料库对模型进行训练,目的是让大模型能够掌握基本的自然语言理解和生成能力,以及掌握丰富、广泛的知识,为后续的任务执行打好基础。
  • 在预训练阶段,从低成本渠道中获取大量无标注数据,并且把这些数据送入模型,由模型对这些数据的共性知识进行学习,形成一种对于语言的通用理解能力。
微调Fine Tuning:
  • 微调是一种在预训练语言模型的基础上使用目标任务数据进行训练的模型训练技术。
  • 在微调阶段,则是针对模型应用的知识领域和方向,使用少量相关领域的标注数据(一般成本比较高)在预训练阶段的Base Model基础上进行进一步的训练,使其适应目标领域和特定任务的应用需求。
当前,无论是在计算机视觉还是NLP领域,广泛采用了“预训练+微调”的开发范式。而一般情况下,尤其是对于中小团队而言,开发者不需要自行对模型进行完整的预训练,而是可以选择合适的开源预训练模型,然后根据具体任务的需求进行微调即可。
notion image
此外,如果需要对模型的输出进行无害化处理(使大模型输出的内容不会包含有害、不当或者不符合伦理道德的内容),还需要借助RLHF、RLAIF等技术使模型与人类的价值观对齐。
  • RLHF,Reinforcement Learning from Human Feedback,基于人类反馈的强化学习。具体工作步骤是,从prompt数据库中采样一部分数据,让模型同时生成多个答案;然后由人类标注员对生成的多个答案进行打分或者排序,然后再使用强化学习算法对模型进行微调。整个过程相当于使用模型生成多个答案的打分或者排序信息,使模型能够更好的与人类的价值观和意图对齐,生成更自然、更符合人类期望的输出。
  • RLAIF,Reinforcement Learning from AI Feedback,即基于AI反馈的强化学习。RLAIF是RLHF的一种替代方法,目标是使用AI模型所生产的反馈来代替人类标注员所给出的反馈,从而降低在模型训练中对人工标注的依赖。其工作流程主要是借助于另外一个更为强大的LLM模型,对当前正在训练的模型的输出答案进行评估和打分(在这个环节替代了RLHF的人力工作),然后通过强化学习算法对目标模型进行微调。

5. 模型的部署

模型部署是指将大模型部署到实际应用场景的过程。但是,模型部署并非只是简单的把已经训练好的模型部署在服务器上就好。 在模型部署中,一般需要基于前期训练好的模型进行模型量化、知识蒸馏、模型剪枝等操作,以实现模型压缩,最大限度地减少模型依赖的硬件资源。

6. 模型的应用和运维

最后一步,就是把训练好的大模型服务向目标用户开启。那么针对大模型的使用和大模型服务的运维,就需要提供易用、美观的前端工具。此外,还可以利用LangChain这类大模型开发框架,基于已训练和部署的大模型,开发更加多样化的大模型应用程序以及以训练和部署好的LLM大模型为中枢决策和推理模块,构建更为灵活和强大的AI Agent应用。

参考资料

  • 《大模型导论》,张成文
非专业人士的AI课4:一文说清楚RAG的工作流程以及与微调的区别非专业人士的AI课2:对大模型多模态以及开源闭源概念的总结
Loading...