การวางแผนเสริมความรู้สำหรับตัวแทนที่ใช้ 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 คุณสามารถค้นหาสคริปต์สำหรับการรัน Planning Path Generation ได้ในไดเร็กทอรี Path_Generation
โดยเฉพาะ run_alfworld.sh
และ run_hotpotqa.sh
สคริปต์เหล่านี้สามารถดำเนินการได้โดยใช้คำสั่งทุบตี เพื่อปรับแต่งสคริปต์ตามความต้องการของคุณ คุณอาจแก้ไขพารามิเตอร์ 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:
ขอขอบคุณอย่างจริงใจต่อผู้มีส่วนร่วมทุกคนสำหรับการมีส่วนร่วมอันล้ำค่าในสนาม!
เราจะเสนอการบำรุงรักษาระยะยาวเพื่อแก้ไขข้อบกพร่องและแก้ไขปัญหา ดังนั้นหากคุณมีปัญหาใด ๆ โปรดแจ้งปัญหาให้เราทราบ