Rilis data dan kode resmi untuk makalah DS-1000: Tolok Ukur yang Alami dan Andal untuk Pembuatan Kode Ilmu Data . Anda dapat merujuk ke halaman proyek kami untuk melihat lebih banyak contoh dan dasar.
Berita (04/2024): DS-1000 kini telah disederhanakan dan dihosting di huggingface. Anda juga dapat merujuk ke format aslinya seperti yang dijelaskan dalam makalah kami.
Ini adalah pemformatan ulang kumpulan data DS-1000 untuk meningkatkan kegunaannya tanpa mengubah isinya. Kumpulan data dihosting di huggingface dan di data/ds1000.jsonl.gz
Ada dua opsi untuk memuat kumpulan data
# Option 1 load from huggingface
from datasets import load_dataset
ds1000 = list ( load_dataset ( "xlangai/DS-1000" )[ "test" ])
# Option 2 load from raw jsonl.gz
import gzip
ds1000 = [ json . loads ( l ) for l in gzip . open ( "data/ds1000.jsonl.gz" , "rt" ). readlines ()]
Skrip test_ds1000.py
yang disediakan mengevaluasi DS-1000 pada data/codex002-answers.jsonl
conda env create -f environment.yml
conda activate ds1000-3.10
# the test code also needs: pip install datasets tqdm
python test_ds1000.py
Hasil yang diharapkan:
count mean
lib
Matplotlib 155 0.548
Numpy 220 0.432
Pandas 291 0.265
Pytorch 68 0.397
Scipy 106 0.349
Sklearn 115 0.435
Tensorflow 45 0.378
DS-1000 overall
mean 0.388
Lihat juga hasil model baru di folder hasil.
Skrip pengujian mengeksekusi kode yang dihasilkan, sehingga sandbox Anda sendiri sangat dianjurkan, namun kode referensi dan solusi yang diberikan tampaknya aman untuk dijalankan. Sandbox Anda harus mengizinkan beberapa operasi file (misalnya menyimpan plot di matplotlib) dan operasi os (misalnya tensorflow, sklearn)
prompt
bidang berisi pertanyaan dalam konteks, bersama dengan instruksi sederhana seperti result = ... # put solution this variable
. Ini adalah perintah standar untuk konsistensi model.
Bidang code_context
mendefinisikan test_execution(solution: str)
dan test_string(solution: str)
yang menggunakan kode yang dihasilkan sebagai argumen dan mengevaluasi kebenarannya. test_execution
bekerja dengan mengganti input contoh yang disertakan dalam prompt dengan input yang dihasilkan oleh generate_test_case(test_case_id)
dan kemudian memeriksa output (dihasilkan oleh solusi referensi, yang juga ada di code_context
). Solusi lolos jika melewati test_execution
dan test_string
(jika ada). Konteks eksekusi ( exec_context
) dalam code_context
identik dengan yang disediakan oleh prompt
.
code_context
.code_context
mendefinisikan test_execution(solution: str)
dan test_string(solution: str)
yang menggunakan kode sebagai argumen dan mengevaluasi kebenarannyaenvironment.yml
)parser
usang dan menyederhanakan pengujian string menggunakan tokenize
metadata
. Untuk mengonversi ds1000 menjadi file yang dapat diedit, gunakan skrip edit_ds1000.py
yang disediakan untuk membagi daftar masalah dengan perintah ini:
# specify --edit_dir according to your needs
python edit_ds1000.py --to_edit --edit_dir data/ds1000_edit
ke dalam struktur berikut:
data/ds1000_edit
├── 0 # problem id
├── prompt.txt
├── reference_code.txt
├── metadata.json
└── code_context.py
├── 1
├── ...
Setelah mengedit, bangun kembali kumpulan data menjadi data/ds1000.jsonl
dengan perintah ini:
python edit_ds1000.py --to_jsonl --edit_dir data/ds1000_edit
Sebagian kecil eksekusi bersifat stateful (tensorflow dan matplotlib). Jadi setiap masalah harus dieksekusi dalam proses yang independen. Hal ini juga terjadi untuk pengujian sekuensial.
Seperti kebanyakan data berlabel manusia, sejumlah kecil kesalahan mungkin terjadi. Selain itu, meskipun kami menghilangkan ambiguitas yang dapat kami lihat, kami tidak dapat mengantisipasi semua kemungkinan penafsiran yang benar/salah terhadap perintah tersebut. Rincian lebih lanjut ada di koran.
Ada sedikit ketidakkonsistenan dengan set aslinya karena impor. Misalnya import a; abc()
diperkirakan gagal, namun tidak gagal jika import ab
digunakan di tempat lain dalam proses. Ini hanya mempengaruhi beberapa solusi yang benar kecuali impor.
Jika Anda merasa pekerjaan kami bermanfaat, silakan kutip sebagai
@article{Lai2022DS1000,
title={DS-1000: A Natural and Reliable Benchmark for Data Science Code Generation},
author={Yuhang Lai and Chengxi Li and Yiming Wang and Tianyi Zhang and Ruiqi Zhong and Luke Zettlemoyer and Scott Wen-tau Yih and Daniel Fried and Sida Wang and Tao Yu},
journal={ArXiv},
year={2022},
volume={abs/2211.11501}
}