赞
踩
Agent,智能体,通常被认为是Open AI的下一个发展方向。笔者认为,如果将大模型比作可以根据刺激进行收缩和舒张的神经元,智能体就好比是大脑,可以自由的思考,有记忆分析逻辑推理能力,有问题解决问题的能力,没有问题就创造问题解决问题的能力。
Agent-FLAN 数据集是上海人工智能实验室 InternLM 团队所推出的一个智能体微调数据集,其通过将原始的智能体微调数据以多轮对话的方式进行分解,对数据进行能力分解并平衡,以及加入负样本等方式构建了高效的智能体微调数据集,从而可以大幅提升模型的智能体能力。‘
lagent,一个开源的 LLM 智能体框架,允许使用者快速将一个大语言模型转换成智能体,并提供一些典型工具来激发大语言模型的潜能。其主要包含三个模块:
agents | 实现了多种智能体,如 ReAct,AutoGPT。 |
llms | 支持多种大语言模型,包括在 HuggingFace 上托管的开源模型(Llama-2, InterLM)及 GPT3.5/4 等闭源模型。 |
actions | 包含一系列工具,并提供工具执行器来统一管理。 |
这里附上机智流的Llama3教程链接:
按照之前的环境,配置好必要的模型以及模块:
- # 创建镜像并下载依赖
- 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 直接可用的格式。
- 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
笔者认为,合并权重的意义在于,在保留微调影响的效果,同时保证原始模型的完整性,便于应用和部署。
微调前后都需要启动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界面。
微调前:
微调后:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。