重生AI Agent应用开发工程师之大模型基础及微调
在学习 AI Agent 开发时,我们通常需要安装一个大模型,或者购买可用的大模型 Token。本篇文章主要聚焦于大模型的基础知识,包括安装与微调方法。由于当前开源大模型种类繁多,这里我们将以 DeepSeek 为例,带你一步步学习;后续再以 Qwen 多模态模型 进行强化学习扩展。
首先我们先来了解下DeepSeek 是以什么文件组成的,DeepSeek的开源文件主要包含模型权重文件、核心代码文件、配置文件和基础设施组件这几大类,它们共同构成了一个完整的AI模型开源体系。
| 组成类别 | 主要文件/组件 | 核心功能与说明 |
|---|---|---|
| 模型权重 | .safetensors 文件、model.safetensors.index.json |
存储模型的核心参数(即“知识”)。Safetensors格式安全且加载快,大模型会被切分成多个文件,索引文件用于定位参数。 |
| 模型架构代码 | modeling_deepseek.py、configuration_deepseek.py |
modeling文件定义了模型的计算逻辑(如MLA注意力机制),configuration文件则定义了模型的“骨架”结构(如层数、大小)。 |
| 配置文件 | config.json、tokenizer.json / tokenizer_config.json、generation_config.json |
config.json是模型的“身份证”,tokenizer相关文件负责文本与数字的互相转换,generation_config.json则控制模型回答时的参数(如随机性)。 |
| 基础设施组件 | FlashMLA, DeepEP, DeepGEMM, DualPipe, 3FS等 | 这是2025年2月“开源周”期间释放的核心基础设施,专为高性能训练和推理设计,包含高效的注意力机制、通信库和并行策略等。 |
接下来我们就进行配置大模型,首先我们选择Ubuntu 20.04系统来进行整体的安装布局,先说一下目前配置这个大模型需要deepseekr1_1.5b,这里提下大家的是,这个deepseek的版本无论选择哪一个配置模式都是一样的,就相当于我们发布了几个不同版本的web代码一样,当然而deepseek全血模型精度更高,推算更精准。而配置环境有docker和vllm,docker大家都熟悉就不多说了,而vllm是什么呢?vllm正是运行大模型的,运行平台,而ollama也是其中一个运行平台,主要是目前vllm是支持分布式推理及微调的,所以企业级配置中优先选择;那么现在下面我们就开始配置吧。
由于docker配置遍地都是我们直接跳过,我们来说配置vllm及遇到的问题‘。
安装Nvidia-Docker
第一步:删除旧残留(非常重要)
sudo rm -f /etc/apt/sources.list.d/nvidia-docker.list sudo rm -f /etc/apt/sources.list.d/nvidia-container-runtime.list
第二步:1.添加新版官方源
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \ sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
2.添加仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
3.更新
sudo apt update
4.安装
sudo apt install -y nvidia-container-toolkit
5.自动配置 Docker runtime(关键步骤)
sudo nvidia-ctk runtime configure --runtime=docker
6.重启 Docker
sudo systemctl restart docker

好,到这里就已经安装安装完毕了,要注意这个Nvidia-Docker主要作用是在docker环境内能调用到GPU,因为大模型是在docker环境中运行的,而且要注意了这个Nvidia-Docker不要安装过低版本否则运行vllm的时候会报错。
安装huggingface_hub用于拉取大模型
① 安装下载工具(如果没装)
pip install -U huggingface_hub 如果没有 pip: sudo apt update sudo apt install -y python3-pip
② 创建目录
sudo mkdir -p /root/deepseekr1_1.5b/deepseek-ai
第三步:正确安装 huggingface_hub
python3 -m pip install -U huggingface_hub echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc
③ 下载模型
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \ --local-dir /root/deepseekr1_1.5b/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \ --local-dir-use-symlinks False
拉取vllm镜像并运行
1.编辑 Docker 配置:
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
加入加速源:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com"
]
}
2.保存后重启 Docker
sudo systemctl daemon-reload sudo systemctl restart docker
3.拉取Vllm
docker pull vllm/vllm-openai:latest
4.运行大模型
docker run --gpus all -p 8000:8000 \ -v /root/deepseekr1_1.5b:/models \ --name deepseek-r1 \ vllm/vllm-openai:latest \ --model /models/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \ --served-model-name DeepSeek-R1-Distill-Qwen-1.5B \ --host 0.0.0.0 \ --port 8000 \ --dtype=half \ --gpu-memory-utilization 0.8 \ --max-model-len 2048 \ --enable-auto-tool-choice \ --tool-call-parser hermes
安装完成的结果:


