

Tablet Githubへようこそ!このプロジェクトの目標は、表形式の予測のための指導学習の進捗状況をベンチマークすることです。うまくいけば、指示とラベルの付いた例を使用して、表形式の予測タスクを解決するモデルを作成できることを願っています。
多くの予測の問題には表形式データの使用が必要ですが、多くの場合、コストやプライバシーの問題により、十分なトレーニングデータを収集することが課題になる可能性があります。大規模な言語モデル(LLM)は、トレーニング前のためにかなりの世界知識を提供し、これらの問題のサンプル効率を改善するのに役立ちます。それでも、これらのモデルは、トレーニング前からのモデルバイアスとタスクに関する情報の欠如からのモデルバイアスのために、多くの表形式の予測タスクと完全に整合していないことがよくあります。
このギャップを埋めるためにタスク命令を使用できるとしたらどうでしょうか?タブレットが登場する場所です。タブレットは、LLMが表形式予測タスクのパフォーマンスを改善するための指示をどのように利用するかを評価するためのタスク命令が注釈が付けられた表形式データセットの生きたベンチマークです。
タブレットは、指示が注釈された表形式予測タスクの生きたベンチマークです。タブレットは、現在のタスク上のモデルを評価し、新しいタスクを提供するツールを提供します。目標は、研究者が表形式予測で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/benchmarkPython>=3.9使用してください。パッケージの1つに癖があるため、 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 +命令のパフォーマンスを評価するためのいくつかの便利な機能を提供します。 Tabletは、タスク上の任意のハギングフェイスモデルを評価するためのコードを提供し、また、特定のタスクのHuggingfaceデータセットを取得するためのツールを提供して、必要な評価を実行できるようにします。
まず、タスクデータセットがタブレットにどのように保存されているかを見てみましょう。すべてのタスクが保存されます
Tablet/data/benchmark/performanceたとえば、大人のタスクはに保存されています
Tablet/data/benchmark/performance/Adultこのディレクトリには、大人のタスクの各命令注釈に異なるディレクトリがあります。たとえば、プロトタイプで生成された命令の1つを見てみましょう。この命令はに保存されます
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0他のソースを介して収集された指示には、異なるパスがあります。ルールセットの生成命令にはすべてディレクトリ名があります
ruleset-synthetic-performance- *そして、自然に発生する指示にはあります
prototypes-naturallanguage-performance- *ここでのプロトタイプの使用は、他のディレクトリ名とのフォーマットの一貫性を保持するためだけです。
各ディレクトリには、4つのファイルがあります
../test.csv
../test.json
../train.csv
../train.jsonこれらは、表形式(.CSV)と自然言語形式(.JSON)ファイルの両方に保存されているトレーニングとテストセットです。 JSONファイル内には、ヘッダー、データポイントのシリアル化、命令など、それぞれプロンプトコンポーネントがあります。
タブレットパッケージを使用して、特定のタスクのハグイングフェイスデータセットを取得する方法は次のとおりです。これらの場所で大人と百日咳データセットの1人を取得したいとしましょう
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' ] タスクのパフォーマンスを直接評価することもできます。たとえば、プロトタイプで生成された3つのシードを使用して、大人の2ショットのFlan-T5の小さなパフォーマンスを評価することは次のとおりです。
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で手順を作成したり、生成したりすることで、新しいタスクを簡単に作成できます。これがあなたのやり方です。
パンダス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など)、タスクの高レベルの目標を説明するヘッダー、および自然なランゲージの指示を受け入れます。これは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レビューしてベンチマークに追加します。あなたの名前とウェブサイトがホームページのタスクのリストに追加されたい場合は、これもプルリクエストにも言及してください。