“人机共生” 的终极目标:保留人类的情感与创造力,将重复性工作交给AI
大模型的存储格式
- 大模型训练完成后,模型权重通常以特定的文件格式存储,以便后续加载、推理或部署
- 部署大模型时,选择适当的模型格式对于性能优化和兼容性至关重要
框架专用格式
- PyTorch格式( .pt/.pth)
- PyTorch原生格式,支持保存完整的模型结构(torch.save(model))或仅参数(state_dict), 适用于灵活的研究和微调场景
- 文件结构:包含张量权重、 网络结构(可选)及元数据
- 优缺点:灵活性高, 但依赖PyTorch生态, 跨框架兼容性差
- 示例:Meta的Llama系列、 通义于问(Qwen)等模型均采用此格式
- TensorFlow Saved Model
- TensorFlow官方格式,包含完整的计算图、权重和签名(如输入/输出定义),适合生产级部署
- 文件结构:含assets/(资源文件)、variables/(权重)、saved_model.pb(模型结构)
- 优缺点:跨平台兼容性强,但仅支持TensorFlow生态,文件体积较大
- 示例:Google的PaLM、百度文心一言等
模型格式:
Safetensors
- Hugging Face推出的安全高效格式, 避免PyTorch的Pickle反序列化漏洞, 支持多框架兼容
- 文件结构:分块存储(如model-0001.safetensors)及索引文件(.index.json), 采用加密校验机制
- 优缺点:加载速度快,安全性高,但需依赖Transformers库示例:Hu娑ing Face Hub上的开源大模型(如GLM-4-9B)
GGUF(总guf)
- llama.cpp推出的二进制格式,专为高效推理设计,支持内存映射(mmap)和量化
- 文件结构:含文件头(版本/元数据)、 张量数据及优化的内存布局
- 优缺点:加载速度极快, 资源占用低, 但仅适配特定推理框架(如llama.cpp)
- 示例:Llama2、 Yi-34B等模型的量化部署
模型轻量化处理
- 量化压缩:使用GGUF格式将FP32权重转为4-bit(Q4_K_M), 现存占用减少50%
- 结构优化: 通过剪枝移除冗余神经元,或知识蒸馏将大模型能力迁移至小模型
部署步骤:
硬件环境
安装GPU驱动、安装CUDA、安装cuDNN
推理环境安装建议:
手动安装GPU驱动
使用pip命令安装CUDA和cuDNN
手动安装
分别安装GPU驱动,而后独立安装CUDA (不要再次安装Driver)
直接安装CUDA及CUDA自带的驱动
软件环境
LLM领域,标准变成语言python
使用隔离的Python环境
虚拟Python环境管理器::venv conda
conda: 对应项目 anaconda 精简版 miniconda
建议手动下载模型
手动下载方式
1.
git clone 需要安装大文件模型
git clone https://huggingface.co/Qwen/Qwen3-8B
2.
huggingface-cli download
可使用国内镜像 export HF_ENDPOINT=https://hf.mirros.com
先安装工具 pip install huggingface_hub
huggingface_cli download Qwen/Qwen3-8B –local-dir ./Models/Qwen-8B
Modescope下载
先安装工具 pip install modelscope
下载命令:
modescope download –model deepseek-ai/DeepSeek-R10528-Qwen3-8B –lcoal_dir ./Models/DeepSeek-R10528-Qwen3-8B使用推理引擎启动模型
ollama
vllm (SOTA)SGLang

安装miniconda
1 | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh |
清华镜像源安装
1 | python -m pip install --upgrade pip |
如果需要全局修改,则需要修改配置文件。
Linux/Mac os 环境中,配置文件位置在 ~/.pip/pip.conf(如果不存在创建该目录和文件):
1 | mkdir ~/.pip |
打开配置文件 ~/.pip/pip.conf,修改如下:
1 | [global] |
查看 镜像地址:
1 | $ pip3 config list |
huggingface-cli
1 | huggingface-cli download Qwen/Qwen2.5-0.5B --local-dir ./Models |
modelscope
1 | pip install modelscope |
模型引擎启动模型
Ollma
Vllm
SGlang
1 | pip install vllm |
1 | (llm) root@hmkdev:~# vllm serve ./QW/ --served-model-name qwen2 --dtype float16 --tensor-parallel-size 1 --gpu-memory-utilization 0.75 --max-model-len --enforce-eager --host 172.18.227.60 --port 8000 --api-key hemingkanghandsome |

