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

写在前面

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

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

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

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

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

机智流Llama3超级课堂

1、数据集准备

按照之前的环境,配置好必要的模型以及模块:

# 创建镜像并下载依赖
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

# 安装git
mkdir -p ~/model
cd ~/model
apt install git git-lfs -y

# 获取权重模型
git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct

# 安装Xtuner
cd ~
git clone -b v0.1.18 https://github.com/InternLM/XTuner
cd XTuner
pip install -e .[all]

# 获取机智流的教程仓库
cd ~
git clone https://github.com/SmartFlowAI/Llama3-Tutorial

下载数据并进行数据转换

git clone https://huggingface.co/datasets/internlm/Agent-FLAN

python ~/Llama3-Tutorial/tools/convert_agentflan.py ~/Agent-FLAN/data

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

2、启动微调

export MKL_SERVICE_FORCE_INTEL=1

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 格式,并合并到原权重中。

# 转换权重,执行py文件,将pth转换为hf
xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-agentflan/llama3_8b_instruct_qlora_agentflan_3e.py \
    ~/llama3_agent_pth/iter_18516.pth \
    ~/llama3_agent_pth/iter_18516_hf


# 合并权重,前面两个合并成最后一个
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
    ~/llama3_agent_pth/iter_18516_hf \
    ~/llama3_agent_pth/merged

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

3、Llama3+Agent-FLAN ReAct Demo演示

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

pip install lagent


streamlit run ~/Llama3-Tutorial/tools/agent_web_demo.py 微调前LLaMA3 模型路径


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界面。

微调前:

微调后:

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值