首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >增量预训练全攻略:用LLama-Factory实现垂直领域模型定制化,算力节省90%的实战秘籍

增量预训练全攻略:用LLama-Factory实现垂直领域模型定制化,算力节省90%的实战秘籍

作者头像
AI浩
发布2025-05-23 13:05:40
发布2025-05-23 13:05:40
3.1K0
举报
文章被收录于专栏:AI智韵AI智韵

摘要

大模型一般分三个阶段(现在有很多个阶段的,比如DeepSeek),首先要完成的是Pre-Training阶段。预训练是指在大量无标签数据上进行训练,使模型学习到一些基础的语言表示和知识。常见的预训练方法包括自回归语言模型(如GPT系列)、自编码器等。这些方法通过在大规模语料库上训练,使模型能够理解语言的语法、语义和上下文信息。这篇文章试图告诉大家如何去实现增量Pre-Training。

在这里插入图片描述

为什么要增量Pre-Training

增量预训练的本质是在已有预训练模型基础上,通过新数据或新任务进一步优化模型参数或者针对特定需求对已有基座模型进行定向增强。我总结了一下几个方面需要用到增量Pre-Training:

1. 领域知识注入(Domain Adaptation)

  • 问题:通用大模型(如LLaMA、GPT)在垂直领域(医疗、法律、金融)表现不足,缺乏专业术语和逻辑。
  • 解法
    • 注入领域语料(如医学文献、法律条文),重建领域知识表征。
    • 技术优势:相比从头训练,节省90%算力,且避免破坏原有语言能力。
2. 数据时效性更新(Data Freshness)
  • 问题:预训练数据存在时间滞后(如GPT-4数据截止2023年10月),无法理解新事件或技术。
  • 解法
    • 增量训练加入最新语料(新闻、论文、社交媒体),更新知识库。
    • 动态采样:按时间衰减加权(新数据权重更高)。

3. 多语言/文化适配(Multilingual Enhancement)

  • 问题:通用模型对小语种或文化特性(方言、古文)支持不足,LLama对中文的支持不太友好等。
  • 解法
    • 添加低资源语言数据,调整分词器(扩展词表)。
    • 引入文化标识符(如[lang=zh-yue]标注粤语)。

4. 任务能力强化(Task-Specific Augmentation)

  • 问题:模型在特定任务(代码生成、数学推理)上表现弱于专用模型。
  • 解法
    • 混合任务相关数据(如GitHub代码、arXiv数学论文)。
    • 课程学习:逐步增加任务难度(先Python语法,再复杂算法)。

5. 灾难性遗忘缓解(Catastrophic Forgetting Mitigation)

  • 问题:微调(Fine-tuning)过度适配下游任务,导致通用能力退化。
  • 解法
    • 混合训练:在微调时混入5%-10%原始预训练数据。
    • 弹性权重固化:保护重要神经元不被覆盖(EWC算法)。

6. 资源优化与迭代效率

  • 问题:从头训练千亿级模型需数月时间和千万美元算力。
  • 解法
    • 基于现有模型增量扩展,节省90%以上资源。
    • 参数冻结:仅训练部分层(如顶层+注意力头)。

维度

增量预训练

从头训练

微调(Fine-tuning)

数据需求

中规模领域数据(1B-100B tokens)

超大规模通用数据(1T+ tokens)

小规模标注数据(1k-1M样本)

计算成本

10%-30%从头训练成本

100%基准成本

1%-5%从头训练成本

能力保留

保持通用能力 + 新增专项能力

从零构建

可能牺牲通用能力

适用阶段

基座模型迭代/领域适配

初始模型构建

下游任务适配


预训练数据集

LLama-Factory支持的数据集格式

大语言模型通过学习未被标记的文本进行预训练,从而学习语言的表征。通常,预训练数据集从互联网上获得,因为互联网上提供了大量的不同领域的文本信息,有助于提升模型的泛化能力。 预训练数据集文本描述格式如下:

代码语言:javascript
复制
[
  {"text": "document"},
  {"text": "document"}
]

在预训练时,只有 text 列中的 内容 (即document)会用于模型学习。

对于上述格式的数据, dataset_info.json 中的 数据集描述 应为:

代码语言:javascript
复制
"数据集名称": {
  "file_name": "data.json",
  "columns": {
    "prompt": "text"
  }
}

同时也支持jsonl格式

代码语言:javascript
复制
  {"text": "document"}
  {"text": "document"}

在 dataset_info.json 中的 数据集描述 应为:

代码语言:javascript
复制
"数据集名称": {
  "file_name": "data.jsonl",
  "columns": {
    "prompt": "text"
  }
}

一般开源数据集用jsonl

开源数据集

  1. Firefly-LLaMA2-Chinese 数据集
    • 内容:包含约 22GB 中文文本,涵盖 CLUE、ThucNews、CNews、COIG、维基百科等开源数据,以及古诗词、散文、文言文等特色语料。
    • 特点:专为中文增量预训练设计,适用于增强模型的中文理解和生成能力。
    • 获取地址:HyperAI 社区或者魔搭社区。建议用魔搭社区,速度快一些。
  2. WuDao 200G
    • 内容:中文开源预训练数据集,覆盖百科、新闻、论坛等多领域文本。
    • 特点:经典中文语料库,常与 The Pile 数据集搭配使用,总规模达 1T,适合基础预训练。
    • 获取地址:https://openi.pcl.ac.cn/BAAI/WuDao-Data

