当前位置:   article > 正文

Llma3大模型----五一共学笔记-1_liama3 大模型 训练 数据集

liama3 大模型 训练 数据集

一、前期准备

在开始之前你需要准备:

1.机智流的github项目链接

https://github.com/SmartFlowAI/Llama3-Tutorial/ (欢迎 Star,里面包含源代码库以及每一章节对应的笔记)

2.机智流的b站教学视频

https://www.bilibili.com/video/BV1Kr421u71u/ (是大致流程的合集视频)

3.一张30%A100显卡及以上

在共学计划中邀请三位好友注册即可解锁 InternStudio 的30%A100算力支持,算力点管饱

拥有了笔记,教学,算力。现在,学习开始

4.使用vscode远程连接开发机

自行安装vscode,打开左边的扩展,搜索remote-ssh点击 Install ,安装 Remote SSH 的同时也会自行安装Remote - SSH: Editing Configurat以及Remote Explorer

安装完成后显示

其余步骤见下面链接,很详细

Llama3-Tutorial/docs/env.md at main · SmartFlowAI/Llama3-Tutorial · GitHub

二、本地web部署(实践InternStudio 版)

1.环境配置模型下载(这里的环境配置在前三节中通用,后续不做赘述)

  1. # 创建,激活,版本配置,直接复制即可,版本需要一一对应
  2. conda create -n llama3 python=3.10
  3. conda activate llama3
  4. conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
  5. # 新建model文件夹
  6. mkdir -p ~/model
  7. cd ~/model
  8. # 软链接 InternStudio 中的模型,即创建一个名为 Meta-Llama-3-8B-Instruct 的符号链接,可以在不复制实际文件的情况下访问该路径文件或目录
  9. ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct ~/model/Meta-Llama-3-8B-Instruct

2.Web Demo部署

执行以下步骤

  1. # 克隆一个名为 Llama3-Tutorial 的Git仓库到当前用户的家目录下
  2. cd ~
  3. git clone https://github.com/SmartFlowAI/Llama3-Tutorial
  4. # 安装 XTuner 时会自动安装其他依赖
  5. cd ~
  6. git clone -b v0.1.18 https://github.com/InternLM/XTuner
  7. cd XTuner
  8. pip install -e .
  9. # 运行web_demo.py
  10. streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
  11. ~/model/Meta-Llama-3-8B-Instruct

注意:这些是在llama3环境下进行,而不是base环境,若重新进入请conda activate llama3,后续两小结便是如此。

得到以下输出

可以看到端口为8501

将8501输入至端口,点击转发地址中的浏览器链接

注意:这里可能出现页面报错osError,将10%算力提升至30%即可

最终得到这样的页面

恭喜你,成功完成了第一节课!!!!

三、XTuner 微调 Llama3 个人小助手认知

Llama3-Tutorial/docs/assistant.md at main · SmartFlowAI/Llama3-Tutorial · GitHub

机智流github本节笔记链接,环境配置与web部署部分已在上述中完成,所以我们直接开始

自我认知训练数据集准备

  1. # 进入环境
  2. conda activate llama3
  3. # 进入数据集
  4. cd ~/Llama3-Tutorial
  5. # 按照本节b站视频中,对/root/Llama3-Tutorial/tools/gdata.py中的name运行调整
  6. # 注意直接粘贴可能不成功,左侧会出现蓝色标志,需要进行确认替换,之后运行
  7. python tools/gdata.py
  8. # 运行成功之后会在/root/Llama3-Tutorial/data/personal_assistant.json这个文件中显示
  9. # 验证XTuner是否存在
  10. pip list

训练模型

  1. cd ~/Llama3-Tutorial
  2. # 开始训练,使用 deepspeed 加速,A100 40G显存 耗时24分钟
  3. xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth
  4. # 退出当前文档
  5. cd ..
  6. # 查看微调工作路径是否存在
  7. ls
  8. # 工作路径
  9. cd llama3_pth
  10. # 查看工作路径
  11. ls
  12. # 示例
  13. 20240505_171901 20240505_195336 iter_500.pth iter_672.pth last_checkpoint llama3_8b_instruct_qlora_assistant.py
  14. # Adapter PTH 转 HF 格式
  15. xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \
  16. /root/llama3_pth/iter_500.pth \
  17. /root/llama3_hf_adapter
  18. # 模型合并
  19. export MKL_SERVICE_FORCE_INTEL=1
  20. xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
  21. /root/llama3_hf_adapter\
  22. /root/llama3_hf_merged
  23. # 查看并进入刚刚的路径 llama3_hf_merged
  24. cd ~
  25. ls
  26. cd llama3_hf_merged
  27. ls

