基於法學碩士的代理人的知識增強規劃。
?
我們的發展基於幾個關鍵步驟:首先,我們創建了一個廣泛的行動知識庫,其中合併了與特定任務相關的行動規劃知識。該資料庫充當外部資訊庫,指導模型的動作生成過程。隨後,透過將動作知識轉換為文本,我們使模型能夠深入理解並利用這些知識來創建動作軌跡。最後,透過知識自學階段,我們使用模型迭代過程中所發展的軌跡來持續提高其對行動知識的理解和應用。這個過程不僅增強了智能體的規劃能力,而且增強了它們在複雜情況下的應用潛力。
若要開始使用 KnowAgent,請依照以下簡單的安裝步驟操作:
git clone https://github.com/zjunlp/KnowAgent.git
cd KnowAgent
pip install -r requirements.txt
我們將 HotpotQA 和 ALFWorld 資料集分別放置在Path_Generation/alfworld_run/data
和Path_Generation/hotpotqa_run/data
下。如需進一步配置,我們建議繼續進行 ALFWorld 和 FastChat 的原始設定。
規劃路徑生成過程是 KnowAgent 不可或缺的一部分。您可以在Path_Generation
目錄中找到用於執行規劃路徑產生的腳本,特別是run_alfworld.sh
和run_hotpotqa.sh
。這些腳本可以使用 bash 命令執行。若要根據您的需求自訂腳本,您可以修改mode
參數以在訓練 ( train
) 和測試 ( test
) 模式之間切換,並變更llm_name
參數以使用不同的 LLM:
cd Path_Generation
# For training with HotpotQA
python run_hotpotqa.py --llm_name llama-2-13b --max_context_len 4000 --mode train --output_path ../Self-Learning/trajs/
# For testing with HotpotQA
python run_hotpotqa.py --llm_name llama-2-13b --max_context_len 4000 --mode test --output_path output/
# For training with ALFWorld
python alfworld_run/run_alfworld.py --llm_name llama-2-13b --mode train --output_path ../Self-Learning/trajs/
# For testing with ALFWorld
python alfworld_run/run_alfworld.py --llm_name llama-2-13b --mode test --output_path output/
在這裡,我們發布了 Llama-{7,13,70}b-chat 在過濾之前在 Google Drive 中合成的軌跡。
在獲得規劃路徑和相應的軌跡後,知識型自學習過程就開始了。產生的軌跡必須先使用位於自學目錄中的腳本轉換為 Alpaca 格式。
對於初始迭代,請按照traj_reformat.sh
中概述的步驟操作:
cd Self-Learning
# For HotpotQA
python train/Hotpotqa_reformat.py --input_path trajs/KnowAgentHotpotQA_llama-2-13b.jsonl --output_path train/datas
# For ALFWorld
python train/ALFWorld_reformat.py --input_path trajs/KnowAgentALFWorld_llama-2-13b.jsonl --output_path train/datas
對於後續迭代,在運行軌跡重新格式化腳本之前執行基於知識的軌跡過濾和合併至關重要。您可以使用traj_merge_and_filter.sh
來實現此目的:
python trajs/traj_merge_and_filter.py
--task HotpotQA
--input_path1 trajs/datas/KnowAgentHotpotQA_llama-2-13b_D0.jsonl
--input_path2 trajs/datas/KnowAgentHotpotQA_llama-2-13b_D1.jsonl
--output_path trajs/datas
接下來,透過執行train.sh
和train_iter.sh
來啟動自學習過程,如Self-Learning/train.sh
和Self-Learning/train_iter.sh
中的腳本中指定的那樣:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 deepspeed train/train_lora.py
--model_name_or_path llama-2-13b-chat
--lora_r 8
--lora_alpha 16
--lora_dropout 0.05
--data_path datas/data_knowagent.json
--output_dir models/Hotpotqa/M1
--num_train_epochs 5
--per_device_train_batch_size 2
--per_device_eval_batch_size 1
--gradient_accumulation_steps 1
--evaluation_strategy "no"
--save_strategy "steps"
--save_steps 10000
--save_total_limit 1
--learning_rate 1e-4
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type "cosine"
--logging_steps 1
--fp16 True
--model_max_length 4096
--gradient_checkpointing True
--q_lora False
--deepspeed /data/zyq/FastChat/playground/deepspeed_config_s3.json
--resume_from_checkpoint False
@article { zhu2024knowagent ,
title = { KnowAgent: Knowledge-Augmented Planning for LLM-Based Agents } ,
author = { Zhu, Yuqi and Qiao, Shuofei and Ou, Yixin and Deng, Shumin and Zhang, Ningyu and Lyu, Shiwei and Shen, Yue and Liang, Lei and Gu, Jinjie and Chen, Huajun } ,
journal = { arXiv preprint arXiv:2403.03101 } ,
year = { 2024 }
}
我們對以下專案的創建者和貢獻者表示感謝,這些專案對 KnowAgent 的發展產生了重大影響:
我們衷心感謝所有貢獻者對該領域的寶貴貢獻!
我們將提供長期維護來修復錯誤並解決問題。因此,如果您有任何問題,請向我們提出問題。