رمز للورقة "Chameleon: التفكير التكويني المكونات والتشغيل مع نماذج لغة كبيرة".
؟ إذا كان لديك أي أسئلة أو اقتراحات ، فالرجاء عدم التردد في إخبارنا بذلك. يمكنك إرسال بريد إلكتروني مباشرة إلى BAN LU باستخدام عنوان البريد الإلكتروني [email protected] ، أو التعليق على Twitter ، أو نشر مشكلة على هذا المستودع.
[صفحة المشروع] [ورقة] [Twitter] [LinkedIn] [YouTube] [Slides]
شعار مؤقت للبطبيعة .
Chameleon هو إطار تفكير تكويني للتوصيل والتشغيل الذي يعزز LLMs مع أنواع مختلفة من الأدوات. يقوم Chameleon بتجميع البرامج لتكوين أدوات مختلفة ، بما في ذلك طرز LLM ، ونماذج الرؤية الجاهزة ، ومحركات البحث على الويب ، ووظائف Python ، والوحدات النمطية القائمة على القواعد المصممة لصالح المستخدمين. تم تصميم Chameleon على قمة LLM كمخطط للغة الطبيعية ، وتسلسل الأدوات المناسب لتكوين وتنفيذ من أجل توليد استجابة نهائية.

نعرض القدرة على التكيف وفعالية الحرباء في مهمتين: ScienceQa و TabMWP. والجدير بالذكر أن Chameleon مع GPT-4 يحقق دقة 86.54 ٪ على ScienceQA ، مما يتحسن بشكل كبير على أفضل طراز قليلة المنشور بنسبة 11.37 ٪ ؛ باستخدام GPT-4 باعتباره LLM الأساسي ، يحقق Chameleon زيادة بنسبة 17.0 ٪ عن النموذج الحديثة ، مما يؤدي إلى دقة إجمالية 98.78 ٪ على TABMWP. تشير الدراسات الإضافية إلى أن استخدام GPT-4 كمخطط يعرض اختيارًا أكثر اتساقًا وأدوات عقلانية وأنه قادر على استنتاج القيود المحتملة بالنظر إلى التعليمات ، مقارنةً بـ LLMs الأخرى مثل ChatGPT.
لمزيد من التفاصيل ، يمكنك العثور على صفحة مشروعنا هنا وورقةنا هنا.
نود أن نعرب عن امتناننا الهائل لـ Worldofai لعرض عملنا على YouTube وتقديمه على YouTube!
تثبيت جميع تبعيات Python المطلوبة (التي تم إنشاؤها بواسطة pipreqs ):
python==3.8.10
huggingface-hub
numpy==1.23.2
openai==0.23.0
pandas==1.4.3
transformers==4.21.1
requests==2.28.1
قم بتثبيت جميع تبعيات Python المطلوبة (يمكنك تخطي هذه الخطوة إذا قمت بإعداد التبعيات من قبل ولم تكن الإصدارات مطلوبة بصرامة):
pip install -r requirements.txt
الحصول على مفتاح Openai API الخاص بك من: https://platform.openai.com/account/api- keys.
لاستخدام مفتاح Openai API لـ Chameleon ، تحتاج إلى إعداد الفواتير (AKA AKA PADER ACCOURE).
يمكنك إعداد حساب مدفوع على https://platform.openai.com/account/billing/overview.
احصل على مفتاح API Search الخاص بك من: https://www.microsoft.com/en-us/bing/apis/bing-web-search-api.
مفتاح API Search Search هو اختياري . سيؤدي الفشل في إعداد هذا المفتاح إلى انخفاض طفيف في مهمة ScienceQA.
أنواع مختلفة من الأدوات في مخزون الوحدة النمطية لدينا:

الأدوات المستخدمة على ScienceQA و TabMWP ، على التوالي. يتم تمييز الأدوات القابلة لإعادة الاستخدام في مهمتين باللون الأخضر:

