基于LLaMA2模型的精调方案

简介

记录基于LLaMA2模型的精调方案。目前的方案有:

方案

描述

Chinese-LLaMA-Alpaca-2

模型在原版Llama-2的基础上扩充并优化了中文词表,使用了大规模中文数据进行增量预训练,进一步提升了中文基础语义和指令理解能力,相比一代相关模型获得了显著性能提升。

BELLE

结合中文语料通过Self Instruct方式微调LLaMA2,对LLaMA支持的文档较少

FastChat

根据对话数据,微调LLaMA2。文档对中文支持比较少

Chinese-LLaMA-Alpaca-2

考虑基于已经训练好的模型(chinese-alpaca-2-7b-16k),进行微调。

模型介绍如下:

模型chinese-alpaca-2-7b-16k可以直接从下述链接下载。https://huggingface.co/ziqingyang/chinese-alpaca-2-7b-16k

也可以基于“Llama-2-7B-hf”和“Chinese-Alpaca-2-LoRA-7B”合并得到。下载链接分别为:

https://huggingface.co/meta-llama/Llama-2-7b-hf

https://huggingface.co/ziqingyang/chinese-alpaca-2-lora-7b

合并方式,参考下述文章。

manual_conversion_zh · ymcui/Chinese-LLaMA-Alpaca-2 Wiki · GitHub

接下来进行"预训练"(可选),参考下述文章。model_name_or_path参数设置成chinese-alpaca-2-7b-16k--dataset_dir参数为预训练数据的目录,可包含多个以txt结尾的纯文本文件。训练后需要进行合并操作。

pt_scripts_zh · ymcui/Chinese-LLaMA-Alpaca-2 Wiki · GitHub

txt内容类似如下:

接着进行"指令精调训练"。model_name_or_path参数设置成chinese-alpaca-2-7b-16k或做了lora合并后的模型目录。--dataset_dir: 指令精调数据的目录,包含一个或多个以json结尾的Stanford Alpaca格式的指令精调数据文件训练后需要进行合并操作。

Stanford Alpaca格式如下:

web demo搭建(可选),参考文章如下。使用fastapi实现的简易的仿OPENAI API风格的服务器DEMOapi_calls_vllm_zh · ymcui/Chinese-LLaMA-Alpaca-2 Wiki · GitHub

BELLE

基于LLaMA2的微调的模型已经发布。基于LLaMA2的微调,未做详细描述。推测可以安装原先的LLaMA1方案进行微调。参考链接如下:BELLE/train at main · LianjiaTech/BELLE · GitHub

基座模型考虑使用“BELLE-Llama2-13B-chat-0.4M”,还需要进行与LLaMA2的合并。

https://huggingface.co/BELLE-2/BELLE-Llama2-13B-chat-0.4M

也支持“预训练”和“指令微调训练”。数据格式分别如下:

提供了一个webUI。

FastChat

工程地址:GitHub - lm-sys/FastChat: An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena.。建议微调“”

只支持指令微调训练模型“vicuna-7b-v1.5-16k”,下载链接如下

https://huggingface.co/lmsys/vicuna-7b-v1.5-16k

微调后需要进行合并,合并的相关细节项目没有做过多介绍。考虑自己集成peft进行合并

其他

模型微调的方法:

优点:

有机会全面提升在特定领域下的回答质量。

一旦训练成功后,回答问题所需的领域知识要求会下降,节约后期领域知识的收集成本。

训练成本可以接受。从开源社区看到使用 Low-Rank Adaptation of Large Language Models(LoRA)方式微调一个模型仅需要 V100 显卡花费 8 小时就可以收敛。

缺点:

需要收集并预处理大量的高质量领域数据。如果需要 Full Fine-Tuning(FFT) 的方法需要 10 万条以上的语料,如果使用 Parameter-Efficient Fine-Tuning(PEFT) 的方法也需要 5 万条以上的语料。

训练效果不明确。训练后,虽然提升了领域知识的回答能力,但在其他通用知识能力、推理能力会下降。在真实面对用户提问时,可能导致无法很好推理而让回答问题的能力变得更差。因为微调的方法是基于一个已有模型来训练,因此无论是变好还是变差都是基于已有模型而言的,如果找到好的已有模型就可以让微调模型有一个更高的起点。

开源的模型质量无法和 OpenAI 媲美。虽然训练成本有机会降低让训练成为可能,目前仍然没有学界或工业界报告能够产出和 OpenAI 相似能力的开源模型。

每次迭代时间较长。每次迭代(以月为单位)需要经历一遍或几遍数据准备、训练、测试流程,才有机会得到一个可用的模型。特别是数据准备,在没有实际训练过几遍之前,可能都无法准备出高质量的训练数据集。

参考

GitHub - ymcui/Chinese-LLaMA-Alpaca-2: 中文LLaMA-2 & Alpaca-2大模型二期项目 + 64K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2 LLMs with 64K long context models)

LLaMA的解读与其微调(含LLaMA 2):Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙_llama微调-CSDN博客

GitHub - Instruction-Tuning-with-GPT-4/GPT-4-LLM: Instruction Tuning with GPT-4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值