张裕 发表于 2025-1-20 16:26:30

wsl乌班图环境利用LLamaFactory装载千问多模态大模型流程演练

乌班图环境中安装Miniconda

启动乌班图(关于乌班图的安装与通例利用,请参考我的另外已篇文章windows系统中怎样利用乌班图)
https://i-blog.csdnimg.cn/direct/fe4b76d4dcce4e80ab4ba59d61f3002e.png
nvidia-smi命令验证 GPU 是否可以在 WSL2 中被准确辨认
https://i-blog.csdnimg.cn/direct/fa77d72b06914e6486019050b72feb6a.png
安装 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
按照安装程序的指示完成安装,并初始化 Conda
https://i-blog.csdnimg.cn/direct/b28ecad54c0147d7b2fb744c5b512a54.png
https://i-blog.csdnimg.cn/direct/d0a9f3caca9b49ffb9f987c0ebf8f111.png
https://i-blog.csdnimg.cn/direct/30e15db962f14b4eb7ce54d49939b235.png
https://i-blog.csdnimg.cn/direct/ff33391deef44dfc80b8e8afccdc8c6f.png
询问每次启动终端时是否自动激活 conda 的 base 环境
如果选择no,每次必要自己conda activvate 手动激活base环境
如果选了 “yes” 但之后改变了主意,可以通过以下命令关闭自动激活:conda config --set auto_activate_base false
如果已经让 Miniconda 修改了 shell 设置文件,并且想要恢复原状,可以利用conda init --reverse                                    S                         H                         E                         L                         L                         恢复选中了                         n                         o                         必要手动激活                         b                         a                         s                         e                         环境                         e                         v                         a                         l                         "                              SHELL 恢复 选中了no 必要手动激活base环境 eval "                  SHELL恢复选中了no必要手动激活base环境eval"(/root/miniconda3/bin/conda shell.bash hook)"
https://i-blog.csdnimg.cn/direct/eb99afbf7cc4479099742e84799ff834.png
为LLamaFactory 创建一个新的 conda 环境

conda create -n LLama_qwen2 python=3.10
https://i-blog.csdnimg.cn/direct/5a3cc4052c8d42a8a15a28c54641d6b0.png
conda环境创建好后,切换环境 conda activate LLama_qwen2
https://i-blog.csdnimg.cn/direct/72613ce1c3ab4c8b9509ed53c1959c5d.png
安装 LLamaFactory 和其他依赖项

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e "."
为了加快速度,背面再加一个镜像源
-i https://pypi.tuna.tsinghua.edu.cn/simple
https://i-blog.csdnimg.cn/direct/e86a399eccf24989948a6d1372304235.png
llamafactory-cli version 查抄是否安装成功
https://i-blog.csdnimg.cn/direct/409d7deb92f547ee93a7baf398cb3726.png
预备数据集

先用自带的mllm_demo_data做测试,验证微调功能
预备预训练大模型

在 llama-factory目录下创建models存放千问大模型通义千问2-VL-2B-Instruct
cd models
git clone https://www.modelscope.cn/Qwen/Qwen2-VL-2B-Instruct.git
https://i-blog.csdnimg.cn/direct/cd075bb37fa54beda776ec85ea106d4f.png
模型下载成功
https://i-blog.csdnimg.cn/direct/93ede73ea74545569300f948069b5cdb.png
启动LLamaFactory web ui 页面

