

Selamat datang di tablet github! Tujuan dari proyek ini adalah untuk membandingkan kemajuan pada pembelajaran instruksi untuk prediksi tabel. Mudah -mudahan, kita dapat membuat model yang menyelesaikan tugas prediksi tabel menggunakan instruksi dan beberapa contoh berlabel.
Sementara banyak masalah prediksi memerlukan penggunaan data tabel, seringkali, mengumpulkan data pelatihan yang cukup dapat menjadi tugas tantangan, karena biaya atau masalah privasi. Model Bahasa Besar (LLM) menawarkan pengetahuan dunia yang cukup besar karena pra-pelatihan mereka dan dapat membantu meningkatkan efisiensi sampel untuk masalah ini. Namun, model-model ini sering tidak sepenuhnya selaras dengan banyak tugas prediksi tabular karena bias model dari pra-pelatihan dan kurangnya informasi tentang tugas, melukai kinerja mereka di pengaturan nol dan beberapa bidikan.
Bagaimana jika kita bisa menggunakan instruksi tugas untuk membantu menjembatani kesenjangan ini? Di situlah tablet masuk. Tablet adalah tolok ukur hidup dari set data tabular yang dianotasi dengan instruksi tugas untuk mengevaluasi seberapa baik LLMS menggunakan instruksi untuk meningkatkan kinerja pada tugas prediksi tabel.
Tablet adalah tolok ukur hidup dari tugas prediksi tabular yang dianotasi dengan instruksi. Tablet menyediakan alat untuk mengevaluasi model pada tugas saat ini dan menyumbangkan tugas baru. Tujuannya adalah untuk membantu para peneliti mengembangkan teknik yang meningkatkan efisiensi sampel LLM pada prediksi tabel.
Jika tablet berguna untuk pekerjaan Anda, silakan kutip kami.
@article{tabletSlack23,
Author = {Dylan Slack and Sameer Singh},
Title = {TABLET: Learning From Instructions For Tabular Data},
Year = {2023},
journal = {arXiv},
}Untuk mengunduh data, klon Repositori GitHub.
git clone https://github.com/dylan-slack/Tablet.gitSetelah ini selesai, data disimpan di jalur ini.
Tablet/data/benchmark Silakan gunakan Python>=3.9 . Karena kekhasan di salah satu paket, tolong jangan gunakan Python=3.9.7 . Juga, pastikan Anda memiliki pip>=23.0.1 .
conda create -n tablet python=3.9.6
conda activate tablet
pip install --upgrade pipJika Anda ingin menginstal paket tablet dari sumber, navigasikan ke direktori paket tablet dan instal.
cd Tablet
python3 -m pip install -e .Jika tidak, Anda dapat menginstal dari PYPI dengan PIP. [Catatan: Belum dirilis]
pip install tablet-benchmarkSayangnya, beberapa instruksi yang terjadi secara alami berasal dari sumber yang tidak dilisensikan secara permisi dan tidak mengizinkan hosting di tempat lain. Kami memberikan panduan untuk mengumpulkan instruksi ini
Tablet/fill_missing_instructions.pySetelah ini selesai, Anda dapat berlari
python fill_missing_instructions.pydan instruksi akan ditambahkan ke data benchmark.
Paket Tablet menawarkan beberapa fitur yang berguna untuk mengevaluasi kinerja instruksi LLMS + pada set data tabular. Tablet menyediakan kode untuk mengevaluasi model huggingface sewenang -wenang pada tugas dan juga menyediakan alat untuk hanya mendapatkan dataset huggingface untuk tugas tertentu sehingga Anda dapat melakukan evaluasi apa pun yang Anda inginkan.
Pertama, mari kita lihat bagaimana dataset tugas disimpan dalam tablet. Semua tugas disimpan
Tablet/data/benchmark/performanceMisalnya, tugas dewasa disimpan di
Tablet/data/benchmark/performance/AdultDi dalam direktori ini, ada direktori yang berbeda untuk setiap anotasi instruksi untuk tugas dewasa. Misalnya, mari kita lihat salah satu prototipe yang dihasilkan instruksi. Instruksi ini disimpan di
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0Instruksi yang dikumpulkan melalui sumber lain memiliki jalur yang berbeda. Aturan yang dihasilkan semua instruksi memiliki nama direktori
ruleset-synthetic-performance- *Dan instruksi yang terjadi secara alami
prototypes-naturallanguage-performance- *Catatan, penggunaan prototipe di sini hanya untuk mempertahankan konsistensi pemformatan dengan nama direktori lainnya.
Di dalam setiap direktori, ada empat file
../test.csv
../test.json
../train.csv
../train.jsonIni adalah set pelatihan dan pengujian, disimpan baik dalam format tabel mereka (.CSV) dan file format bahasa alami mereka (.JSON). Di dalam file JSON, ada masing -masing komponen prompt, seperti header, serialisasi titik data, dan instruksi.
Inilah cara menggunakan paket tablet untuk mendapatkan dataset pelukan untuk tugas tertentu. Katakanlah kami ingin mendapatkan salah satu dari set data batuk orang dewasa dan rejan di lokasi -lokasi ini
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0
Tablet/data/benchmark/performance/A37/prototypes-synthetic-performance-0Kita bisa mendapatkan set data pengujian sebagai berikut
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 () Kami dapat menentukan k_shot di sini untuk mengontrol berapa banyak instance K_Shot yang diambil sampelnya dari data pelatihan dan dimasukkan ke dalam petunjuk. Kemudian, kita dapat mengakses data dan label uji dewasa sebagai
test_data , ground_truth_labels = adult [ 'text' ], adult [ 'label' ] Kami juga dapat secara langsung mengevaluasi kinerja pada tugas. Misalnya, mengevaluasi kinerja kecil 2-shot-t5 pada orang dewasa dengan prototipe yang dihasilkan instruksi dengan 3 biji adalah sebagai berikut
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 ) Hasilnya akan ditambahkan ke my_cool_results.txt .
Untuk membangun model yang dapat menyelaraskan diri dengan masalah prediksi tabular dengan sangat baik dari instruksi yang adil dan mungkin beberapa contoh, kita membutuhkan banyak tugas. Ini berguna untuk mengevaluasi seberapa baik kita melakukan dan bisa berguna untuk pengawasan di masa depan.
Tablet memudahkan untuk membuat tugas baru dengan menulis instruksi atau menghasilkannya dengan GPT-3 untuk set data baru. Begini cara Anda melakukannya.
Anda harus mengadakan pelatihan dan pengujian untuk tugas Anda yang disimpan di Pandas DF. Kemudian, Anda dapat memanggil Tablet.create . Fungsi ini akan mengurus tugas untuk instruksi yang terjadi secara alami yang Anda berikan dan juga akan menghasilkan instruksi menggunakan GPT-3, jika Anda mau.
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" ) Di sini, train_x dan eval_x adalah perpecahan kereta dan tes. Demikian pula, train_y dan eval_y adalah kolom label. Fungsi ini juga menerima nama tugas (misalnya, hal-hal seperti Adult atau Wine ), header yang menggambarkan tujuan tugas tingkat tinggi, dan instruksi langauge alami-ini adalah argumen nl_instructions . Anda juga harus menentukan nama kolom kategorikal. Argumen num adalah indeks tugas dengan instruksi yang terjadi secara alami ini akan disimpan di bawah (misalnya, prototypes-naturallanguage-performance-{num} ).
Lebih lanjut, jika Anda ingin membuat instruksi dengan GPT-3, Anda harus memberikan kunci OpenAI dalam file dan memberikan lokasi file ini ke argumen openai_key_path dan menentukan berapa banyak instruksi untuk prototipe dan templat aturan yang ingin Anda buat dengan num_gpt3_revisions .
Untuk memasukkan tugas baru Anda yang luar biasa, pastikan file tugas berada di bawah
./data/benchmark/performance/my_new_taskdan mengirimkan permintaan tarik.
Harap juga sertakan readmd.md pendek di folder yang menjelaskan tujuan tugas dan lisensi data dan instruksi berada di bawah. Misalnya, sesuatu seperti ini ideal:
Task: Predict how many sheep someone will need to count before they fall asleep.
Data License: Apache 2.0
Instruction License: MITKami akan memeriksanya dan menambahkannya ke tolok ukur. Jika Anda ingin nama & situs web Anda ditambahkan ke daftar tugas di beranda, harap sebutkan ini di permintaan tarik juga.