الإجابة على أسئلة العلوم (ScienceQA) هي معيار متعدد الوسائط لإجهاد الأسئلة يغطي مجموعة واسعة من الموضوعات العلمية على السياقات المتنوعة. يتم توفير مجموعة بيانات ScienceQA في data/scienceqa . لمزيد من التفاصيل ، يمكنك استكشاف مجموعة البيانات والتحقق من صفحة استكشاف وتصور صفحة.
بالنسبة للإصدار الحالي ، تكون نتائج التسمية التوضيحية Image Captioner وكاشف Text Detector على الرف وتخزينها في data/scienceqa/captions.json و data/scienceqa/ocrs.json ، على التوالي. إن الاتصال المباشر هاتين الوحدات النمطتين سيأتي قريبًا!
لتشغيل الحرباء (GPT-4):
cd run_scienceqa
python run.py
--model chameleon
--label chameleon_gpt4
--policy_engine gpt-4
--kr_engine gpt-4
--qg_engine gpt-4
--sg_engine gpt-4
--test_split test
--test_number -1 سيؤدي ذلك إلى توليد التنبؤات ويحفظ النتائج في results/scienceqa/chameleon_gpt4_test.json ، results/scienceqa/chameleon_gpt4_test_cache.jsonl ، results/scienceqa/chameleon_gpt4_test_cache.json .
يمكننا الحصول على مقاييس الدقة في المتوسط وعبر فئات أسئلة مختلفة عن طريق التشغيل:
python evaluate.py
--data_file ../data/scienceqa/problems.json
--result_root ../results/scienceqa
--result_files chameleon_chatgpt_test_cache.jsonlلتشغيل الحرباء (chatgpt):
python run.py
--model chameleon
--label chameleon_gpt4
--policy_engine gpt-3.5-turbo
--kr_engine gpt-3.5-turbo
--qg_engine gpt-3.5-turbo
--sg_engine gpt-3.5-turbo
--test_split test
--test_number -1 الحرباء لدينا هو شكل معمم لطريقة COT (سلسلة الفكرة) ، حيث يكون البرنامج الذي تم إنشاؤه عبارة عن سلسلة من Solution Generator Answer Generator . عن طريق التمرير --model كـ cot ، يتم تعيين modules على أنها ["solution_generator", "answer_generator"] .
لتشغيل سرير سرير (المطلب سلسلة من الفكر) GPT-4:
python run.py
--model cot
--label cot_gpt4
--sg_engine gpt-4
--test_split test
--test_number -1لتشغيل COT (المطلب سلسلة من الفكر) chatgpt:
python run.py
--model cot
--label cot_chatgpt
--sg_engine gpt-4
--test_split test
--test_number -1 تحتوي مجموعة بيانات TABMWP على 38،431 مشكلات كلمات الرياضيات الجدولية. يتم محاذاة كل سؤال في TABMWP مع سياق جدولي ، والذي يتم تقديمه كصورة ونص شبه منظم وجدول منظم. يتم توفير مجموعة بيانات TABMWP في data/tabmwp . لمزيد من التفاصيل ، يمكنك استكشاف Datatset والتحقق من صفحة استكشاف وتصور صفحة.
لتشغيل الحرباء (GPT-4):
cd run_tabmwp
python run.py
--model chameleon
--label chameleon_gpt4
--test_split test
--policy_engine gpt-4
--rl_engine gpt-4
--cl_engine gpt-4
--tv_engine gpt-4
--kr_engine gpt-4
--sg_engine gpt-4
--pg_engine gpt-4
--test_number -1
--rl_cell_threshold 18
--cl_cell_threshold 18 سيقوم بإنشاء التنبؤات وحفظ النتائج في results/tabmwp/chameleon_gpt4_test.json ، results/tabmwp/chameleon_gpt4_test_cache.jsonl ، results/tabmwp/chameleon_gpt4_test_cache.json .
يمكننا الحصول على مقاييس الدقة في المتوسط وعبر فئات أسئلة مختلفة عن طريق التشغيل:
python evaluate.py
--data_file ../data/tabmwp/problems_test.json
--result_root ../results/tabmwp
--result_files chameleon_chatgpt_test_cache.jsonlلتشغيل الحرباء (chatgpt):
python run.py
--model chameleon
--label chameleon_chatgpt
--test_split test
--policy_engine gpt-3.5-turbo
--rl_engine gpt-3.5-turbo
--cl_engine gpt-3.5-turbo
--tv_engine gpt-3.5-turbo
--kr_engine gpt-3.5-turbo
--sg_engine gpt-3.5-turbo
--pg_engine gpt-3.5-turbo
--test_number -1
--rl_cell_threshold 18
--cl_cell_threshold 18لتشغيل سرير سرير (المطلب سلسلة من الفكر) GPT-4:
python run.py
--model cot
--label cot_gpt4
--test_split test
--sg_engine gpt-4
--test_number -1لتشغيل COT (المطلب سلسلة من الفكر) chatgpt:
python run.py
--model cot
--label cot_chatgpt
--test_split test
--sg_engine gpt-3.5-turbo
--test_number -1 Chameleon هو شكل معمم لطريقة POT (برنامج الفكر) ، حيث يعد البرنامج الذي تم إنشاؤه سلسلة من Program Generator ، Program Executor ، Answer Generator . عن طريق المرور --model pot ، يتم تعيين modules على أنها ["program_generator", "program_executor", "answer_generator"] .
لتشغيل وعاء (مطالب برنامج) GPT-4:
python run.py
--model pot
--label pot_gpt4
--test_split test
--pg_engine gpt-4
--test_number -1لتشغيل POT (مطالبة برنامج) ChatGPT:
python run.py
--model pot
--label pot_chatgpt
--test_split test
--pg_engine gpt-3.5-turbo
--test_number -1
CHAMELEON (GPT-4) قادر على التكيف مع استعلامات الإدخال المختلفة من خلال إنشاء برامج تشكل أدوات مختلفة وتنفيذها بالتتابع للحصول على الإجابات الصحيحة.
على سبيل المثال ، يسأل الاستعلام أعلاه ، "أي حيوان هو تكييف للبقاء على قيد الحياة في الأماكن الباردة؟" ، والتي تنطوي على المصطلحات العلمية المتعلقة بقاء الحيوانات. وبالتالي ، يقرر المخطط الاعتماد على محرك بحث Bing للمعرفة الخاصة بالمجال ، ويستفيد من العديد من الموارد عبر الإنترنت المتاحة.

