

ยินดีต้อนรับสู่แท็บเล็ต 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 เนื่องจากการเล่นโวหารในแพ็คเกจใดแพ็คเกจโปรดอย่าใช้ 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 โดยพลการในงานและยังมีเครื่องมือในการรับชุดข้อมูล 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 มีองค์ประกอบที่พร้อมท์แต่ละรายการเช่นส่วนหัวการทำให้เป็นอนุกรมจุดข้อมูลและคำสั่ง
นี่คือวิธีใช้แพ็คเกจแท็บเล็ตเพื่อรับชุดข้อมูล HuggingFace สำหรับงานเฉพาะ สมมติว่าเราต้องการรับชุดข้อมูลไอของผู้ใหญ่และไอกรนในสถานที่เหล่านี้
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' ] นอกจากนี้เรายังสามารถประเมินประสิทธิภาพโดยตรงในงาน ตัวอย่างเช่นการประเมินประสิทธิภาพขนาดเล็ก 2-shot Flan-T5 สำหรับผู้ใหญ่ที่มีต้นแบบที่สร้างคำแนะนำด้วย 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
เพื่อสร้างแบบจำลองที่สามารถจัดแนวตัวเองกับปัญหาการทำนายแบบตารางได้ดีมากจากคำแนะนำเพียงแค่และอาจเป็นตัวอย่างบางส่วนเราต้องการงานมากมาย สิ่งเหล่านี้มีประโยชน์สำหรับการประเมินว่าเราทำได้ดีแค่ไหนและอาจเป็นประโยชน์สำหรับการกำกับดูแลในอนาคต
แท็บเล็ตทำให้ง่ายต่อการสร้างงานใหม่โดยการเขียนคำแนะนำหรือสร้างด้วย GPT-3 สำหรับชุดข้อมูลใหม่ นี่คือวิธีที่คุณทำ
คุณต้องมีการฝึกอบรมและการทดสอบสำหรับงานของคุณที่เก็บไว้ใน Pandas DF's จากนั้นคุณสามารถโทรหา 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และส่งคำขอดึง
โปรดรวม readmd.md สั้น ๆ ในโฟลเดอร์ที่อธิบายเป้าหมายของงานและใบอนุญาตข้อมูลและคำแนะนำอยู่ภายใต้ ตัวอย่างเช่นสิ่งนี้เหมาะอย่างยิ่ง:
Task: Predict how many sheep someone will need to count before they fall asleep.
Data License: Apache 2.0
Instruction License: MITเราจะตรวจสอบและเพิ่มลงในเกณฑ์มาตรฐาน หากคุณต้องการเพิ่มชื่อและเว็บไซต์ของคุณในรายการงานในหน้าแรกโปรดพูดถึงสิ่งนี้ในคำขอดึงเช่นกัน