当前位置:   article > 正文

基于llama2_7B模型进行增量预训练_llama 预训练数据格式

llama 预训练数据格式

LLama2原始权重转Hugging Face权重

由于使用的底座模型是llama,官方公布的是PyTorch版本,为了方便后续使用,需转换为HuggingFace格式    .pth->.bin

环境准备

  1. 本文实验conda环境为test_llm
  2. pytorch1.13.1
  3. cuda116
  4. python3.8

下载transformers到本地 并安装(要安装对应版本的,要不然会报错RuntimeError: shape '[32, 2, 2, 4096]' is invalid for input of size 16777216)

  1. git clone https://github.com/huggingface/transformers.git
  2. cd transformers
  3. git checkout v4.28.1
  4. pip install -e .
  5. #要安装一些包
  6. pip install sentencepiece==0.1.97 -i https://pypi.mirrors.ustc.edu.cn/simple/
  7. pip install peft==0.3.0 -i https://pypi.mirrors.ustc.edu.cn/simple/
  8. pip uninstall tokenizers
  9. pip install tokenizers==0.13.3 -i https://pypi.mirrors.ustc.edu.cn/simple/
  10. pip install protobuf==3.20.2

下载llama 

1.从GitHub克隆LLama项目到本地

git clone https://github.com/meta-llama/llama

2.下载模型权重

先登录到网址填写申请llama的信息,建议国家写美国

然后在你留下的邮箱中会收到一个URL,在接下来会用到

进入克隆下来的LLama项目目录,执行download.sh脚本来下载模型权重。我们全篇文章都以7B模型为例

  1. cd llama
  2. ./download.sh

显示:

输入邮箱 

输入你想下载的模型 7B

共下载了一个文件夹llama-2-7b和一个tokenizer.model文件

将下载下来的模型文件夹llama-2-7b重命名为7B

llama提供了7b、13b、30b、65b四种不同规模的模型,因此要使用第一代LLama的转换脚本convert_llama_weights_to_hf.py,我们需要将下载的模型名称改为这些名称,以便脚本能正确识别。例如,我使用了7b-chat模型,那么我就需要将7b-chat文件夹改名为7B。总的来说就是模型是7b-chat或7b则需要改名7B ,13b-chat或13b则需要改名13B

3.使用transformers包中的py文件执行权重转换,创建脚本convert_llama_weights_to_hf.sh如下

  1. python transformers/src/transformers/models/llama/convert_llama_weights_to_hf.py \
  2. --input_dir path_to_your_llama \
  3. --model_size 7B \
  4. --output_dir path_to_your_hf_model_output
  • path_to_your_llama整个LLama项目的路径(也就是7B上一级目录) ,而不是刚刚下载到项目文件夹中的模型文件夹路径。
  • path_to_your_hf_model_output随便自定义一个输出目录就行

转换完成后,你可以在output_dir也就是huggingface格式模型输出文件夹中找到以下文件:

 拉取Chinese-LLaMA-Alpaca项目

  1. git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
  2. cd Chinese-LLaMA-Alpaca
  3. mkdir model

 然后将llama移动到model文件夹下面

合并模型

下载lora权重

由于原始llama模型对中文的支持不是很优秀,所以需合并一个chinese-llama-plus-lora-7b模型和chinese-alpaca-plus-lora-7b模型​

(Chinese-LLaMA在原版LLaMA的基础上进行了扩充中文词表+增量预训练:扩充中文词表并使用了大规模中文语料数据进行增量预训练(因为采用了LoRA技巧,其本质还是高效参数微调),更好地理解新的语义和语境,进一步提升了中文基础语义理解能力。然后,Chinese-Alpaca模型进一步使用了中文指令数据进行指令精调(依旧采用了LoRA技巧),显著提升了模型对指令的理解和执行能力。官方链接:​​​​​​​Chinese-LLaMA-Alpaca)

从huggface下载这两个模型 到model文件夹下

  1. git lfs clone https://huggingface.co/hfl/chinese-llama-plus-lora-7b
  2. git lfs clone https://huggingface.co/hfl/chinese-alpaca-plus-lora-7b

在model文件夹下创建一个firstmergemodel文件夹

进入Chinese-LLaMA-Alpaca文件夹  cd Chinese-LLaMA-Alpaca

创建合并脚本merge_llama_with_chinese_lora.sh如下

  1. python scripts/merge_llama_with_chinese_lora.py \
  2. --base_model Chinese-LLaMA-Alpaca/model/llama/output/ \
  3. --lora_model Chinese-LLaMA-Alpaca/model/chinese_llama_plus_lora_7b,Chinese-LLaMA-Alpaca/model//chinese_alpaca_plus_lora_7b \
  4. --output_type huggingface \
  5. --output_dir Chinese-LLaMA-Alpaca/model/firstmergemodels
  • --base_model:存放HF格式的LLaMA模型权重和配置文件的目录
  • --lora_model:中文LLaMA/Alpaca LoRA解压后文件所在目录,也可使用
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/643645
推荐阅读
相关标签