赞
踩
在开始之前你需要准备:
https://github.com/SmartFlowAI/Llama3-Tutorial/ (欢迎 Star,里面包含源代码库以及每一章节对应的笔记)
https://www.bilibili.com/video/BV1Kr421u71u/ (是大致流程的合集视频)
在共学计划中邀请三位好友注册即可解锁 InternStudio 的30%A100算力支持,算力点管饱
拥有了笔记,教学,算力。现在,学习开始
自行安装vscode,打开左边的扩展,搜索remote-ssh点击 Install ,安装 Remote SSH 的同时也会自行安装Remote - SSH: Editing Configurat以及Remote Explorer
安装完成后显示
其余步骤见下面链接,很详细
Llama3-Tutorial/docs/env.md at main · SmartFlowAI/Llama3-Tutorial · GitHub
- # 创建,激活,版本配置,直接复制即可,版本需要一一对应
- conda create -n llama3 python=3.10
- conda activate llama3
- conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
-
- # 新建model文件夹
- mkdir -p ~/model
- cd ~/model
-
- # 软链接 InternStudio 中的模型,即创建一个名为 Meta-Llama-3-8B-Instruct 的符号链接,可以在不复制实际文件的情况下访问该路径文件或目录
- ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct ~/model/Meta-Llama-3-8B-Instruct
- # 克隆一个名为 Llama3-Tutorial 的Git仓库到当前用户的家目录下
- cd ~
- git clone https://github.com/SmartFlowAI/Llama3-Tutorial
-
- # 安装 XTuner 时会自动安装其他依赖
- cd ~
- git clone -b v0.1.18 https://github.com/InternLM/XTuner
- cd XTuner
- pip install -e .
-
- # 运行web_demo.py
- streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
- ~/model/Meta-Llama-3-8B-Instruct
注意:这些是在llama3环境下进行,而不是base环境,若重新进入请conda activate llama3,后续两小结便是如此。
可以看到端口为8501
将8501输入至端口,点击转发地址中的浏览器链接
注意:这里可能出现页面报错osError,将10%算力提升至30%即可
最终得到这样的页面
恭喜你,成功完成了第一节课!!!!
Llama3-Tutorial/docs/assistant.md at main · SmartFlowAI/Llama3-Tutorial · GitHub
机智流github本节笔记链接,环境配置与web部署部分已在上述中完成,所以我们直接开始
- # 进入环境
- conda activate llama3
-
- # 进入数据集
- cd ~/Llama3-Tutorial
-
- # 按照本节b站视频中,对/root/Llama3-Tutorial/tools/gdata.py中的name运行调整
- # 注意直接粘贴可能不成功,左侧会出现蓝色标志,需要进行确认替换,之后运行
- python tools/gdata.py
-
- # 运行成功之后会在/root/Llama3-Tutorial/data/personal_assistant.json这个文件中显示
- # 验证XTuner是否存在
- pip list
- cd ~/Llama3-Tutorial
-
- # 开始训练,使用 deepspeed 加速,A100 40G显存 耗时24分钟
- xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth
-
- # 退出当前文档
- cd ..
- # 查看微调工作路径是否存在
- ls
- # 工作路径
- cd llama3_pth
- # 查看工作路径
- ls
- # 示例
- 20240505_171901 20240505_195336 iter_500.pth iter_672.pth last_checkpoint llama3_8b_instruct_qlora_assistant.py
-
- # Adapter PTH 转 HF 格式
- xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \
- /root/llama3_pth/iter_500.pth \
- /root/llama3_hf_adapter
-
- # 模型合并
- export MKL_SERVICE_FORCE_INTEL=1
- xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
- /root/llama3_hf_adapter\
- /root/llama3_hf_merged
-
- # 查看并进入刚刚的路径 llama3_hf_merged
- cd ~
- ls
- cd llama3_hf_merged
- ls
注意:若报错ImportError: deepspeed is not installed properly, please check.,则表明你的Python环境中缺少名为deepspeed的模块,请执行以下命令
pip install deepspeed
得到如图所示训练好的模型文件
- # 像第一节课一样使用streamlit与微调后的Llama3路径进行对话
- # 这里的路径是微调后的llama3路径也就是 /root/llama3_hf_merged
- # 运行代码,输入端口,进入web
- streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
- /root/llama3_hf_merged
恭喜你!微调成功!!!完成第二节课的学习!!!
【十天后再测,发现模型似乎忘记微调的内容了】
环境与clone的仓库,与前两节一致,因此直接准备模型
- mkdir -p ~/model
- cd ~/model
- ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct .
若出现ln: failed to create symbolic link './Meta-Llama-3-8B-Instruct': File exists报错,说明已存在,则使用以下命令查看即可
ls -l
直接复制即可
- # 接下来准备Llava所需要的 openai/clip-vit-large-patch14-336,权重,即 Visual Encoder 权重。
- mkdir -p ~/model
- cd ~/model
- ln -s /root/share/new_models/openai/clip-vit-large-patch14-336 .
-
直接复制即可
- # 最后准备 Llava 将要用到的 Image Projector 部分权重。
- mkdir -p ~/model
- cd ~/model
- ln -s /root/share/new_models/xtuner/llama3-llava-iter_2181.pth .
我们按照 Tutorial/xtuner/llava/xtuner_llava.md at camp2 · InternLM/Tutorial · GitHub 中的教程来准备微调数据。为了可以快速上手,我们选择了使用过拟合的方式快速实现。
- # 直接一步步运行即可
- cd ~
-
- git clone https://github.com/InternLM/tutorial -b camp2
- # 下面报错跟之前一样,已存在
- # fatal: destination path 'tutorial' already exists and is not an empty directory.
- python ~/tutorial/xtuner/llava/llava_data/repeat.py \
- -i ~/tutorial/xtuner/llava/llava_data/unique_data.json \
- -o ~/tutorial/xtuner/llava/llava_data/repeated_data.json \
- -n 200
以下是可以一键启动的配置文件,主要是修改好了模型路径、对话模板以及数据路径。训练所需显存为44447MiB,请注意查看开发机配置
- # 如果你使用的是30%A100,则使用以下命令,训练过程持续4-5小时左右
- xtuner train ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py --work-dir ~/llama3_llava_pth --deepspeed deepspeed_zero2_offload
-
- # 如果你使用60%及以上的A100,则使用以下命令,训练过程大概1小时左右
- xtuner train ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py --work-dir ~/llama3_llava_pth --deepspeed deepspeed_zero2
-
- # 训练好之后,我们将原始 image projector 和 我们微调得到的 image projector 都转换为 HuggingFace 格式,为了下面的效果体验做准备。
- xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
- ~/model/llama3-llava-iter_2181.pth \
- ~/llama3_llava_pth/pretrain_iter_2181_hf
-
- #三行直接复制
- xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
- ~/llama3_llava_pth/iter_1200.pth \
- ~/llama3_llava_pth/iter_1200_hf
注意:报错ModuleNotFoundError: No module named 'mpi4py',说明我们没有安装mpi4py模块,使用以下命令安装即可,使用pip install mpi4py可能会有其他的报错
conda install -c conda-forge mpi4py
问题1:Describe this image. 问题2:What is the equipment in the image?
- export MKL_SERVICE_FORCE_INTEL=1
- xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
- --visual-encoder /root/model/clip-vit-large-patch14-336 \
- --llava /root/llama3_llava_pth/pretrain_iter_2181_hf \
- --prompt-template llama3_chat \
- --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg
此时可以看到,Pretrain 模型只会为图片打标签,并不能回答问题。
- export MKL_SERVICE_FORCE_INTEL=1
- xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
- --visual-encoder /root/model/clip-vit-large-patch14-336 \
- --llava /root/llama3_llava_pth/iter_1200_hf \
- --prompt-template llama3_chat \
- --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg
经过 Finetune 后,我们可以发现,模型已经可以根据图片回答我们的问题了。
这里我遇到了个奇怪的问题,日志中提取出来报错信息如下,但是此时/root/llama3_llava_pth是存在的,一切按照步骤指导的步骤来,这里出现问题导致微调到1000/1200时报错中断了,所以后续的几张效果图使用的是教学文档中的,有大佬评论区能指点一二吗
RuntimeError: Parent directory /root/llama3_llava_pth/iter_1000.pth does not exist.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。