当前位置:   article > 正文

Llama3小白自学路(五、Agent 能力体验+微调Lagent 版)_llama3 agent

llama3 agent

写在前面

Agent,智能体,通常被认为是Open AI的下一个发展方向。笔者认为,如果将大模型比作可以根据刺激进行收缩和舒张的神经元,智能体就好比是大脑,可以自由的思考,有记忆分析逻辑推理能力,有问题解决问题的能力,没有问题就创造问题解决问题的能力。

 Agent-FLAN 数据集是上海人工智能实验室 InternLM 团队所推出的一个智能体微调数据集,其通过将原始的智能体微调数据以多轮对话的方式进行分解,对数据进行能力分解并平衡,以及加入负样本等方式构建了高效的智能体微调数据集,从而可以大幅提升模型的智能体能力。‘

lagent,一个开源的 LLM 智能体框架,允许使用者快速将一个大语言模型转换成智能体,并提供一些典型工具来激发大语言模型的潜能。其主要包含三个模块:

agents实现了多种智能体,如 ReAct,AutoGPT。
llms 支持多种大语言模型,包括在 HuggingFace 上托管的开源模型(Llama-2, InterLM)及 GPT3.5/4 等闭源模型。
actions包含一系列工具,并提供工具执行器来统一管理。

这里附上机智流的Llama3教程链接:

机智流Llama3超级课堂

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. # 安装git
  6. mkdir -p ~/model
  7. cd ~/model
  8. apt install git git-lfs -y
  9. # 获取权重模型
  10. git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct
  11. # 安装Xtuner
  12. cd ~
  13. git clone -b v0.1.18 https://github.com/InternLM/XTuner
  14. cd XTuner
  15. pip install -e .[all]
  16. # 获取机智流的教程仓库
  17. cd ~
  18. git clone https://github.com/SmartFlowAI/Llama3-Tutorial

下载数据并进行数据转换

  1. git clone https://huggingface.co/datasets/internlm/Agent-FLAN
  2. python ~/Llama3-Tutorial/tools/convert_agentflan.py ~/Agent-FLAN/data

数据转换的原因是 HuggingFace 上的 Agent-FLAN 数据集暂时无法被 XTuner 直接加载,因此我们首先要下载到本地,然后转换成 XTuner 直接可用的格式。

2、启动微调

  1. export MKL_SERVICE_FORCE_INTEL=1
  2. xtuner train ~/Llama3-Tutorial/configs/llama3-agentflan/llama3_8b_instruct_qlora_agentflan_3e.py --work-dir ~/llama3_agent_pth --deepspeed deepspeed_zero2

这两行代码之前也解说过,第一行是防止pytorch做分布式训练时出现bug,第二行是使用xtuner命令执行py程序,并使用deepSpeedZeAO优化技术降低显卡消耗。

训练完成后还需要将权重转为HuggingFace 格式,并合并到原权重中。

  1. # 转换权重,执行py文件,将pth转换为hf
  2. xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-agentflan/llama3_8b_instruct_qlora_agentflan_3e.py \
  3. ~/llama3_agent_pth/iter_18516.pth \
  4. ~/llama3_agent_pth/iter_18516_hf
  5. # 合并权重,前面两个合并成最后一个
  6. export MKL_SERVICE_FORCE_INTEL=1
  7. xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
  8. ~/llama3_agent_pth/iter_18516_hf \
  9. ~/llama3_agent_pth/merged

笔者认为,合并权重的意义在于,在保留微调影响的效果,同时保证原始模型的完整性,便于应用和部署。

3、Llama3+Agent-FLAN ReAct Demo演示

微调前后都需要启动web来观察效果,可以将其单独拆出来:

  1. pip install lagent
  2. streamlit run ~/Llama3-Tutorial/tools/agent_web_demo.py 微调前LLaMA3 模型路径
  3. streamlit run ~/Llama3-Tutorial/tools/agent_web_demo.py 微调后LLaMA3 模型路径

需要说明的是,因为服务端在远端,而要想在本地看到效果,要使用ssh转发,具体的之前篇章有些过,就是打开本地的cmd,输入下面的命令:

ssh -CNg -L 8501:127.0.0.1:8501 {usrname}@{hostname} -p {远程服务端口号}

比如执行上上面的streamlit命令后,提示的端口号为8501,那么上面的ssh命令,就是把远端的8501端口转发到本地的8501端口,打开localhost:8501便可以看到web demo界面。

微调前:

微调后:

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

闽ICP备14008679号