# 模型微调过程说明文档
## 概览
本文档提供了使用 XTuner 工具进行模型微调过程的详细指南。该过程包括转换、合并、训练以及为不同规模的模型(1.8B 和 20B)设置网络演示。
## 要求
- XTuner
- DeepSpeed
- Huggingface Transformers
- 具备 SSH 和 Git 的使用权限
### 环境安装
```
# 如果你是在 InternStudio 平台,则从本地 clone 一个已有 pytorch 的环境:
# pytorch 2.0.1 py3.10_cuda11.7_cudnn8.5.0_0
studio-conda xtuner0.1.17
# 如果你是在其他平台:
# conda create --name xtuner0.1.17 python=3.10 -y
# 激活环境
conda activate xtuner0.1.17
# 进入家目录 (~的意思是 “当前用户的home路径”)
cd ~
# 创建版本文件夹并进入,以跟随本教程
mkdir -p /root/xtuner0117 && cd /root/xtuner0117
# 拉取 0.1.17 的版本源码
git clone -b v0.1.17 https://github.com/InternLM/xtuner
# 无法访问github的用户请从 gitee 拉取:
# git clone -b v0.1.15 https://gitee.com/Internlm/xtuner
# 进入源码目录
cd /root/xtuner0117/xtuner
# 从源码安装 XTuner
pip install -e '.[all]'
```
## 1. 1.8B 模型训练
### 1.1 数据准备
```
# 在ft这个文件夹里再创建一个存放数据的data文件夹,存储数据
mkdir -p /root/ft/data && cd /root/ft/data
```
### 1.2 准备模型
```
# 创建目标文件夹,确保它存在。
# -p选项意味着如果上级目录不存在也会一并创建,且如果目标文件夹已存在则不会报错。
mkdir -p /root/ft/model
# 复制内容到目标文件夹。-r选项表示递归复制整个文件夹。
cp -r /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b/* /root/ft/model/
```
如果是需要自己下载,可以使用transformers库
```
from transformers import AutoModel
# 指定模型名称
model_name = 'internlm/internlm2-chat-1_8b'
# 加载模型
model = AutoModel.from_pretrained(model_name)
# 指定保存模型的目录
model_save_path = '/root/ft/model'
# 保存模型
model.save_pretrained(model_save_path)
```
将这段代码保存为 `download_model.py`,然后在命令行中运行这个脚本:
```
python download_model.py
```
这个脚本会自动下载模型并将其保存到指定的 `/root/ft/model` 目录中。
### 1.3 下载配置文件
```
# XTuner 提供多个开箱即用的配置文件,用户可以通过下列命令查看:
# 列出所有内置配置文件
# xtuner list-cfg
# 假如我们想找到 internlm2-1.8b 模型里支持的配置文件
xtuner list-cfg -p internlm2_1_8b
# 创建一个存放 config 文件的文件夹
mkdir -p /root/ft/config
# 使用 XTuner 中的 copy-cfg 功能将 config 文件复制到指定的位置
xtuner copy-cfg internlm2_1_8b_qlora_alpaca_e3 /root/ft/config
```
### 1.4 修改配置参数
```
# 修改模型地址(在第27行的位置)
- pretrained_model_name_or_path = 'internlm/internlm2-1_8b'
+ pretrained_model_name_or_path = '/root/ft/model'
# 修改数据集地址为本地的json文件地址(在第31行的位置)
- alpaca_en_path = 'tatsu-lab/alpaca'
+ alpaca_en_path = '/root/ft/data/personal_assistant.json'
# 修改max_length来降低显存的消耗(在第33行的位置)
- max_length = 2048
+ max_length = 1024
# 减少训练的轮数(在第44行的位置)
- max_epochs = 3
+ max_epochs = 2
# 增加保存权重文件的总数(在第54行的位置)
- save_total_limit = 2
+ save_total_limit = 3
# 修改每多少轮进行一次评估(在第57行的位置)
- evaluation_freq = 500
+ evaluation_freq = 300
# 修改具体评估的问题(在第59到61行的位置)
# 把 OpenAI 格式的 map_fn 载入进来(在第15行的位置)
- from xtuner.dataset.map_fns import alpaca_map_fn, template_map_fn_factory
+ from xtuner.dataset.map_fns import openai_map_fn, template_map_fn_factory
# 将原本是 alpaca 的地址改为是 json 文件的地址(在第102行的位置)
- dataset=dict(type=load_dataset, path=alpaca_en_path),
+ dataset=dict(type=load_dataset, path='json', data_files=dict(train=alpaca_en_path)),
# 将 dataset_map_fn 改为通用的 OpenAI 数据集格式(在第105行的位置)
- dataset_map_fn=alpaca_map_fn,
+ dataset_map_fn=None,
```
### 1.5 模型训练
```
# 指定保存路径
xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train
# 使用 deepspeed 来加速训练
xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train_deepspeed --deepspeed deepspeed_zero2
```
### 1.6 转换到 Huggingface 格式
1. **创建目录**:为转换后的 Huggingface 模型创建一个存储目录:
```bash
mkdir -p /root/ft/huggingface/i8000
```
2. **模型转换**:使用提供的配置和权重文件进行模型转换:
```bash
xtuner convert pth_to_hf /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py /root/ft/train_deepspeed/iter_18000.pth /root/ft/huggingface/i8000 --fp32
```
3. **合并模型**:合并模型并解决依赖关系:
```bash
mkdir -p /root/ft/final_model_8000
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/ft/model /root/ft/huggingface/1i8000 /root/ft/final_model_18000
```
4. **测试模型**:通过启动对话来测试模型:
```bash
xtuner chat /root/ft/final_model_18000 --prompt-template internlm2_chat
```
### 1.7 模型续训
```bash
xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train_deepspeed --resume /root/ft/train_deepspeed/iter_8500.pth --deepspeed deepspeed_zero1
```
### 1.8 网络演示设置
1. **准备环境**:
```bash
mkdir -p /root/ft/web_demo && cd /root/ft/web_demo
git clone https://github.com/InternLM/InternLM.git
cd /root/ft/web_demo/InternLM
```
2. **运行演示** 使用 Streamlit:
```bash
streamlit run /root/ft/web_demo/InternLM/chat/web_demo.py --server.address 127.0.0.1 --server.port 6006
```
3. **通过 SSH 隧道访问演示**:
```bash
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 开发机端口号
```
## 2. 20B 模型训练
与1.8B模型训练过程类似,20B模型训练涉及到为配置、数据和最终模型创建相应的目录。此外,这一过程还包括使用多个GPU进行模型训练,并将模型转换为Huggingface格式。
### 2.1 数据准备
为大规模的20B模型训练准备数据。
```bash
# 创建一个专用于存放20B模型数据的目录
mkdir -p /root/ft20b/data && cd /root/ft20b/data
```
### 2.2 准备模型
准备模型包括创建目标文件夹并将预训练的20B模型复制到指定位置。
```bash
# 创建一个目录用来存放20B模型文件
mkdir -p /root/ft20b/model
# 将预训练的模型复制到新创建的目录中
cp -r /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-20b/* /root/ft20b/model/
```
### 2.3 下载配置文件
下载并准备20B模型的配置文件,以便进行训练。
```bash
# 列出所有支持20B模型的配置文件
xtuner list-cfg -p internlm2_20b
# 创建一个目录用于存放20B模型的配置文件
mkdir -p /root/ft20b/config
# 复制所需的配置文件到新创建的目录中
xtuner copy-cfg internlm2_20b_qlora_alpaca_e3 /root/ft20b/config
```
### 2.4 修改配置参数
根据训练需求调整配置文件,以优化20B模型的训练。
```bash
# 修改模型路径和数据集路径等关键参数以适配20B模型
- pretrained_model_name_or_path = 'internlm/internlm2-20b'
+ pretrained_model_name_or_path = '/root/ft20b/model'
- alpaca_en_path = 'tatsu-lab/alpaca'
+ alpaca_en_path = '/root/ft20b/data/specific_dataset.json'
- max_length = 2048
+ max_length = 1024
- max_epochs = 3
+ max_epochs = 2
- save_total_limit = 2
+ save_total_limit = 3
- evaluation_freq = 500
+ evaluation_freq = 300
```
### 2.5 模型训练
使用DeepSpeed和多GPU配置来加速20B模型的训练过程。
```bash
# 指定保存路径并开始训练
xtuner train /root/f
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
个人深耕AI大模型应用领域积累的成果,希望对您有所帮助。有大模型账号、环境问题、AI大模型技术应用落地方案等相关问题,欢迎详聊,能为您解决问题是我的荣幸! 个人深耕AI大模型应用领域积累的成果,希望对您有所帮助。有大模型账号、环境问题、AI大模型技术应用落地方案等相关问题,欢迎详聊,能为您解决问题是我的荣幸! 个人深耕AI大模型应用领域积累的成果,希望对您有所帮助。有大模型账号、环境问题、AI大模型技术应用落地方案等相关问题,欢迎详聊,能为您解决问题是我的荣幸! 个人深耕AI大模型应用领域积累的成果,希望对您有所帮助。有大模型账号、环境问题、AI大模型技术应用落地方案等相关问题,欢迎详聊,能为您解决问题是我的荣幸! 个人深耕AI大模型应用领域积累的成果,希望对您有所帮助。有大模型账号、环境问题、AI大模型技术应用落地方案等相关问题,欢迎详聊,能为您解决问题是我的荣幸! 个人深耕AI大模型应用领域积累的成果,希望对您有所帮助。有大模型账号、环境问题、AI大模型技术应用落地方案等相关问题,欢迎详聊,能为您解决问题是我的荣幸!
资源推荐
资源详情
资源评论
收起资源包目录
微调internlm2模型实现针对煤矿事故和煤矿安全知识的智能问答。.zip (123个子文件)
煤矿安全生产管理措施和方法.doc 17KB
煤矿安全技术措施汇编.docx 47KB
煤矿安全技术措施.docx 37KB
index.faiss 2.29MB
GLM-4-integrated-qa-neo4j-langchain.ipynb 32KB
CoalMineLLM-InternLM2_Chat-1_8B-integrated-qa-neo4j-langchain.ipynb 30KB
Untitled-checkpoint.ipynb 72B
deploy_4.jpg 78KB
robot.jpg 52KB
robot.jpg 50KB
CoalQA_data.json 5KB
README.md 12KB
README.md 10KB
README.md 8KB
README.md 8KB
lmdeploy.md 3KB
finetune.md 748B
READMED.md 628B
README.md 511B
README.md 447B
README-checkpoint.md 257B
技术报告.pdf 1.75MB
index.pkl 3.11MB
架构图16:9.png 3.26MB
架构图2.png 2.66MB
coal_mine_safety.png 1.52MB
coal_mine_safety.png 1.52MB
coal_mine_safety.png 1.52MB
架构图3.png 1.32MB
deploy_1.png 1.23MB
deploy_1_1.png 1.17MB
测试效果.png 427KB
煤矿安全答题.png 419KB
ans.png 361KB
答题.png 361KB
自我认知.png 331KB
架构图1.png 212KB
事故类型问答2.png 149KB
RAG.png 106KB
internlm2-chat-7b.png 96KB
deploy_2.png 86KB
事故查询.png 78KB
事故类型问答1.png 62KB
internlm2-chat-1_8b.png 59KB
deploy_3.png 19KB
app.py 13KB
web_app.py 13KB
web_demo.py 11KB
streamlit_app.py 11KB
streamit_app-checkpoint.py 10KB
data_generate.py 10KB
main.py 10KB
internlm2_20b_full_finetune_custom_dataset_e1_copy.py 8KB
internlm2_chat_7b_qlora_alpaca_e3_copy.py 8KB
internlm2_1_8b_full_alpaca_e3_copy.py 7KB
pdf_read.py 6KB
pipeline.py 5KB
Generate_QAdata.py 2KB
CoalLLM.py 2KB
generate_personal_assistant.py 2KB
config.py 2KB
streamlit_lmdeploy.py 1KB
streamit_lmdeploy-checkpoint.py 1KB
cli_demo.py 1011B
Generate_Question_bank.py 1002B
format_internlm2.py 924B
gradio_app.py 917B
rerank.py 715B
stop_criteria.py 576B
merge_json.py 567B
shuffle.py 465B
format_json.py 453B
download_model.py 393B
app.py 127B
config.cpython-310.pyc 1KB
2-煤矿建设安全规程.txt 351KB
3-《煤矿建设安全规范》.txt 187KB
5-爆破安全规程.txt 182KB
61-煤矿建设项目安全设施设计审查和竣工验收规范.txt 140KB
73-煤炭工业露天设计规范标准.txt 102KB
60-矿山救护规程.txt 99KB
25-防治煤与瓦斯突出细则.txt 86KB
12-煤矿井下运输设计规范.txt 81KB
26-煤矿防治水细则.txt 77KB
10-煤矿防治水规定.txt 75KB
54-煤矿井巷工程质量检验评定标准.txt 73KB
6-煤矿安全风险预控管理体系规范.txt-zxq.txt 45KB
4-GB50471-2008煤矿瓦斯抽采工程设计规范.txt 43KB
64-煤矿安全监控系统通用技术要求.txt 36KB
42-煤矿井下消防洒水设计规范.txt 33KB
27-防治煤矿冲击地压细则.txt 26KB
34-瓦斯抽采工程设计规范.txt 25KB
80-煤矿瓦斯抽采工程技术标准.txt 24KB
20-中华人民共和国矿山安全法实施条例.txt 24KB
9-煤矿的井工开采通风技术条件.txt 21KB
39-煤矿井下粉尘综合防治技术规范.txt 19KB
51-煤矿瓦斯抽采(放)监控系统通用技术条件.txt 19KB
71-AQ1020-2008煤矿井下粉尘综合防治技术规范.txt 18KB
32-中华人民共和国矿山资源法.txt 17KB
7-煤矿安全监察条例.txt 16KB
共 123 条
- 1
- 2
资源评论
- Losbyte2024-08-23这个资源总结的也太全面了吧,内容详实,对我帮助很大。
季风泯灭的季节
- 粉丝: 1723
- 资源: 3371
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功