小工具知识网

当前位置: 首页 > 行业知识 > Llama中文大模型-模型微调

行业知识

Llama中文大模型-模型微调

2026-10-20 17:36:26 来源:互联网转载

同���提供了LoRA微调和全量参数微调代码,关于LoRA的详细介绍可以参考论文“[LoRA: Low-Rank Adaptation of Large Language Models](https://arxiv.org/abs/2106.09685)”以及微软Github仓库[LoRA](https://github.com/microsoft/LoRA)。

()
Step1: 环境准备

根据requirements.txt 安装对应的环境依赖。

Step2: 数据准备

在data目录下提供了一份用于模型sft的数据样例:

()
  • 训练数据:data/train_sft.csv

  • 验证数据:data/dev_sft.csv

    每个csv文件中包含一列“text”,每一行为一个训练样例,每个训练样例按照以下格式将问题和答案组织为模型输入,您可以按照以下格式自定义训练和验证数据集:

    "Human: "+问题+"\nAssistant: "+答案

    例如,

    Human: 用一句话描述地球为什么是独一无二的。Assistant: 因为地球是目前为止唯一已知存在生命的行星。
    Step3: 微调脚本
    LoRA微调

    LoRA微调脚本见:train/sft/finetune_lora.sh,关于LoRA微调的具体实现代码见train/sft/finetune_clm_lora.py,单机多卡的微调可以通过修改脚本中的--include localhost:0来实现。

    全量参数微调

    全量参数微调脚本见:train/sft/finetune.sh,关于全量参数微调的具体实现代码见train/sft/finetune_clm.py。

    Step4: 加载微调模型
    LoRA微调

    基于LoRA微调的模型参数见:基于Llama2的中文微调模型,LoRA参数需要和基础模型参数结合使用。

    通过PEFT加载预训练模型参数和微调模型参数,以下示例代码中,base_model_name_or_path为预训练模型参数保存路径,finetune_model_path为微调模型参数保存路径。

    import torchfrom transformers import AutoTokenizer, AutoModelForCausalLMfrom peft import PeftModel,PeftConfig# 例如: finetune_model_path='FlagAlpha/Llama2-Chinese-7b-Chat-LoRA'finetune_model_path=''  config = PeftConfig.from_pretrained(finetune_model_path)# 例如: base_model_name_or_path='meta-llama/Llama-2-7b-chat'tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path,use_fast=False)tokenizer.pad_token = tokenizer.eos_tokendevice_map = "cuda:0" if torch.cuda.is_available() else "auto"model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path,device_map=device_map,torch_dtype=torch.float16,load_in_8bit=True,trust_remote_code=True,use_flash_attention_2=True)model = PeftModel.from_pretrained(model, finetune_model_path, device_map={"": 0})model =model.eval()input_ids = tokenizer(['Human: 介绍一下北京\nAssistant: '], return_tensors="pt",add_special_tokens=False).input_idsif torch.cuda.is_available():  input_ids = input_ids.to('cuda')generate_input = {    "input_ids":input_ids,    "max_new_tokens":512,    "do_sample":True,    "top_k":50,    "top_p":0.95,    "temperature":0.3,    "repetition_penalty":1.3,    "eos_token_id":tokenizer.eos_token_id,    "bos_token_id":tokenizer.bos_token_id,    "pad_token_id":tokenizer.pad_token_id}generate_ids  = model.generate(**generate_input)text = tokenizer.decode(generate_ids[0])print(text)
    全量参数微调

    对于全量参数微调的模型,调用方式同模型调用代码示例,只需要修改其中的模型名称或者保存路径即可。

上一篇:织梦模版Logo加长教程,个性化定制轻松实现!

下一篇:机房承重架哪里做?