作为练习使用,找一个小点的数据集就可以了,除非你有钱有资源。比如prose.jsonl

安装LLama-Factory

Linux

CUDA 安装

CUDA 是由 NVIDIA 创建的一个并行计算平台和编程模型,它让开发者可以使用 NVIDIA 的 GPU 进行高性能的并行计算。

首先,在 https://developer.nvidia.com/cuda-gpus 查看您的 GPU 是否支持CUDA

保证当前 Linux 版本支持CUDA. 在命令行中输入 uname -m && cat /etc/*release,应当看到类似的输出

代码语言:javascript
复制
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04

检查是否安装了 gcc . 在命令行中输入 gcc --version ,应当看到类似的输出

代码语言:javascript
复制
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

在以下网址下载所需的 CUDA,这里推荐12.2版本。 https://developer.nvidia.com/cuda-gpus 注意需要根据上述输出选择正确版本

如果您之前安装过 CUDA(例如为12.1版本),需要先使用 sudo /usr/local/cuda-12.1/bin/cuda-uninstaller 卸载。如果该命令无法运行,可以直接:

代码语言:javascript
复制
sudo rm -r /usr/local/cuda-12.1/
sudo apt clean && sudo apt autoclean

卸载完成后运行以下命令并根据提示继续安装:

代码语言:javascript
复制
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
sudo sh cuda_12.2.0_535.54.03_linux.run

注意:在确定 CUDA 自带驱动版本与 GPU 是否兼容之前,建议取消 Driver 的安装。

完成后输入 nvcc -V 检查是否出现对应的版本号,若出现则安装完成。

Windows

CUDA 安装

打开 设置 ,在 关于 中找到 Windows 规格 保证系统版本在以下列表中:

支持版本号

代码语言:javascript
复制
Microsoft Windows 11 21H2
Microsoft Windows 11 22H2-SV2
Microsoft Windows 11 23H2
Microsoft Windows 10 21H2
Microsoft Windows 10 22H2
Microsoft Windows Server 2022

选择对应的版本下载并根据提示安装。

打开 cmd 输入 nvcc -V ,若出现类似内容则安装成功。

在这里插入图片描述

否则,检查系统环境变量,保证 CUDA 被正确导入。

在这里插入图片描述

LLaMA-Factory 安装

在安装 LLaMA-Factory 之前,请确保您安装了下列依赖:

运行以下指令以安装 LLaMA-Factory 及其依赖:

代码语言:javascript
复制
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

如果出现环境冲突,请尝试使用 pip install --no-deps -e . 解决

LLaMA-Factory 校验

完成安装后,可以通过使用 llamafactory-cli version 来快速校验安装是否成功

如果您能成功看到类似下面的界面,就说明安装成功了。

在这里插入图片描述

LLaMA-Factory 高级选项

Windows

QLoRA

如果您想在 Windows 上启用量化 LoRA(QLoRA),请根据您的 CUDA 版本选择适当的 bitsandbytes 发行版本。

代码语言:javascript
复制
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl
FlashAttention-2

如果您要在 Windows 平台上启用 FlashAttention-2,请根据您的 CUDA 版本选择适当的 flash-attention 发行版本。

如果觉得安装麻烦还有一种简单的办法,就是,新建虚拟环境,直接按照pytorch,pytorch会自动安装CUDA,这样不用担心版本的问题。如果版本不满足就换一个cuda版本的pytorch。比如我想安装CUDA12.4版本的pytorch,即使我本机是CUDA12.2的,我也可以用,执行命令:

代码语言:javascript
复制
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia

pytorch环境安装好后,就可以安装LLama-Factory了。

增量预训练

新建data1.jsonl,从prose.jsonl复制一些数据放到data1.josnl中,如下图:

然后,新建dataset_info.json,增加data1的配置,如下图:

将data1.jsonl和dataset_info.json,放到data文件夹下面,如下图:

编写llama3_lora_pretrain.yaml,详细配置如下:

代码语言:javascript
复制
### model
model_name_or_path: Qwen/Qwen3-0.6B
trust_remote_code: true

### method
stage: pt
do_train: true
finetuning_type: lora
lora_rank: 8
lora_target: all

### dataset
dataset: data1
cutoff_len: 1024
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
dataloader_num_workers: 4

### output
output_dir: saves/Qwen/lora/pretrain
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
save_only_model: false
report_to: none  # choices: [none, wandb, tensorboard, swanlab, mlflow]

### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
resume_from_checkpoint: null

stage设置为pt,model_name_or_path为模型的路径,我用Qwen3的0.6B模型为例: Qwen/Qwen3-0.6B

llama3_lora_pretrain.yaml和Qwen在同一个目录,然后,在命令行里执行:

代码语言:javascript
复制
llamafactory-cli train .\llama3_lora_pretrain.yaml
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI智韵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 为什么要增量Pre-Training
    • 1. 领域知识注入(Domain Adaptation)
    • 3. 多语言/文化适配(Multilingual Enhancement)
    • 4. 任务能力强化(Task-Specific Augmentation)
    • 5. 灾难性遗忘缓解(Catastrophic Forgetting Mitigation)
    • 6. 资源优化与迭代效率
  • 预训练数据集
    • LLama-Factory支持的数据集格式
    • 开源数据集
  • 安装LLama-Factory
    • Linux
      • CUDA 安装
    • Windows
      • CUDA 安装
    • LLaMA-Factory 安装
    • LLaMA-Factory 校验
    • LLaMA-Factory 高级选项
      • Windows
  • 增量预训练
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档