训练:
基于训练数据集,学习数据中的模式或规律,当模型的预测结果的准确率超过期望标准,满足需要保存下来
训练时的精度:通常为全精度(FP32),为了节约显存和计算资源,也可以使用混合精度
以transformer模型为例:
模型权重:1个单位
梯度: 1个单位
优化器状态: 2个单位
系数 :*4
推理:
部署训练好的模型,用于对特定领域中的数据进行预测
以transfomer模型为例
模型权重 1个单位
KV Cache和其他: 0.2个单位
系数: *1.2
tokens/min
分布式训练:
单机多卡:
主机内的卡间总线
PCIE:5.0
NVLink: GPU 互联总线
单对单
DGX
多机多卡:
主机间的互联网络:
InfiniBand:
TCP/IP: ROCE
通信:吞吐量,网络带宽
模型的分布式训练:
模型的卡能放下:但支持的batch_size 比较小
数据并行:每个卡放的完整模型
大batch_size: 将batch二次分割更小的batch_size
数据并行: 单卡可放得下整个模型
Data Parallelism: 数据并行
数据并行: 单卡放不下整个模型,需要将模型拆分并放置于多个卡
层间拆分: 流水线并行
pipline Parallelism: 流水线并行
层内拆分: 张量并行
tensor Parallelism :张量并行
分布式训练框架:
PyTorch Distributed
DDP
FSDP/FSDP2
DeepSpeed
分布式推理框架:
vLLM
SGLang
推理时:一般只使用模型并行(PP/TP),若只使用一种,建议使用TP
模型微调:
LLM:
预训练、后训练
预训练:掌握各学科、各方面的全方位的知识,但没有面向任何领域进行优化 时间成本、计算成本 80-90%
数据集: 组织内部的非公开、且规模庞大的数据集
后训练:将预训练好的模型,面向特定领域进行专业性适配
继续预训练:将预训练好的模型,面向特定领域进行专业性适配
模型微调:监督微调、子集(指令微调)
下一个词预测,进行续写而非对答,或者理解人类的真正意思,通过微调让模型理解人类的指令。
强化训练:对齐人类的价值观
模型微调(指令微调):
系统指令
用户指令
模型回答
预训练数据集: {text: “文本序列”}
微调数据集格式:
Alpaca: 单轮对话
ShareGPT: 多轮对话
Chat Messages: 更规范的统一格式,即支持单论对话,也支持对轮对话
模型微调,不能直接使用准备好的数据集,调整成微调模板格式
分词后提供给模型进行微调训练
微调策略:
全参数微调:调整矩阵的参数
计算量最大,但性能最好
参数高效微调:PEFT、
适配器微调: Adapter Fine-Tuning
提示词微调:
Prompt Tuning
P-Tuning
Prefix-Tuning
LoRA系:
LoRA
QLoRA
DoRA
LongLoRA
LoRA++
LoRA Target:
GPT
每一层通常有两个关键组件
Masked MHA:带掩码的多头自注意力子层
四个矩阵 Q,K,V,O
FFN:前馈神经网络子层
三个矩阵 up down gate
模型微调框架:
HuggingFace transformers + peft+ accelerate
LLaMA-Factory:
MS-Swift:
模型微调 QW
本示例将基于modelscope/self-cognition数据集(或者swift/self-cognition),使用LLaMA-Factory来微调Qwen0.5B模型,以修改其身份上的自我认知结果。
基本思路
- 微调目标:让模型在保持 DeepSeek-R1 原有推理风格的前提下,学习“自我认知”能力(即理解自身行为、局限性、推理来源等)
- 微调方式:使用 参数高效微调(PEFT) 中的 LoRA 方法
- 数据来源:modelscope/self-cognition(阿里 ModelScope 平台)
- 框架:LLaMA-Factory(统一多模型、模板化数据微调框架)
准备工作
安装环境
1 | conda create -n llama python |
首先,克隆 LLaMA-Factory 并安装依赖。建议使用Python 3.10及以上的版本,CUDA使用11.8及以上版本。
命令:
llamafactory-cli
webui
train命令:
命令行参数
配置文件
1 | git clone https://github.com/hiyouga/LLaMA-Factory.git |
确认训练可用的GPU设备(如有需要)。
1 | export CUDA_DEVICE_ORDER=PCI_BUS_ID |
准备模型
接着,下载模型到本地目录。我们可以从Hugging Face或ModelScope下载deepseek-ai/DeepSeek-R1-0528-Qwen3-8B模型。若要从ModelScope下载,一般要先设置环境变量,接着使用git进行克隆(要事先安装git-lfs):
1 | export USE_MODELSCOPE_HUB=1 |
准备数据集
“modelscope/self-cognition”是一个自我认知数据集,用于教导模型“你是谁”。我们需要先修改其中的模型名称和作者信息。
下载数据集:可以使用ModelScope的下载工具(需要事先安装了modelscope模块):
1 | modelscope download --dataset swift/self-cognition --local_dir ./self-cognition |
接着,我们去修改其中的身份信息。找到下载的数据集文件(通常是JSON格式),用文本编辑器打开,将其中的”name”和”author”字段全部替换为。数据格式通常如下所示,主要需要修改”output”字段中模型回答关于自身身份的部分。
1 | [ |
最后,将修改后的数据集文件(例如test.json)放入LLaMA-Factory项目的data目录下。然后,编辑data/dataset_info.json文件,添加数据集信息。
1 | "self_cognition_hmk": { |
配置执行微调
方法一:基于配置文件进行
配置训练参数
LLaMA-Factory中通常使用YAML配置文件来设置训练参数,配置时可以在examples目录下(如train_lora或train_qlora)找一个基础配置文件(例如qwen3_lora_sft.yaml)进行修改。以下是一个针对此任务的最小化配置示例,保存为test.yaml:
1 | (base) root@hmkdev:~# cat LLaMA-Factory/examples/train_lora/qwen3_lora_sft.yaml |
关键参数说明:
- template: qwen3:至关重要,因为DeepSeek-R1-0528-Qwen3-8B基于Qwen3架构,必须使用对应的模板
- per_device_train_batch_size 和 gradient_accumulation_steps:两者乘积是有效批次大小。如果训练时遇到GPU显存不足(OOM),请降低per_device_train_batch_size,同时增加gradient_accumulation_steps
- learning_rate:对于LoRA微调,1e-4是一个常用且安全的起点
结合多个数据集对deepseek-ai/DeepSeek-R1-0528-Qwen3-8B 模型进行微调,是一个非常好的思路。这通常能让模型学习到更全面和多样化的知识,往往能获得比使用单个数据集更好的效果。上面的示例中,通过结合self_cognition_mage (专精于身份认知)和 alpaca_zh_demo (提供广泛的指令遵循能力),模型既能牢牢记住自己的新身份,又能保持并增强其处理各类通用问题的能力。这可以有效避免模型在学习了狭窄的新知识后,遗忘原有基础能力的“灾难性遗忘”现象。
提示:对于联合的通用指令数据集,若不想使用其全部数据样本,可以在dataset_info.json文件中对应的数据集的配置上添加”num_samples”键并指数行数即可,例如下面的示例表示只使用指定数据集的前200行。
启动微调
使用上面准备的配置文件即可启动训练。注意,启动时可用的GPU数量默认为当前主机上的所有可用GPU。如有必要,可以通过环境变量CUDA_VISIBLE_DEVICES来控制其可用的GPU。
1 | (llama) root@hmkdev:~/LLaMA-Factory# llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml |
方法二:基于命令行参数进行
下面是一个QLoRA微调的示例,注意按实际情况替换命令中的模型ID/本地模型路径,以及LoRA/QLoRA适配器的路径。运行之前,需要确认安装了bitsandbytes库。
1 | llamafactory-cli train \ |
模型LoRA微调:
微调相关的矩阵参数会单独保存,–output_dir saves/qwen3-4b/lora/sft
可以同原模型进行合并:
| 不合并:同一个基础模型,可以同时提供多个LoRA适配器
| 合并:推理速度更快,但不支持多个LoRA
训练完成后,可以使用webchat或者推理脚本进行测试。
验证微调效果
模型测试
训练完成后,可以使用LLaMA-Factory的Web界面或命令行与微调后的模型对话,验证其自我认知是否已更新。例如下面的命令可以启动Web UI(注意按实际情况替换其中的模型ID/本地模型路径,以及LoRA/QLoRA适配器的路径):
1 | llamafactory-cli webchat --model_name_or_path /root/QW \ |
在对话框中询问“你是谁?”,模型应该回答它是“马哥教育AI小助手”。

我们也可以使用推理脚本进行测试,具体的命令如下(注意修改脚本中的模型ID或路径,以及LoRA/QLoRA适配器的路径):
1 | python inferences.py |
模型导出(可选)
如果要将LoRA适配器权重与基础模型合并成一个完整的模型文件以便部署,可以使用导出命令(注意按实际情况替换其中的模型ID/本地模型路径,以及LoRA/QLoRA适配器的路径):
1 | llamafactory-cli export \ |