

مرحبا بكم في الجهاز اللوحي github! الهدف من هذا المشروع هو قياس التقدم في تعلم التعليمات للتنبؤ الجدولي. نأمل أن نتمكن من إنشاء نماذج تحل مهام التنبؤ الجدولية باستخدام التعليمات وعدد قليل من الأمثلة المسمى.
في حين أن العديد من مشاكل التنبؤ تتطلب استخدام البيانات الجدولية ، في كثير من الأحيان ، يمكن أن يكون جمع بيانات التدريب الكافية مهمة تحدي ، بسبب التكاليف أو مشكلات الخصوصية. تقدم نماذج اللغة الكبيرة (LLMS) معرفة عالمية كبيرة بسبب التدريب المسبق ويمكن أن تساعد في تحسين كفاءة العينة لهذه المشكلات. ومع ذلك ، فإن هذه النماذج لا تتوافق تمامًا مع العديد من مهام التنبؤ الجدولية بسبب التحيزات النموذجية من التدريب المسبق وعدم وجود معلومات حول المهمة ، مما يضر بأدائها في إعدادات التصوير الصفر والبعض.
ماذا لو استطعنا استخدام تعليمات المهمة للمساعدة في سد هذه الفجوة؟ هذا هو المكان الذي يأتي فيه الجهاز اللوحي. الجهاز اللوحي هو معيار حي لمجموعات البيانات الجدولية المشروحة بتعليمات المهمة لتقييم مدى استخدام LLMs لتعليمات لتحسين الأداء في مهام التنبؤ الجدولية.
الجهاز اللوحي هو معيار حي لمهام التنبؤ الجدولية المشروحة بالتعليمات. يوفر الجهاز اللوحي أدوات لتقييم النماذج على المهام الحالية والمساهمة بمهام جديدة. الهدف من ذلك هو مساعدة الباحثين على تطوير تقنيات تعمل على تحسين فعالية عينة LLMs على التنبؤ الجدولي.
إذا كان الجهاز اللوحي مفيدًا لعملك ، فيرجى الاستشهاد بنا.
@article{tabletSlack23,
Author = {Dylan Slack and Sameer Singh},
Title = {TABLET: Learning From Instructions For Tabular Data},
Year = {2023},
journal = {arXiv},
}لتنزيل البيانات ، استنساخ مستودع github.
git clone https://github.com/dylan-slack/Tablet.gitبمجرد اكتمال هذا ، يتم تخزين البيانات في هذا المسار.
Tablet/data/benchmark يرجى استخدام Python>=3.9 . بسبب Quirk في إحدى الحزم ، يرجى عدم استخدام Python=3.9.7 . أيضا ، تأكد من أن لديك pip>=23.0.1 .
conda create -n tablet python=3.9.6
conda activate tablet
pip install --upgrade pipإذا كنت ترغب في تثبيت حزمة الجهاز اللوحي من المصدر ، فانتقل إلى دليل حزمة الكمبيوتر اللوحي وتثبيته.
cd Tablet
python3 -m pip install -e .خلاف ذلك ، يمكنك التثبيت من PYPI مع PIP. [ملاحظة: لم يتم إصدارها بعد]
pip install tablet-benchmarkلسوء الحظ ، تأتي بعض الإرشادات التي تحدث بشكل طبيعي من مصادر غير مرخصة بشكل متسمين ولا تسمح بالاستضافة في مكان آخر. نحن نقدم دليلًا لجمع هذه التعليمات في
Tablet/fill_missing_instructions.pyبمجرد اكتمال ذلك ، يمكنك الجري
python fill_missing_instructions.pyوسيتم إضافة التعليمات إلى البيانات القياسية.
توفر حزمة الكمبيوتر اللوحي العديد من الميزات المفيدة لتقييم أداء LLMS + تعليمات على مجموعات البيانات الجدولية. يوفر الجهاز اللوحي رمزًا لتقييم نماذج المعانقة التعسفية في المهام ، كما يوفر أيضًا أدوات للحصول على مجموعة بيانات HuggingFace لمهمة معينة حتى تتمكن من إجراء أي تقييم تريده.
أولاً ، دعونا نلقي نظرة على كيفية تخزين مجموعات بيانات المهام في الجهاز اللوحي. يتم تخزين جميع المهام في
Tablet/data/benchmark/performanceعلى سبيل المثال ، يتم تخزين مهمة البالغين في
Tablet/data/benchmark/performance/Adultضمن هذا الدليل ، هناك أدلة مختلفة لكل شرح تعليم لمهمة البالغين. على سبيل المثال ، دعونا نلقي نظرة على إحدى الإرشادات التي تم إنشاؤها. يتم تخزين هذه التعليمات في
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0التعليمات التي تم جمعها من خلال مصادر أخرى لها مسارات مختلفة. تعليمات القواعد التي تم إنشاؤها جميعها لها اسم الدليل
ruleset-synthetic-performance- *والتعليمات التي تحدث بشكل طبيعي
prototypes-naturallanguage-performance- *لاحظ أن استخدام النماذج الأولية هنا هو مجرد الحفاظ على تنسيق تنسيق مع أسماء الدليل الأخرى.
داخل كل دليل ، هناك أربعة ملفات
../test.csv
../test.json
../train.csv
../train.jsonهذه هي مجموعات التدريب والاختبار ، المخزنة في تنسيقاتها الجدولية (.CSV's) وتنسيقات اللغة الطبيعية (.json). داخل ملفات JSON ، يوجد كل مكون موجه ، مثل الرأس ، وتسلسل نقطة البيانات ، والتعليمات.
إليك كيفية استخدام حزمة الكمبيوتر اللوحي للحصول على مجموعة بيانات عناق لمهمة معينة. دعنا نقول أننا نريد الحصول على واحدة من مجموعات بيانات السعال البالغة والكبار في هذه المواقع
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0
Tablet/data/benchmark/performance/A37/prototypes-synthetic-performance-0يمكننا الحصول على مجموعات بيانات الاختبار على النحو التالي
from Tablet import evaluate
benchmark_path = "./data/benchmark/performance/"
tasks = [ 'A37/prototypes-synthetic-performance-0' ,
'Adult/prototypes-synthetic-performance-0' ]
evaluator = evaluate . Evaluator ( benchmark_path = benchmark_path ,
tasks_to_run = tasks ,
encoding_format = "flan" ,
k_shot = 0 )
whooping_cough , adult = evaluator . get_test_hf_datasets () يمكننا تحديد k_shot هنا للتحكم في عدد حالات K_SHOT التي يتم أخذ عينات من بيانات التدريب وإدراجها في المطالبات. بعد ذلك ، يمكننا الوصول إلى بيانات اختبار البالغين والعلامات
test_data , ground_truth_labels = adult [ 'text' ], adult [ 'label' ] يمكننا أيضًا تقييم الأداء مباشرة على المهام. على سبيل المثال ، فإن تقييم الأداء الصغير من Flan-T5 2 طلقة على البالغين مع النماذج الأولية التي تم إنشاؤها مع 3 بذور هو كما يلي
from Tablet import evaluate
benchmark_path = "./data/benchmark/performance/"
tasks = [ 'Adult/prototypes-synthetic-performance-0' ]
evaluator = evaluate . Evaluator ( benchmark_path = benchmark_path ,
tasks_to_run = tasks ,
encoding_format = "flan" ,
results_file = "my_cool_results.txt" ,
k_shot = 2 )
evaluator . run_eval ( how_many = 3 ) سيتم إلحاق النتائج بـ my_cool_results.txt .
من أجل إنشاء نماذج يمكن أن تتوافق مع مشاكل التنبؤ الجدولية بشكل جيد للغاية من التعليمات العادلة وربما بعض الأمثلة ، نحتاج إلى العديد من المهام. هذه مفيدة لتقييم مدى نجاحنا ويمكن أن نكون مفيدة للإشراف في المستقبل.
يسهل Tablet إنشاء مهام جديدة عن طريق كتابة التعليمات أو إنشاءها باستخدام GPT-3 لمجموعات البيانات الجديدة. إليك كيف تفعل ذلك.
يجب أن يكون لديك التدريب والاختبار لمهمتك المخزنة في Pandas DF. ثم ، يمكنك استدعاء Tablet.create . ستهتم هذه الوظيفة بإنشاء المهمة للتعليمات التي تحدث بشكل طبيعي والتي تقدمها وستقوم أيضًا بإنشاء إرشادات باستخدام GPT-3 ، إذا كنت ترغب في ذلك.
from Tablet import create
create . create_task ( train_x ,
eval_x ,
train_y ,
eval_y ,
name = my_data_set_name ,
header = "Predict xyz." ,
nl_instruction = "Generally, people papers are grad students." ,
categorical_columns = names_of_categorical_columns ,
num = index_of_task ,
num_gpt3_revisions = 10 ,
openai_key_path = path_to_open_ai_key ,
save_loc = "./data/benchmark" ) هنا ، train_x و eval_x هما تقسيم القطار والاختبار. وبالمثل ، train_y و eval_y هي أعمدة التسمية. تقبل هذه الوظيفة أيضًا اسم المهمة (على سبيل المثال ، أشياء مثل Adult أو Wine ) ، والثقب الذي يصف الهدف العالي للمهمة ، وتعليمات Langauge الطبيعية-هذه هي وسيطة nl_instructions . يجب عليك أيضًا تحديد أسماء الأعمدة الفئوية. وسيطة num هي الفهرس الذي سيتم تخزين المهمة مع هذه التعليمات التي تحدث بشكل طبيعي تحت (على سبيل المثال ، prototypes-naturallanguage-performance-{num} ).
علاوة على ذلك ، إذا كنت ترغب في إنشاء إرشادات باستخدام GPT-3 ، فستحتاج إلى توفير مفتاح OpenAI في ملف وإعطاء موقع هذا الملف إلى وسيطة openai_key_path وتحديد عدد الإرشادات الخاصة بقوالب النماذج الأولية والقواعد التي ترغب في إنشاؤها باستخدام num_gpt3_revisions .
لتضمين مهمتك الجديدة الرائعة ، يرجى التأكد من أن ملفات المهمة تحت
./data/benchmark/performance/my_new_taskوتقديم طلب سحب.
يرجى أيضًا تضمين REARMD.MD القصير في المجلد الذي يصف هدف المهمة والترخيص الذي توجد به البيانات والتعليمات. على سبيل المثال ، شيء مثل هذا مثالي:
Task: Predict how many sheep someone will need to count before they fall asleep.
Data License: Apache 2.0
Instruction License: MITسنراجعه ونضيفه إلى المعيار. إذا كنت ترغب في إضافة اسمك وموقع الويب الخاص بك إلى قوائم المهام على الصفحة الرئيسية ، فيرجى ذكر ذلك في طلب السحب أيضًا.