当前位置:首页|资讯

小钢炮技术教程04|微调MiniCPM,打造你的专属端侧模型

作者:OpenBMB发布时间:2024-09-27

|原文章发布于2024年07月26日


面壁小钢炮 MiniCPM 全网下载量突破 100 万啦!感谢大家的支持与厚爱

期待携手各位开发者朋友们继续前行,欢迎大家跟小钢炮一起玩耍🌟

今天,为大家带来的是MiniCPM微调教程」

➤ 面向人群:能使用基本的bash,会使用python处理数据

➤ 模型介绍:MiniCPM:揭示端侧大语言模型的无限潜力

➤ Github地址:https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16

➤ 模型地址:https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16 

➤  B站配套视频 ,搭配食用更佳 

🔗 https://space.bilibili.com/493282299/channel/collectiondetail?sid=3433564

「面壁小钢炮MiniCPM通关宝典」会在接下来一段时间内持续上新,从技术拆解到部署推理到量化微调,手把手教你速通MiniCPM模型!公众号后台回复“小钢炮”,可解锁知识库全文。


使用官方代码训练(sft推荐)


➤  设备需求:最少一张24g以上,20系列以上显卡

1. 使用git获取官方代码

2. 准备数据集,并处理成以下json格式,每一条数据就是一个message

3. 修改MiniCPM/finetune/lora_finetune_ocnli.sh文件

4. (可选)使用lora\qlora训练

笔者使用1台4090,batchsize为1,deepspeed使用zero3_offload,数据集为官方提供的ocnli_public_chatml。显存使用结果如下lora:使用6-7G显存qlora: 使用5-6G显存

4.1 lora使用:

MiniCPM/finetune/lora_finetune_ocnli.sh文件中增加use_lora参数,

如不确定就把以下代码加到--deepspeed configs/ds_config_zero2_offload.json的前一行

4.2 qlora使用:

MiniCPM/finetune/lora_finetune_ocnli.sh文件中增加use_lora,qlora参数,如不确定就把以下代码加到--deepspeed configs/ds_config_zero2_offload.json的前一行

5. 修改以上bash文件后,输入以下指令开始训练:


使用mlx训练(mac推荐)


➤  设备需求:mac os 14 以上

1. 首先下载llama_format_mlx中所有文件到model_path

文件地址:https://huggingface.co/mlx-community/MiniCPM-2B-sft-bf16-llama-format-mlx

注意:model_path是自定义路径

2. 构造数据

方法1: 使用demo数据

运行MiniCPM/finetune/data_processing.ipynb进行数据处理,获得MiniCPM/finetune/data/mlx_AdvertiseGen路径下train.json和dev.json:

方法2: 自定义数据

step1: 数据集目录存放train.json和dev.json的训练数据和测试数据:

step2: json数据保持以下格式,每行一个字典,每个字典是一条数据,字典存在prompt,input,output三个键

3. 处理数据后开始训练

4. 当前路径下找到adapters.npz,开启测试

5. 使用以下代码进行推理

   

使用llama_factory微调 


dpo,ppo,kto,orpo等算法时推荐

1. 首先安装llama_factory依赖

2. 处理数据

将数据集处理成Minicpm/finetune/llama_factory_example/llama_factory_data文件夹中的格式,示例包括dpo,kto,sft三种微调方式并放置到llama_factory/data目录下

2.1 dpo数据格式

2.2 kto数据格式:其中每个messages代表一条数据,label代表是该条数据的回复是否合理


2.3 sft数据格式如下,每个字典组成一条数据

3. 将数据信息添加到dataset_info.json

在llama_factory/data/dataset_info.json中添加数据集信息,保证dataset_info.json中能找到你的数据集,如下例:

4. 设置训练脚本

4.1 将MiniCPM/finetune/llama_factory_example中文件复制到LLaMA-Factory/examples/minicpm目录下

4.2 根据你需要微调的方式,以dpo为例。LLaMA-Factory/examples/minicpm/minicpm_dpo.yaml必须修改的配置参数如下

4.3 修改LLaMA-Factory/examples/minicpm/single_node.sh文件中以下配置

5. 开始训练


 ➤ 欢迎加入 OpenBMB 社区一起讨论 

后台回复小钢炮”,解锁面壁小钢炮MiniCPM通关宝典全文。


官方网站

https://www.openbmb.org


GitHub

https://github.com/OpenBMBhttps://github.com/thunlp


长期开放招聘|含实习

开发岗  |  算法岗  |  产品岗


交流QQ群

735930538


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1