

태블릿 Github에 오신 것을 환영합니다! 이 프로젝트의 목표는 표 예측을위한 교육 학습의 진행 상황을 벤치마킹하는 것입니다. 잘만되면, 지침을 사용하여 표 예측 작업을 해결하는 모델과 몇 가지 레이블이 붙은 예제를 만들 수 있기를 바랍니다.
많은 예측 문제가 테이블 데이터를 사용해야하지만 종종 충분한 교육 데이터를 수집하는 것은 비용이나 개인 정보 보호 문제로 인해 어려운 작업이 될 수 있습니다. LLMS (Lange Language Models)는 사전 훈련으로 인해 상당한 세계 지식을 제공하며 이러한 문제에 대한 샘플 효율을 향상시키는 데 도움이 될 수 있습니다. 그럼에도 불구하고,이 모델들은 종종 사전 훈련으로 인한 모델 편향과 작업에 대한 정보 부족으로 인해 많은 표 예측 작업과 완전히 일치하지 않아서 0 및 소수의 샷 설정에서 성능을 해칠 수 있습니다.
이 격차를 해소하기 위해 작업 지침을 사용할 수 있다면 어떨까요? 태블릿이 들어오는 곳입니다. 태블릿은 LLMS가 표 예측 작업에 대한 성능을 향상시키기 위해 지침을 얼마나 잘 활용하는지 평가하기위한 작업 지침으로 주석이 붙은 표식 데이터 세트의 살아있는 벤치 마크입니다.
태블릿은 지침으로 주석이 달린 표 예측 작업의 살아있는 벤치 마크입니다. 태블릿은 현재 작업에 대한 모델을 평가하고 새로운 작업을 제공하는 도구를 제공합니다. 목표는 연구자들이 표 예측에 대한 LLM의 샘플 효율성을 향상시키는 기술을 개발하도록 돕는 것입니다.
태블릿이 귀하의 작업에 유용하다면, 우리를 인용하십시오.
@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 .그렇지 않으면 PIP를 사용하여 PYPI에서 설치할 수 있습니다. [참고 : 아직 출시되지 않음]
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)과 자연어 형식 (.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' ] 작업에서 성능을 직접 평가할 수도 있습니다. 예를 들어, 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으로 생성하여 새로운 작업을 쉽게 만들 수 있습니다. 다음은 다음과 같습니다.
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 같은 것들), 작업의 높은 수준 목표를 설명하는 헤더 및 자연스러운 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우리는 그것을 검토하고 벤치 마크에 추가 할 것입니다. 이름 및 웹 사이트가 홈페이지의 작업 목록에 추가하려면 풀 요청에도 언급하십시오.