

Willkommen im Tablet Github! Das Ziel dieses Projekts ist es, den Fortschritt beim Unterrichtslernen für die tabellarische Vorhersage zu reduzieren. Hoffentlich können wir Modelle erstellen, die tabellarische Vorhersageaufgaben unter Verwendung von Anweisungen und wenigen beschrifteten Beispielen lösen.
Während viele Vorhersageprobleme die Verwendung von tabellarischen Daten erfordern, kann das Sammeln ausreichender Schulungsdaten häufig aufgrund von Kosten oder Datenschutzproblemen eine Herausforderungsaufgabe sein. Großsprachige Modelle (LLMs) bieten aufgrund ihrer Vorausbildung beträchtliches Wissen über ein beträchtliches Wissen und können dazu beitragen, die Probeneffizienz für diese Probleme zu verbessern. Diese Modelle sind jedoch oft nicht vollständig mit vielen tabellarischen Vorhersageaufgaben ausgerichtet, da die Modellverzerrungen vor dem Training und die mangelnden Informationen über die Aufgabe fehlten, wodurch deren Leistung in den Einstellungen mit Null und wenigen Schusseinstellungen beeinträchtigt wird.
Was wäre, wenn wir Aufgabenanweisungen verwenden könnten, um diese Lücke zu schließen? Hier kommt Tablet ins Spiel. Tablet ist ein lebendiger Maßstab für tabellarische Datensätze, die mit Aufgabenanweisungen zur Bewertung der Anweisungen zur Verbesserung der Leistung bei tabellarischen Vorhersageaufgaben bewertet werden.
Tablet ist ein lebendiger Maßstab für tabellarische Vorhersageaufgaben, die mit Anweisungen kommentiert werden. Tablet bietet die Tools zur Bewertung von Modellen für aktuelle Aufgaben und liefert neue Aufgaben. Ziel ist es, Forschern zu helfen, Techniken zu entwickeln, die die Probeneffizienz von LLMs bei der tabellarischen Vorhersage verbessern.
Wenn Tablet für Ihre Arbeit nützlich ist, zitieren Sie uns bitte.
@article{tabletSlack23,
Author = {Dylan Slack and Sameer Singh},
Title = {TABLET: Learning From Instructions For Tabular Data},
Year = {2023},
journal = {arXiv},
}Um die Daten herunterzuladen, klonen Sie das Github -Repository.
git clone https://github.com/dylan-slack/Tablet.gitSobald dies abgeschlossen ist, werden die Daten in diesem Weg gespeichert.
Tablet/data/benchmark Bitte verwenden Sie Python>=3.9 . Verwenden Sie bitte nicht Python=3.9.7 . Stellen Sie außerdem sicher, dass Sie pip>=23.0.1 haben.
conda create -n tablet python=3.9.6
conda activate tablet
pip install --upgrade pipWenn Sie das Tablet -Paket von der Quelle installieren möchten, navigieren Sie in das Tablet -Paketverzeichnis und installieren Sie.
cd Tablet
python3 -m pip install -e .Andernfalls können Sie von PYPI mit PIP installieren. [Hinweis: Noch nicht veröffentlicht]
pip install tablet-benchmarkLeider stammen einige natürlich vorkommende Anweisungen aus Quellen, die nicht zugelassen sind, und ermöglichen es kein Hosting an anderer Stelle. Wir bieten einen Leitfaden zum Sammeln dieser Anweisungen in
Tablet/fill_missing_instructions.pySobald dies abgeschlossen ist, können Sie laufen
python fill_missing_instructions.pyund die Anweisungen werden den Benchmark -Daten hinzugefügt.
Das Tablet -Paket bietet mehrere nützliche Funktionen für die Bewertung der Leistung von LLMs + Anweisungen in tabellarischen Datensätzen. Tablet bietet Code zur Bewertung beliebiger Huggingface -Modelle für Aufgaben und bietet Tools, um einfach den HuggingFace -Datensatz für eine bestimmte Aufgabe zu erhalten, damit Sie die gewünschte Bewertung ausführen können.
Schauen wir uns zunächst an, wie die Task -Datensätze in Tablet gespeichert werden. Alle Aufgaben werden in gespeicherten Aufgaben aufbewahrt
Tablet/data/benchmark/performanceZum Beispiel wird die Aufgabe für Erwachsene bei gelagert
Tablet/data/benchmark/performance/AdultInnerhalb dieses Verzeichnisses gibt es für jede Anweisung für die Anweisung für die Aufgabe der Erwachsenen unterschiedliche Verzeichnisse. Schauen wir uns beispielsweise eine der von Prototypen erzeugten Anweisungen an. Diese Anweisung wird bei gespeichert
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0Anweisungen, die über andere Quellen gesammelt wurden, haben unterschiedliche Wege. Die von den Regeln generierten Anweisungen haben alle den Verzeichnisnamen
ruleset-synthetic-performance- *Und die natürlich vorkommenden Anweisungen haben
prototypes-naturallanguage-performance- *Beachten Sie, dass die Verwendung von Prototypen hier nur darin besteht, die Formatierungskonsistenz mit den anderen Verzeichnisnamen beizubehalten.
In jedem Verzeichnis gibt es vier Dateien
../test.csv
../test.json
../train.csv
../train.jsonDies sind die Trainings- und Testsätze, die sowohl in ihren tabellarischen Formaten (CSVs) als auch in ihren natürlichen Sprachformaten (JSON) gespeichert sind. Innerhalb der JSON -Dateien gibt es jede Eingabeaufforderungskomponente wie die Header, die Datenpunktserialisierung und den Anweisungen.
Hier erfahren Sie, wie Sie das Tablet -Paket verwenden, um einen HarmgingFace -Datensatz für eine bestimmte Aufgabe zu erhalten. Nehmen wir an, wir möchten einen der erwachsenen und keuchlichen Hustendatensätze an diesen Orten bekommen
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0
Tablet/data/benchmark/performance/A37/prototypes-synthetic-performance-0Wir können die Testdatensätze wie folgt erhalten
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 () Wir können hier k_shot angeben, um zu steuern, wie viele K_SHOT -Instanzen aus den Trainingsdaten abgetastet und in die Eingabeaufforderungen enthalten sind. Dann können wir auf die Testdaten und Beschriftungen für Erwachsene zugreifen als
test_data , ground_truth_labels = adult [ 'text' ], adult [ 'label' ] Wir können auch die Leistung bei Aufgaben direkt bewerten. Zum Beispiel die Bewertung von 2-Shot-Flan-T5-Leistung bei Erwachsenen mit Prototypen, die Anweisungen mit 3 Samen erzeugten, lautet wie folgt
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 ) Die Ergebnisse werden an my_cool_results.txt angehängt.
Um Modelle zu erstellen, die sich auf tabellarische Vorhersageprobleme ausrichten können, die nur aus Anweisungen und vielleicht einigen Beispielen ausgerichtet sind, benötigen wir viele Aufgaben. Diese sind nützlich, um zu bewerten, wie gut es uns geht, und könnten für die zukünftige Überwachung nützlich sein.
Tablet erleichtert das Erstellen neuer Aufgaben, indem Sie Anweisungen schreiben oder mit GPT-3 für neue Datensätze generieren. So machst du es.
Sie müssen das Training und die Prüfung für Ihre Aufgabe in Pandas DFs gespeichert haben. Dann können Sie Tablet.create anrufen. Diese Funktion kümmert sich darum, die Aufgabe für die natürlich vorkommenden Anweisungen zu erstellen, die Sie angegeben haben, und generiert auch Anweisungen mit GPT-3, wenn Sie möchten.
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" ) Hier sind train_x und eval_x die Zug- und Testspaltungen. In ähnlicher Weise sind train_y und eval_y die Etikettenspalten. Diese Funktion akzeptiert auch den Namen der Aufgabe (z. B. Dinge wie Adult oder Wine ), den Header, der das hohe Ziel der Aufgabe beschreibt, und die natürlichen Anweisungen von Langauge-dies ist das Argument nl_instructions . Sie müssen auch die Namen der kategorialen Spalten angeben. Das num Argument ist die Index, die die Aufgabe mit dieser natürlich vorkommenden Anweisung unter (z. B. prototypes-naturallanguage-performance-{num} ) gespeichert wird.
Wenn Sie Anweisungen mit GPT-3 generieren möchten, müssen Sie einen OpenAI-Schlüssel in einer Datei angeben und den Speicherort dieser Datei an das Argument openai_key_path angeben und angeben, wie viele Anweisungen für die Prototypen und Regeln-Vorlagen Sie mit num_gpt3_revisions erstellen möchten.
Um Ihre großartige neue Aufgabe einzuschließen, stellen Sie bitte sicher, dass die Dateien der Aufgaben unterliegen
./data/benchmark/performance/my_new_taskund senden Sie eine Pull -Anfrage.
Bitte geben Sie auch einen kurzen ReadMd.md in den Ordner an, in dem das Ziel der Aufgabe beschrieben wird, und die Lizenz, unter denen die Daten und Anweisungen unterliegen. Zum Beispiel ist so etwas ideal:
Task: Predict how many sheep someone will need to count before they fall asleep.
Data License: Apache 2.0
Instruction License: MITWir werden es überprüfen und dem Benchmark hinzufügen. Wenn Sie Ihren Namen und Ihre Website möchten, die zu den Aufgabenlisten auf der Homepage hinzugefügt werden, erwähnen Sie dies bitte auch in der Pull -Anfrage.