/llm_finetuning

Large language Model fintuning bloom , opt , gpt, gpt2 ,gpt3 ,llama

Primary LanguagePython

更新详情

5月02日 增加p-tuning-v2
4月28日 deep_training 0.1.3 pytorch-lightning 改名 ligntning ,旧版本 deep_training <= 0.1.2
4月23日 增加lora merge权重(修改infer_lora_finetuning.py enable_merge_weight 选项)
4月11日 升级 lora v2 , 增加adalora

1.安装

2.更新详情

3.深度学习常规任务例子

4. bloom 预训练模型下载,大小尺寸可自行选择

5.数据示例

中文第三方数据集

数据示例1

 {
     "id": 0, "paragraph": [
         {
             "q": "从南京到上海的路线",
             "a":  "你好,南京到上海的路线如下:1. 南京到上海,可以乘坐南京地铁1号线,在南京站乘坐轨道交通1号线。2. 南京到浦东机场,可以搭乘上海地铁1号,在陆家嘴站乘坐地铁1线,在浦东国际机场站乘坐机场快线,前往上海浦东国际机场。3. 上海到南京,可以换乘上海地铁2号线,从南京站换乘地铁2线,再从南京南站换乘地铁1路,然后到达上海站"
         }
     ]
 }
或者
 {
     "id": 0, "paragraph": [
         {
             "q": "从南京到上海的路线",
             "a": [
                 "你好,南京到上海的路线如下:",
                 "1. 南京到上海,可以乘坐南京地铁1号线,在南京站乘坐轨道交通1号线。",
                 "2. 南京到浦东机场,可以搭乘上海地铁1号,在陆家嘴站乘坐地铁1线,在浦东国际机场站乘坐机场快线,前往上海浦东国际机场。",
                 "3. 上海到南京,可以换乘上海地铁2号线,从南京站换乘地铁2线,再从南京南站换乘地铁1路,然后到达上海站"
             ]
         }
     ]
 }

多轮会话

 {
     "id": 0, "paragraph": [
        {
           "q": "你好",
           "a": "我是机器人,有什么可以帮助你的?"
        },
         {
             "q": "从南京到上海的路线",
             "a":  "你好,南京到上海的路线如下:1. 南京到上海,可以乘坐南京地铁1号线,在南京站乘坐轨道交通1号线。2. 南京到浦东机场,可以搭乘上海地铁1号,在陆家嘴站乘坐地铁1线,在浦东国际机场站乘坐机场快线,前往上海浦东国际机场。3. 上海到南京,可以换乘上海地铁2号线,从南京站换乘地铁2线,再从南京南站换乘地铁1路,然后到达上海站"
         }
     ]
 }

6.生成训练record

python data_utils.py

注:
num_process_worker 为多进程制作数据 , 如果数据量较大 , 适当调大至cpu数量
dataHelper.make_dataset_with_args(data_args.train_file,mixed_data=False, shuffle=True,mode='train',num_process_worker=0)

7.推理

# infer_finetuning.py 推理微调模型
# infer_lora_finetuning.py 推理微调模型
 python infer_finetuning.py

8.训练

python train.py
多机多卡训练 例子 3个机器 每个机器 4个卡
修改train.py Trainer num_nodes = 3
MASTER_ADDR=10.0.0.1 MASTER_PORT=6667 WORLD_SIZE=12 NODE_RANK=0 python train.py 
MASTER_ADDR=10.0.0.1 MASTER_PORT=6667 WORLD_SIZE=12 NODE_RANK=1 python train.py 
MASTER_ADDR=10.0.0.1 MASTER_PORT=6667 WORLD_SIZE=12 NODE_RANK=2 python train.py 

int8高效训练

 lora int8     配置文件quantization_bit=0,使用官方标准float 16权重文件,修改modes.py load_in_8bit = True 

修改data_utils.py 对应with_lora=True 注意 lora int8 多卡训练 CUDA_VISIBLE_DEVICES=显卡数量 和 data_utils.py devices 保持一致,否则容易出故障 , 建议使用 CUDA_VISIBLE_DEVICES=显卡数量 python train.py

超大数据集

修改data_utils.py "data_backend": "lmdb" 

9.是否开启lora finetuning

with_lora

10.是否开启deepspeed

启动则将data_utils.py  修改 enable_deepspeed 
lora 模式暂时不支持deepspeed

Star History

Star History Chart