注意:若报错ImportError: deepspeed is not installed properly, please check.,则表明你的Python环境中缺少名为deepspeed的模块,请执行以下命令

pip install deepspeed

得到如图所示训练好的模型文件

推理验证

  1. # 像第一节课一样使用streamlit与微调后的Llama3路径进行对话
  2. # 这里的路径是微调后的llama3路径也就是 /root/llama3_hf_merged
  3. # 运行代码,输入端口,进入web
  4. streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
  5. /root/llama3_hf_merged

恭喜你!微调成功!!!完成第二节课的学习!!!

【十天后再测,发现模型似乎忘记微调的内容了】

四、XTuner 微调 Llama3 图片理解多模态

1.环境,模型,数据准备(InternStudio版)

环境与clone的仓库,与前两节一致,因此直接准备模型

模型准备

(1)准备 Llama3 权重
  1. mkdir -p ~/model
  2. cd ~/model
  3. 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 
(2)准备 Visual Encoder 权重

直接复制即可

  1. # 接下来准备Llava所需要的 openai/clip-vit-large-patch14-336,权重,即 Visual Encoder 权重。
  2. mkdir -p ~/model
  3. cd ~/model
  4. ln -s /root/share/new_models/openai/clip-vit-large-patch14-336 .
(3)准备 Image Projector 权重

直接复制即可

  1. # 最后准备 Llava 将要用到的 Image Projector 部分权重。
  2. mkdir -p ~/model
  3. cd ~/model
  4. ln -s /root/share/new_models/xtuner/llama3-llava-iter_2181.pth .

数据准备

我们按照 Tutorial/xtuner/llava/xtuner_llava.md at camp2 · InternLM/Tutorial · GitHub 中的教程来准备微调数据。为了可以快速上手,我们选择了使用过拟合的方式快速实现。

  1. # 直接一步步运行即可
  2. cd ~
  3. git clone https://github.com/InternLM/tutorial -b camp2
  4. # 下面报错跟之前一样,已存在
  5. # fatal: destination path 'tutorial' already exists and is not an empty directory.
  6. python ~/tutorial/xtuner/llava/llava_data/repeat.py \
  7. -i ~/tutorial/xtuner/llava/llava_data/unique_data.json \
  8. -o ~/tutorial/xtuner/llava/llava_data/repeated_data.json \
  9. -n 200

2.开始训练微调

以下是可以一键启动的配置文件,主要是修改好了模型路径、对话模板以及数据路径。训练所需显存为44447MiB,请注意查看开发机配置

  1. # 如果你使用的是30%A100,则使用以下命令,训练过程持续4-5小时左右
  2. 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
  3. # 如果你使用60%及以上的A100,则使用以下命令,训练过程大概1小时左右
  4. 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
  5. # 训练好之后,我们将原始 image projector 和 我们微调得到的 image projector 都转换为 HuggingFace 格式,为了下面的效果体验做准备。
  6. xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
  7. ~/model/llama3-llava-iter_2181.pth \
  8. ~/llama3_llava_pth/pretrain_iter_2181_hf
  9. #三行直接复制
  10. xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
  11. ~/llama3_llava_pth/iter_1200.pth \
  12. ~/llama3_llava_pth/iter_1200_hf

注意:报错ModuleNotFoundError: No module named 'mpi4py',说明我们没有安装mpi4py模块,使用以下命令安装即可,使用pip install mpi4py可能会有其他的报错

conda install -c conda-forge mpi4py

3.最终效果

使用的是这张图片

问题1:Describe this image. 问题2:What is the equipment in the image?

Pretrain 模型(预训练模型)
  1. export MKL_SERVICE_FORCE_INTEL=1
  2. xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
  3. --visual-encoder /root/model/clip-vit-large-patch14-336 \
  4. --llava /root/llama3_llava_pth/pretrain_iter_2181_hf \
  5. --prompt-template llama3_chat \
  6. --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg

此时可以看到,Pretrain 模型只会为图片打标签,并不能回答问题。

Finetune 后模型(微调之后)
  1. export MKL_SERVICE_FORCE_INTEL=1
  2. xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
  3. --visual-encoder /root/model/clip-vit-large-patch14-336 \
  4. --llava /root/llama3_llava_pth/iter_1200_hf \
  5. --prompt-template llama3_chat \
  6. --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.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/685930
推荐阅读
相关标签
  

闽ICP备14008679号