目前,大模型已经部署完成。接下来,我们进入模型微调环节。
很多人习惯说“训练模型”,但严格来说,对DeepSeek这类已发布的模型,我们通常做的是微调,而不是从零开始的预训练。两者的区别在于:
-
预训练:模型像一张白纸,没有任何知识。需要海量数据与巨大算力,从基础语言能力开始学习。成本极高,通常只有科技巨头或专业机构才能承担。
-
微调:模型已经具备完整的语言理解和生成能力(相当于学完了高中课程),只是缺乏特定任务的“职业技能”。我们利用它已有的基础,通过少量任务数据,让它学会完成具体业务场景中的任务,比如代码生成、客服问答、情感分析等。
换句话说:预训练是“从零培养”,微调是“岗前实训”。
那么,如何进行微调?
目前社区与工业界广泛使用的一个高效、易上手的微调框架是 LLaMA-Factory。它支持多种微调方法(如全参数微调、LoRA、QLoRA等),并简化了数据准备、参数配置与训练流程,大幅降低了微调门槛。
接下来,我们将基于LLaMA-Factory,演示如何对DeepSeek模型进行任务微调。
安装LLama-factory
docker pull hiyouga/llamafactory:latest #拉取镜像
docker run -it \
--gpus all \
--name llamafactory \
-p 7860:7860 \
-v /root/deepseekr1_1.5b/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B:/models/deepseek-r1 \
-v /root/my_dataset:/app/data \
hiyouga/llamafactory:latest
#为了用/models/deepseek-r1 这个是填入的模型地址,而/root/my_dataset是数据集地址存放json的
# 进入容器
docker exec -it llamafactory bash
# 启动 Web UI
llamafactory-cli webui
什么是微调?
微调是指在已有预训练大模型的基础上,针对特定任务或领域进行进一步训练的过程。根据训练方式和资源消耗的不同,微调可分为以下几种典型策略:
-
Full(全参数微调)
即解冻模型全部权重,使用新数据对模型的所有参数从头到尾进行完整训练。该方法在目标任务上通常能取得最优效果,但计算资源需求极高,适合数据充足、硬件条件允许的场景。 -
Freeze(冻结微调)
指固定模型的大部分底层参数(例如前80%的网络层),仅训练顶部的若干层。这种方式训练速度快、所需数据量少,适用于简单任务如短文本分类、情感分析等,但表达能力相对有限。 -
LoRA(低秩自适应,Low-Rank Adaptation)
其核心思想是保持原模型参数不变,在特定层中引入低秩矩阵作为可训练的适配模块,仅更新这些新增的小参数。LoRA 显著降低了存储和计算开销,且在许多任务上性能接近甚至媲美全参数微调。但其对使用者的要求较高,需要深入理解低秩维度、缩放系数等超参数的含义及其对模型行为的影响。
开始实践
下面我们选择模型路径,该路径是上面docker挂载后的路径,而微调我们选择的是LoRA.

首先我们来看看在chat选择中先询问问题,可以看到这个是未经过微调的结果:

回来我们开始进行训练,首先我们选择数据集,这个数据集是我们在运行时挂载到/root/my_dataset目录中,我们只需要在这个目录插入json文件即可,下面来看看我们的设置参数,当然你也可以继续调整其他参数来进行微调,看看微调效果。

下面是我们的微调数据,可看到这是一个安全拒绝类型的问答,我们看看经过这个微调后会有什么样的效果

从下面点击开始,静静登录微调结果,只需要弹出训练完毕,则整个微调结束,右边我们可以看到一个柏拉图,如果他的曲线越少,则效果越好,再来看看我们的微调效

接下来我们继续询问大模型,不过我们需要选择检查点路径为刚刚训练的文件,重新加载大模型,从下面的截图可以看到,整体的效果已出来。

训练完成后,我们先来进行评估。点击上方的检查点路径,选择我们刚刚训练好的输出目录,就可以在模型启动时加载微调结果。选择 Evaluate&Predict 页面,数据集选择 eval,点击开始。我们主要关注其中的 predict_rouge-1 的得分,这个分越高,说明生成质量越好。

总结
从整体上看,大模型的部署与我们平时部署 Web API 非常相似,流程清晰、操作简便。正因为部署如此便捷,我们完全可以借助 Kubernetes(K8s)对大模型进行高可用部署,并实现负载均衡、自动扩缩容等云原生能力。
当然,大模型领域还涉及分布式推理和分布式训练两个更底层的架构设计,这部分内容本章暂不展开,后续再深入探讨。
此外,值得强调的是:市面上绝大多数主流大模型(包括 DeepSeek 系列),我们通常不需要从零开始预训练。预训练成本极高且数据需求巨大,绝大多数场景下,只需微调即可满足业务需求。而借助 LLaMA-Factory 这一高效微调平台,我们可以快速完成从数据准备到模型训练的全流程。
最后,结合前文介绍的几种微调方法(Full、Freeze、LoRA 等),大家可以根据自身任务特点与资源情况,灵活选择或组合使用,真正实现“按需微调、精准适配”。
接下来,就让我们动手实践,开启属于自己的大模型微调之旅吧。

浙公网安备 33010602011771号