llamafactory-cli webui 启动失败
修改端口 export GRADIO_SERVER_PORT=7438 GRADIO_ROOT_PATH=/${JUPYTER_NAME}/proxy/7438/
重新启动,还是失败
https://i-blog.csdnimg.cn/direct/7e8479b8427f40d2916df42d87543e56.png
仔细分析后想起,我是在当地部署的环境,并没有放在阿里云的jupyter里进部署,所以GRADIO_ROOT_PATH这个就不必要了,只要设置端口号即可
先查变量设置
echo $GRADIO_SERVER_PORT
echo $GRADIO_ROOT_PATH
然后用unset GRADIO_ROOT_PATH命令清除之前的路径设置
再重新设置端口
https://i-blog.csdnimg.cn/direct/2d24c7b491de4fc2a9bf94e4bcaa7ab6.png
重新访问地点 http://127.0.0.1:7558/ 页面加载成功
https://i-blog.csdnimg.cn/direct/2b45c2dc07144bb8b6bd93d76430d42e.png
设置页面加载模型,报错
检察Qwen2官网说明,要求安装transformers版本,好吧,试试看可否办理问题
pip install git+https://github.com/huggingface/transformers
报错如下
https://i-blog.csdnimg.cn/direct/2a9c977ede0a4690921377064c759c2d.png
#更新 Git
sudo apt update
sudo apt install --only-upgrade git
git config --global url.“http://”.insteadOf https:// #设置 Git 利用 HTTP 而不是 HTTPS #git config --global --unset url.“http://”.insteadOf 恢复默认设置
再次实验 pip install git+https://github.com/huggingface/transformers
安装成功,报错如下
https://i-blog.csdnimg.cn/direct/1fe07d2651204df49b2e442df13ad167.png
去修改LLama中的源文件
为便捷操作利用windows页面去修改,
Win + E 打开文件资源管理器输入 \wsl$ 回车,后续同windows操作
修改
https://i-blog.csdnimg.cn/direct/a4eaccd2c9734e558c770598fc9ca5e7.png
https://i-blog.csdnimg.cn/direct/b5711391d8c64736bddf7cb09243de5c.png
https://i-blog.csdnimg.cn/direct/3e062836c7324fc9bc85548e840221a4.png
https://i-blog.csdnimg.cn/direct/a5b8249a099e4679b6a2cb4f5ca256dd.png
搞了一圈,都没办理问题,反复检察LLama的官方说明,决定重新安装LLama依赖
pip install -e “.”
pip install --no-deps -e . #利用这个消除包冲突
按理说应该可以加载模型了呀,但是为啥还是报错呢
仔细排查,发现Qwen2的文件夹巨细不对,可能是乌班图git clone没有完成,于是windows中重新git clone
试试看。嗯~ 加载模型没有报错,看着应该是成了。
开端测试Qwen2-VL模型

进入chat页面测试一下模型装载是否成功
input里输入: “脸上长痘痘了,有什么发起吗?”
chat回答: 如下图。
看着还像那么回事,反正比花百十块看一个皮肤科专家给我说的话多,o( ̄︶ ̄)o
https://i-blog.csdnimg.cn/direct/9a40172bf8494aefa5676dbfd38864a2.png
再试试视频,训练过的貌似都还不错,再试试看没训练过的图片
https://i-blog.csdnimg.cn/direct/87065a8287814ba0a588e1cf677be419.png
就从MedTrinity-25M中选一张头颅CT试试看
https://i-blog.csdnimg.cn/direct/c4abafad53fc427a9944b4a002097bc9.png
辨认出是脑部CT,再测试一下诊断问题
https://i-blog.csdnimg.cn/direct/1fba0a19889a458ba667d665e230bae5.png
看起来Qwen2-VL-2B-Instruct对图片的通时能力还是不错的,但对于影像诊断的专业知识还不具备。
背面来试试看用MedTrinity-25M对模型进行微调训练。
MedTrinity-25M小数据量微调Qwen2-VL-2B-Instruct

当地机器GPU性能较差,选取3条MedTrinity-25M中的数据当地微调,测试一卑鄙程,大数据打算放到云服务器上跑
1. 数据格式预备

按照LLamaFactory的数据格式要求,图片+文本数据预备成这样
https://i-blog.csdnimg.cn/direct/00948b265942475aaa4092b54b143d38.png
将图片文件夹放入data目录内
2. 修改代码文件

dataset_info.json 中增长数据源信息设置,只有这里设置了LLamaFactoryUI页面才能看到数据源
https://i-blog.csdnimg.cn/direct/e9f26ee019f5420f828f950f3479285e.png
3. 设置LLama factory 训练参数 启动训练

https://i-blog.csdnimg.cn/direct/76cd708ff8e94ad0b548bf59d040444b.png当地大约颠末非常钟的训练就跑结束了,来看看qwen2-VL模型生成的lora训练模型补丁文件,这个要与原模型合并导出后才能用
https://i-blog.csdnimg.cn/direct/5b96f52bc9be45fa90de6708e245534a.png
4. 导出模型

把页签切换到Export,将原模型与lora补丁模型合并导出
https://i-blog.csdnimg.cn/direct/e2a77a4f089245f0a3aad34637307357.png
导出成功
https://i-blog.csdnimg.cn/direct/3b8708eb25b9488ca56246c63d0c415e.png
5. 测试微调模型

返回到chat页面,卸载原模型,重新装入上面导出的模型
https://i-blog.csdnimg.cn/direct/f9c4bcc9cd354aa7ade831afa0f08581.png
模型装载成功,3张微调照片的力量实在微不足道,sft模型测试虽然和原模型效果差不多,但已经能分得出颅骨和大脑边界,已经超出预期。流程也已经跑通,下一节将记载云服务器大批量微调训练MedTrinity-25M实行的过程和结果。
(末了,感谢zhuge大神提供的流程指导和MedTrinity-25M转化后的数据集!)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: wsl乌班图环境利用LLamaFactory装载千问多模态大模型流程演练