感兴趣的小伙伴可以点击浏览 ——「闯关手册」第四期书生大模型实战营 ,了解最全面活动的信息:Docs


目录

环境配置

训练环境配置

推理环境配置

​编辑​编辑

LMDeploy部署

LMDeploy基本用法介绍

网页应用部署体验

遇到的问题

XTuner微调实践

准备基本配置文件

配置文件参数解读

开始微调

开启AI美食鉴赏家


环境配置

训练环境配置

创建开发机参数如下:

  • 开发机名称:你自己喜欢的名字
  • 镜像:Cuda12.2-conda
  • 资源配置:50% A100 * 1 (需要完成基础关卡或完成6人以上的邀请解锁算力)
  • 其余默认

完成SSH远程连接后,新建虚拟环境并进入:

conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env

安装与deepspeed集成的xtuner和相关包:

pip install -U 'xtuner[deepspeed]' timm==1.0.9
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121
pip install transformers==4.39.0

推理环境配置

配置推理所需环境("lmdeploy" 为推理使用环境名):

conda create -n lmdeploy python=3.10 -y
conda activate lmdeploy
pip install lmdeploy gradio==4.44.1 timm==1.0.9

LMDeploy部署

LMDeploy基本用法介绍

我们主要通过 pipeline.chat 接口来构造多轮对话管线,核心代码为(这里直接copy了课程文档里的内容):

## 1.导入相关依赖包
from lmdeploy import pipeline, TurbomindEngineConfig, GenerationConfig
from lmdeploy.vl import load_image

## 2.使用你的模型初始化推理管线
model_path = "your_model_path"
pipe = pipeline(model_path,
                backend_config=TurbomindEngineConfig(session_len=8192))
                
## 3.读取图片(此处使用PIL读取也行)
image = load_image('your_image_path')

## 4.配置推理参数
gen_config = GenerationConfig(top_p=0.8, temperature=0.8)
## 5.利用 pipeline.chat 接口 进行对话,需传入生成参数
sess = pipe.chat(('describe this image', image), gen_config=gen_config)
print(sess.response.text)
## 6.之后的对话轮次需要传入之前的session,以告知模型历史上下文
sess = pipe.chat('What is the woman doing?', session=sess, gen_config=gen_config)
print(sess.response.text)

网页应用部署体验

可以使用UI界面先体验与InternVL对话:

拉取本教程的github仓库https://github.com/Control-derek/InternVL2-Tutorial.git

注意:demo.py文件中,MODEL_PATH处传入InternVL2-2B的路径,如果使用的是InternStudio的开发机则无需修改,否则改为模型路径。 

遇到的问题

先遇到该问题:

进入网页时显示出如下界面,提示少包,我们按照要求下载并将包mv到指定位置:

mv /root/InternVL2-Tutorial/demo/frpc_linux_amd64_v0.2 /root/.conda/envs/lmdeploy/lib/python3.10/site-packages/gradio/frpc_linux_amd64_v0.2

再次运行,报错如下,且网页依旧无法显示: 

试了非常久,希望大家不会出现这个问题。

这里给出一种解决措施:
WIN+R -- cmd --> 输入:

ssh -p (SSH登入命令里看) root@ssh.intern-ai.org.cn -CNg -L 1096:127.0.0.1:1096 -o StrictHostKeyChecking=no

接着网页打开:127.0.0.1:1096

测试结果如上,它将小笼包识别成了饺子,说明当前的模型尚且需要微调。

所以,接下来我们进行......

但在这之前,先解决一下多次提问输入不了的问题:

如果没找到目录,可以用下面的方法:

cd /conda/envs/lmdeploy/lib/python3.10/site-packages/lmdeploy/vl/

 vim engine.py 打开文件,找到对应语句,

  • 进入插入模式:按下 i 键。
  • 保存并退出:按下 Esc 键,然后输入 :wq 并按 Enter
  • 放弃更改并退出:按下 Esc 键,然后输入 :q! 并按 Enter

完成后如下: 


XTuner微调实践

准备基本配置文件

在InternStudio开发机的/root/xtuner路径下,先进入工作目录并激活训练环境:

但是,其实是没有xtuner文件的,先在/root路径下克隆一下:

git clone https://github.com/InternLM/xtuner.git
cd xtuner

原始internvl的微调配置文件在路径./xtuner/configs/internvl/v2下,假设上面克隆的仓库在/root/InternVL2-Tutorial,复制配置文件到目标目录下:

cp /root/InternVL2-Tutorial/xtuner_config/internvl_v2_internlm2_2b_lora_finetune_food.py /root/xtuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py

配置文件参数解读

 Xmind AI: The Best AI Brainstorming & Mind Mapping Tool 第一幅图的link


开始微调

注意:这里直接用的share目录下处理好的数据集。

微调参数在:
/root/xtuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py 
可以直接运行。

xtuner train internvl_v2_internlm2_2b_lora_finetune_food --deepspeed deepspeed_zero2

也可以指定位置运行:

xtuner train /root/xtuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py --deepspeed deepspeed_zero2

 看到有日志输出,即为启动成功:

课程文档里的图
自己跑的,报错了

无法发现文件,我们给出全路径继续跑一次(记得检查是否安装了
pip install -U 'xtuner[deepspeed]' timm==1.0.9,没装会报错
): 

慢慢炼吧~ 

大早上又train了一遍,大概花2h,大家控制一下算力点数,尽量节约资源哦~


微调后,把模型checkpoint的格式转化为便于测试的格式:

python xtuner/configs/internvl/v1_5/convert_to_official.py xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py ./work_dirs/internvl_v2_internlm2_2b_lora_finetune_food/iter_640.pth ./work_dirs/internvl_v2_internlm2_2b_lora_finetune_food/lr35_ep10/

运行成功之后,大概是这样的: 

接下来,开始检验微调后的效果吧~ 


开启AI美食鉴赏家

修改MODEL_PATH为刚刚转换后保存的模型路径:

同第2节中做的那样,启动网页应用:

cd /root/InternVL2-Tutorial
conda activate lmdeploy
python demo.py

开始啦! 

成功识别了小笼包,也能简单描述特定,判断是什么菜系。

欢迎大伙儿参与活动体验和留言交流~ 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