كما لوحظت القدرة على التكيف وتنوع الحرباء لدينا للاستعلامات المختلفة على TABMWP ، كما هو موضح في الأمثلة في الشكل أعلاه.
المثال الأول ينطوي على التفكير الرياضي على شكل ضريبي. يصف الحرباء (1) نموذج استرجاع المعرفة لاستدعاء المعرفة الأساسية التي تساعد في فهم مثل هذه الجداول الخاصة بالمجال ، (2) يصف الجدول بتنسيق لغة طبيعية أكثر قابلية للقراءة ، و (3) يعتمد أخيرًا على أدوات بمساعدة البرنامج لأداء حسابات دقيقة.
في المثال الثاني ، يولد النظام رمز الثعبان الذي يتوافق بشكل وثيق مع المعرفة الأساسية التي يوفرها نموذج استرجاع المعرفة.
يتطلب المثال الثالث من النظام تحديد موقع الخلية في سياق جدولي كبير بالنظر إلى استعلام الإدخال. يقوم Chameleon باستدعاء نموذج البحث في الصف للمساعدة في تحديد موقع الصفوف ذات الصلة بدقة وإنشاء حل اللغة عبر نموذج LLM ، بدلاً من الاعتماد على الأدوات القائمة على البرنامج.
لوحظت تحسينات كبيرة بالنسبة إلى الحرباء على كل من النموذجين المعدنيين وضربت طلقة قليلة من GPT-4/ChatGPT:

لتصور التنبؤات التي أدخلتها Charmeleon ، ما عليك سوى تنفيذ دفتر Jupyter المقابل لمهمةك المحددة: notebooks/results_viewer_[TASK].ipynb . سيوفر هذا طريقة تفاعلية وسهلة الاستخدام لاستكشاف النتائج التي تم إنشاؤها بواسطة النموذج. بدلاً من ذلك ، استكشف صفحة المشروع لمزيد من المعلومات والخيارات.
الأدوات التي تسمى البرامج التي تم إنشاؤها من Chameleon (ChatGPT) و Chameleon (GPT-4) على ScienceQa:

الأدوات المسمى في البرامج التي تم إنشاؤها من Chameleon (ChatGPT) و Chameleon (GPT-4) على TabMWP:

تنفيذ notebooks/transition_[TASK]_[Model]_Engine.ipynb لتصور الرسم البياني لنقل الوحدة النمطية للبرامج التي تم إنشاؤها في مجموعة الاختبار.
التحولات بين الوحدات النمطية في البرامج التي تم إنشاؤها بواسطة Chameleon (GPT-4) على ScienceQA. البداية هو رمز البداية ، النهاية هو رمز طرفي والبعض الآخر رموز غير طرفية.

التحولات بين الوحدات النمطية في البرامج التي تم إنشاؤها بواسطة Chameleon (GPT-4) على TABMWPQA. البداية هو رمز البداية ، النهاية هو رمز طرفي والبعض الآخر رموز غير طرفية.

demos . حدد الإدخال والتنفيذ والإخراج لكل وحدة في model.py .model.py . لتعديل طريقة التقييم ، قم بتحديث القسم المقابل في main.pyرائع! أنا دائمًا منفتح على إشراك المناقشات أو التعاون أو حتى مجرد مشاركة القهوة الافتراضية. للاتصال ، تفضل بزيارة صفحة Pan Lu الرئيسية للحصول على معلومات الاتصال.
إذا وجدت الحرباء مفيدة لبحثك وتطبيقاتك ، فيرجى الاستشهاد باستخدام هذا bibtex:
@article{lu2023chameleon,
title={Chameleon: Plug-and-Play Compositional Reasoning with Large Language Models},
author={Lu, Pan and Peng, Baolin and Cheng, Hao and Galley, Michel and Chang, Kai-Wei and Wu, Ying Nian and Zhu, Song-Chun and Gao, Jianfeng},
journal={arXiv preprint arXiv:2304.09842},
year={2023}
}