FireAct 项目介绍
项目简介
FireAct 是一个关于语言代理微调的项目,提供了一套工具、任务定义、数据生成和实验运行的完整解决方案。该项目的代码库基于学术论文《FireAct: Toward Language Agent Fine-tuning》中提出的研究成果。项目中包含了用于模型微调的提示、演示代码以及生成的数据,同时还介绍了项目中微调的模型家族。
数据与提示
FireAct 项目附带了生成训练数据和运行实验所需的数据集及提示。用户可以在 data/
目录下找到用于生成训练数据的样本,包括 Alpaca 格式和 GPT 格式的训练数据样本。此外,prompts/
目录中包括生成训练数据的提示信息。
环境搭建
为顺利运行 FireAct 项目,用户需准备 OpenAI 和 SERP 的 API 密钥,并将其存储在环境变量中。安装虚拟环境可以通过 Conda 实现:
conda create -n fireact python=3.9
conda activate fireact
完成环境创建后,克隆项目代码仓库并安装所需依赖:
git clone https://github.com/anchen1011/FireAct.git
pip install -r requirements.txt
示例运行
数据生成
可以通过 generation.py
脚本进行数据生成。以下是运行示例:
python generation.py \
--task hotpotqa \
--backend gpt-4 \
--promptpath default \
--evaluate \
--random \
--task_split val \
--temperature 0 \
--task_end_index 5
生成数据后需将轨迹转化为支持的格式,如 Alpaca 或 GPT 格式。详见项目中的数据示例。
监督微调
微调过程涉及到对选定模型进行训练,以下为示例:
cd finetune/llama_lora
python finetune.py \
--base_model meta-llama/Llama-2-13b-chat-hf \
--data_path ../../data/finetune/alpaca_format/hotpotqa.json \
--micro_batch_size 8 \
--num_epochs 30 \
--output_dir ../../models/lora/fireact-llama-2-13b \
--val_set_size 0.01 \
--cutoff_len 512
推理
结合 FireAct Llama 模型运行推理:
python generation.py \
--task hotpotqa \
--backend llama \
--evaluate \
--random \
--task_split dev \
--task_end_index 5 \
--modelpath meta-llama/Llama-2-7b-chat \
--add_lora \
--alpaca_format \
--peftpath forestai/fireact_llama_2_7b_lora
若需定量评估,应将 --task_end_index
设置为较大的值(如500)。
模型库
FireAct 项目中发布了若干基于 Llama 家族的多任务模型。用户可在 Hugging Face 平台上找到这些模型的详细信息:
- Llama2-7B:LoRA 微调 forestai/fireact_llama_2_7b_lora
- Llama2-13B:LoRA 微调 forestai/fireact_llama_2_13b_lora
- CodeLlama 系列:包括 7B、13B 和 34B 的 LoRA 微调模型
- 完整 Llama2-7B 模型 forestai/fireact_llama_2_7b
参考链接
FireAct 项目的代码和方法参考并改进了多个网站和代码库,包括 ReAct、stanford_alpaca、alpaca-lora 和 chatgpt-finetune-ui 等。这一系列参考为 FireAct 的开发提供了坚实的基础。