【llama-factory】Lora微调和DPO训练

微调参考
DPO参考

llama-factory官网

LoRA微调

数据集处理

数据集格式和注册
Alpaca数据集格式:

[
  {
    "instruction": "人类指令(必填)",
    "input": "人类输入(选填)",
    "output": "模型回答(必填)",
    "system": "系统提示词(选填)",
    "history": [
      ["第一轮指令(选填)", "第一轮回答(选填)"],
      ["第二轮指令(选填)", "第二轮回答(选填)"]
    ]
  }
]

dataset_info.json中注册数据集:
注意可以自定义数据集路径!

"数据集名称": {
  "file_name": "data.json",
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output",
    "system": "system",
    "history": "history"
  }
}

SFT训练及其yaml设置

sft
llama3_lora_sft.yaml配置中:template可以参考github官方的template,比如qwen1-2.5的template都是qwen。

yaml中参数介绍

训练的时候设置一下卡:

CUDA_DEVICE_ORDER='PCI_BUS_ID' CUDA_VISIBLE_DEVICES=2 llamafactory-cli train tmp/llama3_lora_sft.yaml

merge模型

qwen2.5_merge_sft.yaml

### model
model_name_or_path: /data1/ztshao/pretrained_models/Qwen/Qwen2.5-7B-Instruct
adapter_name_or_path: /data1/ztshao/projects/projects428/military/results/lora_sft
template: qwen
finetuning_type: lora

### export
export_dir: /data1/ztshao/projects/projects428/military/results/merge_sft
export_size: 2
export_device: cpu
export_legacy_format: false

merge完在对应的输出文件夹里自带了ollama导入模型需要的Modelfile文件。

merge操作:

llamafactory-cli export /data1/ztshao/projects/projects428/military/src/finetune/qwen2.5_merge_sft.yaml

DPO

数据集处理

数据集格式和注册
Alpaca数据集格式:

[
  {
    "instruction": "人类指令(必填)",
    "input": "人类输入(选填)",
    "chosen": "优质回答(必填)",
    "rejected": "劣质回答(必填)"
  }
]

dataset_info.json中注册数据集:

"数据集名称": {
  "file_name": "data.json",
  "ranking": true,
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "chosen": "chosen",
    "rejected": "rejected"
  }
}

DPO训练及其yaml设置

DPO训练
llama-factory的DPO训练大讨论

我的yaml:

### model
model_name_or_path: /data1/ztshao/pretrained_models/Qwen/Qwen2.5-7B-Instruct
trust_remote_code: true

### method
stage: dpo
do_train: true
finetuning_type: lora
lora_rank: 8
lora_target: all
pref_beta: 0.1
pref_loss: sigmoid  # choices: [sigmoid (dpo), orpo, simpo]

### dataset
dataset: military_dpo
template: qwen
cutoff_len: 2048
max_samples: null
overwrite_cache: true
preprocessing_num_workers: 16
dataloader_num_workers: 4

### output
output_dir: /data1/ztshao/projects/projects428/military/results/models
logging_steps: 2
save_steps: 50
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: 2
gradient_accumulation_steps: 4
learning_rate: 5.0e-5
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
resume_from_checkpoint: null

训练:

CUDA_DEVICE_ORDER='PCI_BUS_ID' CUDA_VISIBLE_DEVICES=2 llamafactory-cli train tmp/llama3_lora_dpo.yaml
### 使用 llama-factory 进行 LoRA 微调 #### 准备工作 为了使用 `llama-factory` 对大模型进行LoRA微调,需先安装必要的依赖库并准备数据集。确保环境已配置好Python以及PyTorch等基础框架。 ```bash pip install git+https://github.com/your-repo/llama-factory.git@main ``` #### 数据预处理 针对不同的应用场景调整数据格式至关重要。实践中发现仅将问题置于instruction字段而留空input的效果不佳[^3]。更有效的做法是让用户输入位于input部分,同时利用instruction提供上下文或指导说明。 #### 启动WebUI界面 对于初次使用者来说,通过图形化的WebUI来操作可能更加直观便捷。启动命令如下: ```bash python -m llama_factory.webui ``` 这一步骤能够简化参数设置过程,并允许实时监控训练进度[^2]。 #### 配置文件设定 创建一个JSON格式的配置文件用于指定训练细节,如学习率、批次大小等超参。下面是一个简单的例子: ```json { "model_name": "qwen-1.5-7b-chat", "dataset_path": "./data/my_dataset.jsonl", "output_dir": "./results/", "learning_rate": 5e-5, "per_device_train_batch_size": 8, "num_train_epochs": 3, "logging_steps": 10, "save_strategy": "epoch" } ``` #### 开始微调流程 最后执行具体的微调指令,在此之前确认所有路径指向正确无误。运行以下脚本即可开始训练: ```bash python -m llama_factory.train \ --config ./path_to_config/config.json ``` 在此过程中,损失函数通常选用交叉熵损失(CrossEntropyLoss),其指数形式即为困惑度(perplexity)[^1]。该指标可用于评估模型性能变化情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值