ymcui / Chinese-LLaMA-Alpaca-2

中文LLaMA-2 & Alpaca-2大模型二期项目 + 64K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2 LLMs with 64K long context models)
Apache License 2.0
7.04k stars 581 forks source link

训练之后合并的模型大小没变化 #448

Closed Mr1994 closed 8 months ago

Mr1994 commented 9 months ago

提交前必须检查以下项目

问题类型

模型转换和合并

基础模型

Chinese-Alpaca-2 (7B/13B)

操作系统

Linux

详细描述问题

这个是我run_pt.sh的内容
pretrained_model=/llma2/text-generation-webui/models/chinese-alpaca-7b // **这个是我网上下载的基座模型**
chinese_tokenizer_path=/llma2/Chinese-LLaMA-Alpaca-2/scripts/tokenizer // **这个是咋们项目的tokenizer**
dataset_dir=/llma2/dataset // 这个是我需要训练的txt
data_cache=/llma2/Chinese-LLaMA-Alpaca-2/temp_data_cache_dir // **这个目录是一个临时目录**
per_device_train_batch_size=1
gradient_accumulation_steps=8
block_size=512
output_dir=/llma2/output_dir // **这个是我训练的模型输出的位置**

然后我执行bash run_pt.sh得到一个训练后的模型

![image](https://github.com/ymcui/Chinese-LLaMA-Alpaca-2/assets/15978040/d357e04c-60de-48cf-9b44-d994b6195645)

然后我执行 合并操作 

python scripts/merge_llama2_with_chinese_lora_low_mem.py --base_model /llma2/text-generation-webui/models/chinese-alpaca-7b --lora_model /llma2/output_dir/pt_lora_model/ --output_dir /llma2/text-generation-webui/models/yongxin-model-text --output_type huggingface --verbose

我发现合并之后的模型大小是没有任何变化的 这就很奇怪 

![image](https://github.com/ymcui/Chinese-LLaMA-Alpaca-2/assets/15978040/db92fd6c-df52-407a-8fb5-ecae18828dc3)

依赖情况(代码类问题务必提供)

# 请在此处粘贴依赖情况(请粘贴在本代码块里)

运行日志或截图

# 请在此处粘贴运行日志(请粘贴在本代码块里)
ymcui commented 9 months ago

你先把markdown处理一下,图片都看不到。图片不要粘在```语法(代码块)里。

Mr1994 commented 9 months ago

这个是我run_pt.sh的内容 pretrained_model=/llma2/text-generation-webui/models/chinese-alpaca-7b // 这个是我网上下载的基座模型 chinese_tokenizer_path=/llma2/Chinese-LLaMA-Alpaca-2/scripts/tokenizer // 这个是咋们项目的tokenizer dataset_dir=/llma2/dataset // 这个是我需要训练的txt data_cache=/llma2/Chinese-LLaMA-Alpaca-2/temp_data_cache_dir // 这个目录是一个临时目录 per_device_train_batch_size=1 gradient_accumulation_steps=8 block_size=512 output_dir=/llma2/output_dir // 这个是我训练的模型输出的位置

然后我执行bash run_pt.sh得到一个训练后的模型 image

然后我执行 合并操作 (过程没报错)

python scripts/merge_llama2_with_chinese_lora_low_mem.py --base_model /llma2/text-generation-webui/models/chinese-alpaca-7b --lora_model /llma2/output_dir/pt_lora_model/ --output_dir /llma2/text-generation-webui/models/yongxin-model-text --output_type huggingface --verbose

我发现合并之后的模型大小是没有任何变化的 这就很奇怪 ;还有

image

然后训练的loss也比较高

Mr1994 commented 9 months ago

补充一下。就是我合并完毕之后 跟模型之前的回答差不多 没有任何改变 很奇怪

Mr1994 commented 9 months ago

train metrics epoch = 0.89 train_loss = 0.1136 train_runtime = 0:00:04.33 train_samples = 9 train_samples_per_second = 2.075 train_steps_per_second = 0.231

哪怕我训练loss 很低 合并之后的输出 还是不是我想要的结果

image 下面是我的训练数据集合 image

iMountTai commented 9 months ago

可以读读LoRA论文,LoRA只是修改了模型权重,不是增加了模型权重,在存储大小上是没有变化的。至于为什么你的数据没起作用,可能是超参设置、任务不匹配等各种原因。另外,你运行的是pt代码,输入的是alpaca模型,相当于对alpaca做了二次预训练,然后你又基于训练的模型做对话任务,这一流程就很奇怪。

Mr1994 commented 9 months ago

不能对alpaca 做二次训练吗 我现在想的是 因为alpaca很多回复都不好,比如我问“ 谁是世界上最好的人” 她不回复我, 说不知道。 所以我现在是对alpaca做了训练。然后希望他可以告诉我谁是世界上最好的人。 我昨天也尝试了精调,合并之后也是回复不出来 而且loss数值很低,epo也设置了训练3次。;

Mr1994 commented 9 months ago

我现在做过2种操作

  1. 训练模型 -> 合并lora到alpaca -> 加载alpaca模型 进行对话看下是否有训练的内容:比如 谁是世界上好的人或者孙文科是世界最好的人吗? 她都答非所问
  2. 精调模型 -> 合并lora到alpaca -> 加载alpaca模型 进行对话看下是否有训练的内容:比如 谁是世界上好的人或者孙文科是世界最好的人吗? 她都答非所问 ; 合并和训练都试过 但是没什么用
ymcui commented 9 months ago

你试试续写行不行(给定上文让模型继续写下文),不使用指令模板和对话模式。 影响模型训练效果的因素很多,我们无法一一给出建议。

Mr1994 commented 9 months ago

那可以按照精调和训练llma2的方法 在 Chinese-Alpaca-2 上二次预训练和精调吗。 因为现在Chinese-Alpaca-2 上的数据太少了。我们现在是想实现一个 医疗方向的大模型

github-actions[bot] commented 8 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your consideration.

github-actions[bot] commented 8 months ago

Closing the issue, since no updates observed. Feel free to re-open if you need any further assistance.