التخطيط المعزز للمعرفة للوكلاء المعتمدين على 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 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:
نتقدم بالشكر الجزيل لجميع المساهمين على مساهماتهم القيمة في هذا المجال!
سوف نقدم صيانة طويلة الأمد لإصلاح الأخطاء وحل المشكلات. لذلك إذا كان لديك أي مشاكل، يرجى طرح القضايا علينا.