Berita Terbaru
hf-multimodal
dan vllm-vlm
serta tugas mmmu
sebagai fitur prototipe . Kami menyambut pengguna untuk mencoba fitur yang sedang berjalan ini dan mengujinya sendiri, dan menyarankan agar mereka memeriksa lmms-eval
, sebuah proyek luar biasa yang awalnya merupakan cabang dari lm-evaluation-harness, untuk tugas multimodal yang lebih luas, model, dan fitur.local-completions
untuk mengevaluasi model.Rilis baru lm-evaluation-harness v0.4.0 telah tersedia !
Pembaruan dan fitur baru meliputi:
Silakan lihat halaman dokumentasi kami yang diperbarui di docs/
untuk detail lebih lanjut.
Pengembangan akan dilanjutkan di cabang main
, dan kami mendorong Anda untuk memberi kami umpan balik tentang fitur apa yang diinginkan dan cara meningkatkan perpustakaan lebih lanjut, atau ajukan pertanyaan, baik dalam terbitan atau PR di GitHub, atau di perselisihan EleutherAI!
Proyek ini menyediakan kerangka terpadu untuk menguji model bahasa generatif pada sejumlah besar tugas evaluasi yang berbeda.
Fitur:
Harness Evaluasi Model Bahasa adalah backend untuk ? Papan Peringkat LLM Terbuka Hugging Face yang populer, telah digunakan di ratusan makalah, dan digunakan secara internal oleh puluhan organisasi termasuk NVIDIA, Cohere, BigScience, BigCode, Nous Research, dan Moses ML.
Untuk menginstal paket lm-eval
dari repositori github, jalankan:
git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
Kami juga menyediakan sejumlah dependensi opsional untuk fungsionalitas yang diperluas. Tabel terperinci tersedia di akhir dokumen ini.
Panduan pengguna yang merinci daftar lengkap argumen yang didukung disediakan di sini, dan di terminal dengan menelepon lm_eval -h
. Alternatifnya, Anda dapat menggunakan lm-eval
daripada lm_eval
.
Daftar tugas yang didukung (atau pengelompokan tugas) dapat dilihat dengan lm-eval --tasks list
. Deskripsi tugas dan tautan ke subfolder terkait disediakan di sini.
transformers
Wajah Memeluk Untuk mengevaluasi model yang dihosting di HuggingFace Hub (misalnya GPT-J-6B) di hellaswag
Anda dapat menggunakan perintah berikut (dengan asumsi Anda menggunakan GPU yang kompatibel dengan CUDA):
lm_eval --model hf
--model_args pretrained=EleutherAI/gpt-j-6B
--tasks hellaswag
--device cuda:0
--batch_size 8
Argumen tambahan dapat diberikan kepada konstruktor model menggunakan flag --model_args
. Yang paling penting, hal ini mendukung praktik umum penggunaan fitur revisions
di Hub untuk menyimpan pos pemeriksaan yang dilatih sebagian, atau untuk menentukan tipe data untuk menjalankan model:
lm_eval --model hf
--model_args pretrained=EleutherAI/pythia-160m,revision=step100000,dtype= " float "
--tasks lambada_openai,hellaswag
--device cuda:0
--batch_size 8
Model yang dimuat melalui transformers.AutoModelForCausalLM
(model gaya GPT khusus dekoder autoregresif) dan transformers.AutoModelForSeq2SeqLM
(seperti model encoder-decoder seperti T5) di Huggingface didukung.
Pemilihan ukuran batch dapat diotomatisasi dengan mengatur flag --batch_size
ke auto
. Ini akan melakukan deteksi otomatis terhadap ukuran batch terbesar yang sesuai dengan perangkat Anda. Pada tugas yang terdapat perbedaan besar antara contoh terpanjang dan terpendek, akan sangat membantu jika menghitung ulang ukuran batch terbesar secara berkala, untuk mendapatkan percepatan lebih lanjut. Untuk melakukannya, tambahkan :N
ke tanda di atas untuk secara otomatis menghitung ulang ukuran batch terbesar sebanyak N
kali. Misalnya, untuk menghitung ulang ukuran batch sebanyak 4 kali, perintahnya adalah:
lm_eval --model hf
--model_args pretrained=EleutherAI/pythia-160m,revision=step100000,dtype= " float "
--tasks lambada_openai,hellaswag
--device cuda:0
--batch_size auto:4
Catatan
Sama seperti Anda dapat menyediakan jalur lokal ke transformers.AutoModel
, Anda juga dapat menyediakan jalur lokal ke lm_eval
melalui --model_args pretrained=/path/to/model
accelerate
Kami mendukung tiga cara utama menggunakan perpustakaan akselerasi Hugging Face untuk evaluasi multi-GPU.
Untuk melakukan evaluasi data paralel (di mana setiap GPU memuat salinan lengkap model secara terpisah ), kami memanfaatkan peluncur accelerate
sebagai berikut:
accelerate launch -m lm_eval --model hf
--tasks lambada_openai,arc_easy
--batch_size 16
(atau melalui accelerate launch --no-python lm_eval
).
Untuk kasus di mana model Anda dapat ditampung pada satu GPU, hal ini memungkinkan Anda mengevaluasi K GPU K kali lebih cepat daripada satu GPU.
PERINGATAN : Pengaturan ini tidak berfungsi dengan sharding model FSDP, jadi dalam accelerate config
FSDP harus dinonaktifkan, atau opsi NO_SHARD FSDP harus digunakan.
Cara kedua menggunakan accelerate
untuk evaluasi multi-GPU adalah ketika model Anda terlalu besar untuk ditampung pada satu GPU.
Dalam pengaturan ini, jalankan perpustakaan di luar peluncur accelerate
, tetapi meneruskan parallelize=True
ke --model_args
sebagai berikut:
lm_eval --model hf
--tasks lambada_openai,arc_easy
--model_args parallelize=True
--batch_size 16
Ini berarti bobot model Anda akan dibagi ke semua GPU yang tersedia.
Untuk pengguna tingkat lanjut atau model yang lebih besar, kami juga mengizinkan argumen berikut ketika parallelize=True
:
device_map_option
: Cara membagi bobot model di seluruh GPU yang tersedia. defaultnya adalah "otomatis".max_memory_per_gpu
: memori GPU maksimal yang digunakan per GPU dalam memuat model.max_cpu_memory
: jumlah maksimal memori CPU yang digunakan saat memindahkan bobot model ke RAM.offload_folder
: folder tempat bobot model akan dipindahkan ke disk jika diperlukan.Opsi ketiga adalah menggunakan keduanya secara bersamaan. Hal ini memungkinkan Anda memanfaatkan paralelisme data dan sharding model, dan sangat berguna untuk model yang terlalu besar untuk ditampung pada satu GPU.
accelerate launch --multi_gpu --num_processes {nb_of_copies_of_your_model}
-m lm_eval --model hf
--tasks lambada_openai,arc_easy
--model_args parallelize=True
--batch_size 16
Untuk mempelajari lebih lanjut tentang paralelisme model dan cara menggunakannya dengan pustaka accelerate
, lihat dokumentasi akselerasi
Peringatan: Kami tidak mendukung evaluasi multi-node menggunakan tipe model hf
! Silakan rujuk integrasi perpustakaan GPT-NeoX kami untuk contoh kode yang digunakan untuk menulis skrip evaluasi multi-mesin khusus.
Catatan: saat ini kami tidak mendukung evaluasi multi-node secara asli, dan menyarankan penggunaan server yang dihosting secara eksternal untuk menjalankan permintaan inferensi, atau membuat integrasi khusus dengan kerangka kerja terdistribusi Anda seperti yang dilakukan untuk pustaka GPT-NeoX.
nemo
NVIDIA NeMo Framework adalah kerangka kerja AI generatif yang dibuat untuk peneliti dan pengembang pytorch yang mengerjakan model bahasa.
Untuk mengevaluasi model nemo
, mulailah dengan menginstal NeMo dengan mengikuti dokumentasinya. Kami sangat menyarankan untuk menggunakan container NVIDIA PyTorch atau NeMo, terutama jika mengalami masalah saat menginstal Apex atau dependensi lainnya (lihat container terbaru yang dirilis). Silakan instal juga perpustakaan harness evaluasi lm dengan mengikuti instruksi di bagian Instal.
Model NeMo dapat diperoleh melalui Katalog NVIDIA NGC atau di halaman Hugging Face NVIDIA. Di NVIDIA NeMo Framework terdapat skrip konversi untuk mengonversi pos pemeriksaan hf
model populer seperti llama, falcon, mixtral atau mpt ke nemo
.
Jalankan model nemo
pada satu GPU:
lm_eval --model nemo_lm
--model_args path= < path_to_nemo_model >
--tasks hellaswag
--batch_size 32
Disarankan untuk membongkar model nemo
untuk menghindari pembongkaran di dalam wadah buruh pelabuhan - ini mungkin melebihi ruang disk. Untuk itu Anda dapat menjalankan:
mkdir MY_MODEL
tar -xvf MY_MODEL.nemo -c MY_MODEL
nemo
Secara default, hanya satu GPU yang digunakan. Namun kami mendukung replikasi data atau paralelisme tensor/pipa selama evaluasi, pada satu node.
model_args
devices
ke jumlah replika data yang akan dijalankan. Misalnya, perintah untuk menjalankan 8 replika data pada 8 GPU adalah: torchrun --nproc-per-node=8 --no-python lm_eval
--model nemo_lm
--model_args path= < path_to_nemo_model > ,devices=8
--tasks hellaswag
--batch_size 32
model_args
dari tensor_model_parallel_size
dan/atau pipeline_model_parallel_size
. Selain itu, Anda juga harus menyiapkan devices
agar sama dengan produk tensor_model_parallel_size
dan/atau pipeline_model_parallel_size
. Misalnya, perintah untuk menggunakan satu node dari 4 GPU dengan paralelisme tensor 2 dan paralelisme pipeline 2 adalah: torchrun --nproc-per-node=4 --no-python lm_eval
--model nemo_lm
--model_args path= < path_to_nemo_model > ,devices=4,tensor_model_parallel_size=2,pipeline_model_parallel_size=2
--tasks hellaswag
--batch_size 32
Perhatikan bahwa disarankan untuk mengganti perintah python
dengan torchrun --nproc-per-node=<number of devices> --no-python
untuk memfasilitasi pemuatan model ke dalam GPU. Hal ini sangat penting terutama untuk pos pemeriksaan besar yang dimuat ke beberapa GPU.
Belum didukung: evaluasi multi-node dan kombinasi replikasi data dengan paralelisme tensor atau pipeline.
vLLM
Kami juga mendukung vLLM untuk inferensi yang lebih cepat pada jenis model yang didukung, terutama lebih cepat saat membagi model ke beberapa GPU. Untuk GPU tunggal atau multi-GPU — paralel tensor, paralel data, atau kombinasi keduanya — inferensi, misalnya:
lm_eval --model vllm
--model_args pretrained={model_name},tensor_parallel_size={GPUs_per_model},dtype=auto,gpu_memory_utilization=0.8,data_parallel_size={model_replicas}
--tasks lambada_openai
--batch_size auto
Untuk menggunakan vllm, lakukan pip install lm_eval[vllm]
. Untuk daftar lengkap konfigurasi vLLM yang didukung, silakan rujuk integrasi vLLM kami dan dokumentasi vLLM.
vLLM terkadang berbeda dalam output dari Huggingface. Kami memperlakukan Huggingface sebagai implementasi referensi, dan menyediakan skrip untuk memeriksa validitas hasil vllm terhadap HF.
Tip
Untuk performa tercepat, sebaiknya gunakan --batch_size auto
untuk vLLM bila memungkinkan, untuk memanfaatkan fungsionalitas batching berkelanjutannya!
Tip
Meneruskan max_model_len=4096
atau beberapa default wajar lainnya ke vLLM melalui argumen model dapat menyebabkan percepatan atau mencegah kesalahan kehabisan memori saat mencoba menggunakan ukuran batch otomatis, seperti untuk Mistral-7B-v0.1 yang defaultnya adalah panjang maksimum 32k.
Perpustakaan kami juga mendukung evaluasi model yang disajikan melalui beberapa API komersial, dan kami berharap dapat menerapkan dukungan untuk server inferensi lokal/yang dihosting sendiri dengan performa yang paling umum digunakan.
Untuk memanggil model yang dihosting, gunakan:
export OPENAI_API_KEY=YOUR_KEY_HERE
lm_eval --model openai-completions
--model_args model=davinci
--tasks lambada_openai,hellaswag
Kami juga mendukung penggunaan server inferensi lokal Anda sendiri dengan server yang mencerminkan OpenAI Completions dan ChatCompletions API.
lm_eval --model local-completions --tasks gsm8k --model_args model=facebook/opt-125m,base_url=http://{yourip}:8000/v1/completions,num_concurrent=1,max_retries=3,tokenized_requests=False,batch_size=16
Perhatikan bahwa untuk model yang dihosting secara eksternal, konfigurasi seperti --device
yang berhubungan dengan tempat menempatkan model lokal tidak boleh digunakan dan tidak berfungsi. Sama seperti Anda dapat menggunakan --model_args
untuk meneruskan argumen arbitrer ke konstruktor model untuk model lokal, Anda juga dapat menggunakannya untuk meneruskan argumen arbitrer ke API model untuk model yang dihosting. Lihat dokumentasi layanan hosting untuk informasi tentang argumen yang mereka dukung.
API atau Server Inferensi | Diimplementasikan? | --model <xxx> nama | Model yang didukung: | Jenis Permintaan: |
---|---|---|---|---|
Penyelesaian OpenAI | ✔️ | openai-completions , local-completions | Semua model API Penyelesaian OpenAI | generate_until , loglikelihood , loglikelihood_rolling |
Penyelesaian Obrolan OpenAI | ✔️ | openai-chat-completions , local-chat-completions | Semua model API ChatCompletions | generate_until (tidak ada masalah log) |
Antropis | ✔️ | anthropic | Mesin Antropik yang Didukung | generate_until (tidak ada masalah log) |
Obrolan Antropis | ✔️ | anthropic-chat , anthropic-chat-completions | Mesin Antropik yang Didukung | generate_until (tidak ada masalah log) |
Sintesis teks | ✔️ | textsynth | Semua mesin yang didukung | generate_until , loglikelihood , loglikelihood_rolling |
Berpadu | ⌛ - diblokir karena bug Cohere API | T/A | Semua mesin cohere.generate() | generate_until , loglikelihood , loglikelihood_rolling |
Llama.cpp (melalui llama-cpp-python) | ✔️ | gguf , ggml | Semua model didukung oleh llama.cpp | generate_until , loglikelihood , (evaluasi kebingungan belum diterapkan) |
vLLM | ✔️ | vllm | Kebanyakan Model Bahasa Kausal HF | generate_until , loglikelihood , loglikelihood_rolling |
Mamba | ✔️ | mamba_ssm | Model Bahasa arsitektur Mamba melalui paket mamba_ssm | generate_until , loglikelihood , loglikelihood_rolling |
Huggingface Optimum (LM Kausal) | ✔️ | openvino | AutoModelForCausalLM khusus dekoder apa pun yang dikonversi dengan Huggingface Optimum ke dalam format OpenVINO™ Intermediate Representation (IR) | generate_until , loglikelihood , loglikelihood_rolling |
Neuron melalui AWS Inf2 (LM Kausal) | ✔️ | neuronx | AutoModelForCausalLM khusus dekoder apa pun yang didukung untuk dijalankan pada gambar huggingface-ami untuk inferentia2 | generate_until , loglikelihood , loglikelihood_rolling |
Sihir Neural DeepSparse | ✔️ | deepsparse | LM apa pun dari SparseZoo atau di HF Hub dengan tag "deepsparse". | generate_until , loglikelihood |
Sparse Sihir NeuralML | ✔️ | sparseml | AutoModelForCausalLM khusus decoder dari SparseZoo atau di HF Hub. Sangat berguna untuk model dengan kuantisasi seperti zoo:llama2-7b-gsm8k_llama2_pretrain-pruned60_quantized | generate_until , loglikelihood , loglikelihood_rolling |
Server inferensi lokal Anda! | ✔️ | local-completions atau local-chat-completions | Dukungan untuk server yang kompatibel dengan OpenAI API, dengan penyesuaian yang mudah untuk API lainnya. | generate_until , loglikelihood , loglikelihood_rolling |
Model yang tidak menyediakan logit atau logprob dapat digunakan dengan tugas bertipe generate_until
saja, sedangkan model lokal, atau API yang menyediakan logprob/logit dari perintahnya, dapat dijalankan pada semua jenis tugas: generate_until
, loglikelihood
, loglikelihood_rolling
, dan multiple_choice
.
Untuk informasi selengkapnya tentang output_types
dan jenis permintaan model yang berbeda, lihat dokumentasi kami.
Catatan
Untuk performa terbaik dengan API model obrolan tertutup seperti Anthropic Claude 3 dan GPT-4, sebaiknya perhatikan dengan cermat beberapa contoh keluaran menggunakan --limit 10
terlebih dahulu untuk mengonfirmasi ekstraksi jawaban dan penilaian pada tugas generatif berjalan sesuai yang diharapkan. menyediakan system="<some system prompt here>"
dalam --model_args
untuk penyelesaian obrolan antropik, untuk menginstruksikan model dalam format apa untuk merespons, mungkin berguna.
Sejumlah perpustakaan lain berisi skrip untuk memanggil eval harness melalui perpustakaan mereka. Ini termasuk GPT-NeoX, Megatron-DeepSpeed, dan mesh-transformer-jax.
Untuk membuat integrasi kustom Anda sendiri, Anda dapat mengikuti petunjuk dari tutorial ini.
Catatan
Untuk tugas yang tidak cocok untuk evaluasi langsung — baik karena risiko yang terkait dengan pelaksanaan kode yang tidak tepercaya atau kompleksitas dalam proses evaluasi — tanda --predict_only
tersedia untuk mendapatkan generasi yang didekodekan untuk evaluasi post-hoc.
Jika Anda memiliki Mac yang kompatibel dengan Metal, Anda dapat menjalankan eval harness menggunakan back-end MPS dengan mengganti --device cuda:0
dengan --device mps
(memerlukan PyTorch versi 2.1 atau lebih tinggi). Perhatikan bahwa backend PyTorch MPS masih dalam tahap awal pengembangan, sehingga mungkin ada masalah kebenaran atau operasi yang tidak didukung. Jika Anda mengamati keanehan dalam performa model di back-end MPS, sebaiknya periksa terlebih dahulu apakah forward pass model Anda pada --device cpu
dan --device mps
cocok.
Catatan
Anda dapat memeriksa tampilan input LM dengan menjalankan perintah berikut:
python write_out.py
--tasks < task1,task2,... >
--num_fewshot 5
--num_examples 10
--output_base_path /path/to/output/folder
Ini akan menulis satu file teks untuk setiap tugas.
Untuk memverifikasi integritas data tugas yang Anda lakukan selain menjalankan tugas itu sendiri, Anda dapat menggunakan tanda --check_integrity
:
lm_eval --model openai
--model_args engine=davinci
--tasks lambada_openai,hellaswag
--check_integrity
Untuk model yang dimuat dengan pustaka transformers
HuggingFace, argumen apa pun yang diberikan melalui --model_args
diteruskan ke konstruktor yang relevan secara langsung. Artinya, apa pun yang dapat Anda lakukan dengan AutoModel
dapat dilakukan dengan perpustakaan kami. Misalnya, Anda dapat meneruskan jalur lokal melalui pretrained=
atau menggunakan model yang disempurnakan dengan PEFT dengan menerima panggilan yang akan Anda jalankan untuk mengevaluasi model dasar dan menambahkan ,peft=PATH
ke argumen model_args
:
lm_eval --model hf
--model_args pretrained=EleutherAI/gpt-j-6b,parallelize=True,load_in_4bit=True,peft=nomic-ai/gpt4all-j-lora
--tasks openbookqa,arc_easy,winogrande,hellaswag,arc_challenge,piqa,boolq
--device cuda:0
Model yang disediakan sebagai bobot delta dapat dengan mudah dimuat menggunakan pustaka transformator Hugging Face. Dalam --model_args, atur argumen delta untuk menentukan bobot delta, dan gunakan argumen yang telah dilatih sebelumnya untuk menentukan model dasar relatif yang akan diterapkan:
lm_eval --model hf
--model_args pretrained=Ejafa/llama_7B,delta=lmsys/vicuna-7b-delta-v1.1
--tasks hellaswag
Model terkuantisasi GPTQ dapat dimuat menggunakan GPTQModel (lebih cepat) atau AutoGPTQ
GPTQModel: tambahkan ,gptqmodel=True
ke model_args
lm_eval --model hf
--model_args pretrained=model-name-or-path,gptqmodel=True
--tasks hellaswag
AutoGPTQ: tambahkan ,autogptq=True
ke model_args
:
lm_eval --model hf
--model_args pretrained=model-name-or-path,autogptq=model.safetensors,gptq_use_triton=True
--tasks hellaswag
Kami mendukung wildcard dalam nama tugas, misalnya Anda dapat menjalankan semua tugas lambada yang diterjemahkan mesin melalui --task lambada_openai_mt_*
.
Untuk menyimpan hasil evaluasi, berikan --output_path
. Kami juga mendukung respons model logging dengan tanda --log_samples
untuk analisis post-hoc.
Selain itu, seseorang dapat menyediakan direktori dengan --use_cache
untuk menyimpan hasil proses sebelumnya. Hal ini memungkinkan Anda menghindari eksekusi berulang dari pasangan (model, tugas) yang sama untuk penilaian ulang.
Untuk memasukkan hasil dan sampel ke Hugging Face Hub, pertama-tama pastikan token akses dengan akses tulis diatur dalam variabel lingkungan HF_TOKEN
. Kemudian, gunakan tanda --hf_hub_log_args
untuk menentukan organisasi, nama repositori, visibilitas repositori, dan apakah akan mengirimkan hasil dan sampel ke Hub - contoh kumpulan data di HF Hub. Misalnya:
lm_eval --model hf
--model_args pretrained=model-name-or-path,autogptq=model.safetensors,gptq_use_triton=True
--tasks hellaswag
--log_samples
--output_path results
--hf_hub_log_args hub_results_org=EleutherAI,hub_repo_name=lm-eval-results,push_results_to_hub=True,push_samples_to_hub=True,public_repo=False
Hal ini memungkinkan Anda mengunduh hasil dan sampel dengan mudah dari Hub, menggunakan:
from datasets import load_dataset
load_dataset ( "EleutherAI/lm-eval-results-private" , "hellaswag" , "latest" )
Untuk daftar lengkap argumen yang didukung, lihat panduan antarmuka di dokumentasi kami!
Anda dapat dengan mudah memvisualisasikan dan menganalisis hasil rangkaian evaluasi Anda menggunakan Weights & Bias (W&B) dan Zeno.
Anda dapat menggunakan Zeno untuk memvisualisasikan hasil eval harness run Anda.
Pertama, kunjungi hub.zenoml.com untuk membuat akun dan mendapatkan kunci API di halaman akun Anda. Tambahkan kunci ini sebagai variabel lingkungan:
export ZENO_API_KEY=[your api key]
Anda juga harus menginstal paket tambahan lm_eval[zeno]
.
Untuk memvisualisasikan hasilnya, jalankan eval harness dengan flag log_samples
dan output_path
. Kami berharap output_path
berisi beberapa folder yang mewakili nama model individual. Dengan demikian, Anda dapat menjalankan evaluasi pada sejumlah tugas dan model dan mengunggah semua hasilnya sebagai proyek di Zeno.
lm_eval
--model hf
--model_args pretrained=EleutherAI/gpt-j-6B
--tasks hellaswag
--device cuda:0
--batch_size 8
--log_samples
--output_path output/gpt-j-6B
Kemudian, Anda dapat mengunggah data yang dihasilkan menggunakan skrip zeno_visualize
:
python scripts/zeno_visualize.py
--data_path output
--project_name " Eleuther Project "
Ini akan menggunakan semua subfolder di data_path
sebagai model berbeda dan mengunggah semua tugas dalam folder model ini ke Zeno. Jika Anda menjalankan eval harness pada beberapa tugas, project_name
akan digunakan sebagai awalan dan satu proyek akan dibuat per tugas.
Anda dapat menemukan contoh alur kerja ini di example/visualize-zeno.ipynb.
Dengan integrasi Bobot dan Bias, kini Anda dapat meluangkan lebih banyak waktu untuk menggali wawasan yang lebih mendalam tentang hasil evaluasi Anda. Integrasi ini dirancang untuk menyederhanakan proses pencatatan dan visualisasi hasil eksperimen menggunakan platform Weights & Biases (W&B).
Integrasi menyediakan fungsionalitas
results.json
sebagai artefak untuk kontrol versi,<task_name>_eval_samples.json
jika sampel dicatat, Pertama, Anda harus menginstal paket tambahan lm_eval[wandb] . Lakukan pip install lm_eval[wandb]
.
Otentikasi mesin Anda dengan token W&B unik Anda. Kunjungi https://wandb.ai/authorize untuk mendapatkannya. Lakukan wandb login
di terminal baris perintah Anda.
Jalankan eval harness seperti biasa dengan flag wandb_args
. Gunakan tanda ini untuk memberikan argumen untuk menginisialisasi proses Wandb (wandb.init) sebagai argumen string yang dipisahkan koma.
lm_eval
--model hf
--model_args pretrained=microsoft/phi-2,trust_remote_code=True
--tasks hellaswag,mmlu_abstract_algebra
--device cuda:0
--batch_size 8
--output_path output/phi-2
--limit 10
--wandb_args project=lm-eval-harness-integration
--log_samples
Di stdout, Anda akan menemukan link ke halaman eksekusi W&B serta link ke laporan yang dihasilkan. Anda dapat menemukan contoh alur kerja ini di example/visualize-wandb.ipynb, dan contoh cara mengintegrasikannya di luar CLI.
Untuk informasi lebih lanjut tentang perpustakaan dan bagaimana semuanya cocok, lihat semua halaman dokumentasi kami! Kami berencana untuk segera memposting peta jalan yang lebih besar mengenai perbaikan perpustakaan yang diinginkan + direncanakan, dengan informasi lebih lanjut tentang bagaimana kontributor dapat membantu.
Untuk menerapkan tugas baru di eval harness, lihat panduan ini.
Secara umum, kami mengikuti daftar prioritas berikut untuk mengatasi kekhawatiran mengenai dorongan dan rincian evaluasi lainnya:
Ini adalah pedoman dan bukan peraturan, dan dapat dibatalkan dalam keadaan khusus.
Kami mencoba untuk memprioritaskan persetujuan terhadap prosedur yang digunakan oleh kelompok lain untuk mengurangi dampak buruk ketika orang-orang mau tidak mau membandingkan dokumen yang berbeda meskipun kami tidak mendukung praktik tersebut. Secara historis, kami juga memprioritaskan penerapan Model Bahasa adalah Pembelajar yang Sedikit Ditembak karena tujuan awal kami adalah secara khusus membandingkan hasil dengan makalah tersebut.
Cara terbaik untuk mendapatkan dukungan adalah dengan membuka masalah di repo ini atau bergabung dengan server EleutherAI Discord. Saluran #lm-thunderdome
didedikasikan untuk mengembangkan proyek ini dan saluran #release-discussion
didedikasikan untuk menerima dukungan untuk rilis kami. Jika Anda pernah menggunakan perpustakaan dan mendapatkan pengalaman positif (atau negatif), kami ingin mendengar pendapat Anda!
Ketergantungan tambahan dapat diinstal melalui pip install -e ".[NAME]"
Nama | Menggunakan |
---|---|
api | Untuk menggunakan model api (Anthropic, OpenAI API) |
sangat jarang | Untuk menjalankan model DeepSparse NM |
dev | Untuk linting PR dan kontribusi |
gptq | Untuk memuat model dengan GPTQ |
hf_transfer | Untuk mempercepat download file HF Hub |
jika terjadi | Untuk menjalankan tugas IFEval |
neuronx | Untuk berjalan pada instans AWS inf2 |
mamba | Untuk memuat model Mamba SSM |
matematika | Untuk menjalankan pemeriksaan jawaban tugas matematika |
multibahasa | Untuk tokenizer multibahasa |
optimal | Untuk menjalankan model Intel OpenVINO |
sumber cepat | Untuk menggunakan perintah PromptSource |
potongan kalimat | Untuk menggunakan tokenizer kalimat |
sparseml | Untuk menggunakan model SparseML NM |
pengujian | Untuk menjalankan rangkaian pengujian perpustakaan |
vllm | Untuk memuat model dengan vLLM |
Zeno | Untuk memvisualisasikan hasil dengan Zeno |
--------------- | --------------------------------------- |
semua | Memuat semua tambahan (tidak disarankan) |
@misc{eval-harness,
author = {Gao, Leo and Tow, Jonathan and Abbasi, Baber and Biderman, Stella and Black, Sid and DiPofi, Anthony and Foster, Charles and Golding, Laurence and Hsu, Jeffrey and Le Noac'h, Alain and Li, Haonan and McDonell, Kyle and Muennighoff, Niklas and Ociepa, Chris and Phang, Jason and Reynolds, Laria and Schoelkopf, Hailey and Skowron, Aviya and Sutawika, Lintang and Tang, Eric and Thite, Anish and Wang, Ben and Wang, Kevin and Zou, Andy},
title = {A framework for few-shot language model evaluation},
month = 07,
year = 2024,
publisher = {Zenodo},
version = {v0.4.3},
doi = {10.5281/zenodo.12608602},
url = {https://zenodo.org/records/12608602}
}