Планирование с расширенными знаниями для агентов на основе LLM.
?Бумага • Интернет
Наше развитие основано на нескольких ключевых шагах: Первоначально мы создаем обширную базу знаний о действиях , которая объединяет знания о планировании действий, относящиеся к конкретным задачам. Эта база данных действует как внешний резервуар информации, управляя процессом создания действий модели. Впоследствии , преобразуя знания о действиях в текст, мы даем возможность модели глубоко понять и использовать эти знания при создании траекторий действий. Наконец , на этапе осознанного самообучения мы используем траектории, разработанные на основе итеративных процессов модели, для постоянного улучшения ее понимания и применения знаний о действиях. Этот процесс не только усиливает способности агентов к планированию, но и увеличивает их потенциал для применения в сложных ситуациях.
Чтобы начать работу с 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 Диске перед фильтрацией.
После получения путей планирования и соответствующих траекторий начинается процесс Знающего Самообучения. Сгенерированные траектории предварительно необходимо преобразовать в формат Альпаки с помощью скриптов, находящихся в каталоге Самообучения.
Для начальных итераций выполните шаги, описанные в 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:
Мы сердечно благодарим всех участников за их неоценимый вклад в эту область!
Мы предложим долгосрочное обслуживание для исправления ошибок и решения проблем. Поэтому, если у вас есть какие-либо проблемы, пожалуйста, задайте их нам.