电竞比分网-中国电竞赛事及体育赛事平台

分享

LLMs之benchmark之lm-evaluation-harness:lm-evaluation-harness(語(yǔ)言模型評(píng)估工具)的簡(jiǎn)介、安裝和使用方法、案例應(yīng)用之詳細(xì)攻略

 處女座的程序猿 2024-06-19 發(fā)布于上海

LLMs之benchmark之lm-evaluation-harness:lm-evaluation-harness(語(yǔ)言模型評(píng)估工具)的簡(jiǎn)介、安裝和使用方法、案例應(yīng)用之詳細(xì)攻略


lm-evaluation-harness的簡(jiǎn)介

2023年12月,lm-evaluation-harness項(xiàng)目提供了一個(gè)統(tǒng)一的框架,用于在大量不同的評(píng)估任務(wù)上測(cè)試生成型語(yǔ)言模型

Github地址https://github.com/EleutherAI/lm-evaluation-harness

1、功能特點(diǎn)

為L(zhǎng)LMs提供60多個(gè)標(biāo)準(zhǔn)學(xué)術(shù)基準(zhǔn)測(cè)試,包含數(shù)百個(gè)子任務(wù)和變體。
>> 支持通過(guò)transformers加載的模型(包括通過(guò)AutoGPTQ進(jìn)行量化)、GPT-NeoX和Megatron-DeepSpeed,具有靈活的無(wú)關(guān)標(biāo)記接口。
>> 支持使用vLLM進(jìn)行快速和內(nèi)存高效的推理。
>> 支持商業(yè)API,包括OpenAI和TextSynth。
>> 支持評(píng)估HuggingFace的PEFT庫(kù)中支持的適配器(如LoRA)。
>> 支持本地模型和基準(zhǔn)測(cè)試。
>> 使用公開(kāi)可用的提示進(jìn)行評(píng)估,確保論文之間的可重復(fù)性和可比性。
>> 輕松支持自定義提示和評(píng)估指標(biāo)。

語(yǔ)言模型評(píng)估工具是Hugging Face的Open LLM Leaderboard的后臺(tái),已在數(shù)百篇論文中使用,并被包括NVIDIA、Cohere、BigScience、BigCode、Nous Research和Mosaic ML在內(nèi)的幾十個(gè)組織內(nèi)部使用。

2、公告

lm-evaluation-harness的新版本v0.4.0已發(fā)布!

新更新和功能包括:
>> 內(nèi)部重構(gòu)
>> 基于配置的任務(wù)創(chuàng)建和配置
>> 更簡(jiǎn)單的外部定義任務(wù)配置YAML的導(dǎo)入和共享
>> 支持Jinja2提示設(shè)計(jì),方便修改提示+從Promptsource導(dǎo)入提示
>> 更高級(jí)的配置選項(xiàng),包括輸出后處理、答案提取、每個(gè)文檔的多個(gè)LM生成、可配置的少樣本設(shè)置等
>> 支持更快的新建模庫(kù),包括:更快的數(shù)據(jù)并行HF模型使用、vLLM支持、HuggingFace的MPS支持等
>> 日志記錄和可用性改進(jìn)
>> 新任務(wù)包括CoT BIG-Bench-Hard、Belebele、用戶定義的任務(wù)分組等
請(qǐng)查看我們更新的文檔頁(yè)面以獲取更多詳細(xì)信息。開(kāi)發(fā)將繼續(xù)在主分支上進(jìn)行,歡迎大家在GitHub上的問(wèn)題或PR中,或者在EleutherAI的Discord中反饋所需功能和改進(jìn)建議或提問(wèn)!

lm-evaluation-harness的安裝和使用方法

1、安裝

從GitHub倉(cāng)庫(kù)安裝lm-eval包,請(qǐng)運(yùn)行:

git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .

我們還提供了許多可選依賴項(xiàng)以擴(kuò)展功能。在本文件末尾有一個(gè)詳細(xì)的表格。

2、基本使用

用戶指南

提供了一個(gè)用戶指南,詳細(xì)列出了支持的所有參數(shù),可以在此處和終端中通過(guò)調(diào)用lm_eval -h查看。或者,可以使用lm-eval代替lm_eval。

可以使用lm-eval --tasks list查看支持的任務(wù)列表(或任務(wù)分組)。任務(wù)描述和相應(yīng)子文件夾的鏈接提供在這里。

Hugging Face transformers

要在HuggingFace Hub上評(píng)估托管的模型(如GPT-J-6B)上的hellaswag任務(wù),可以使用以下命令(假設(shè)你在使用兼容CUDA的GPU):

lm_eval --model hf     --model_args pretrained=EleutherAI/gpt-j-6B     --tasks hellaswag     --device cuda:0     --batch_size 8

可以使用--model_args標(biāo)志向模型構(gòu)造函數(shù)提供額外的參數(shù)。最值得注意的是,這支持在Hub上存儲(chǔ)部分訓(xùn)練檢查點(diǎn)的常見(jiàn)做法,或指定運(yùn)行模型的數(shù)據(jù)類型:

lm_eval --model hf     --model_args pretrained=EleutherAI/pythia-160m,revision=step100000,dtype="float"     --tasks lambada_openai,hellaswag     --device cuda:0     --batch_size 8

通過(guò)transformers.AutoModelForCausalLM(自回歸,僅解碼器的GPT樣式模型)和transformers.AutoModelForSeq2SeqLM(如T5等編碼器-解碼器模型)加載的模型均受支持。

通過(guò)將--batch_size標(biāo)志設(shè)置為auto,可以自動(dòng)選擇批處理大小。這將自動(dòng)檢測(cè)適合設(shè)備的最大批處理大小。在長(zhǎng)短示例差異較大的任務(wù)中,定期重新計(jì)算最大批處理大小以獲得進(jìn)一步的加速效果是有幫助的。為此,請(qǐng)?jiān)谏鲜鰳?biāo)志后附加:N,以自動(dòng)重新計(jì)算批處理大小N次。例如,要重新計(jì)算批處理大小4次,命令如下:

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

注意:就像你可以向transformers.AutoModel提供本地路徑一樣,你也可以通過(guò)--model_args向lm_eval提供本地路徑,方法是設(shè)置pretrained=/path/to/model

使用Hugging Face accelerate進(jìn)行多GPU評(píng)估

我們支持兩種主要方式使用Hugging Face的accelerate ��庫(kù)進(jìn)行多GPU評(píng)估。要執(zhí)行數(shù)據(jù)并行評(píng)估(每個(gè)GPU加載一個(gè)完整的模型副本),我們使用accelerate啟動(dòng)器如下:

accelerate launch -m lm_eval --model hf     --tasks lambada_openai,arc_easy     --batch_size 16

在模型可以放入單個(gè)GPU的情況下,這允許你在K個(gè)GPU上以K倍于單GPU的速度進(jìn)行評(píng)估。
警告:此設(shè)置不支持FSDP模型分片,因此在accelerate配置中必須禁用FSDP,或使用NO_ARD FSDP選項(xiàng)。

使用accelerate進(jìn)行多GPU評(píng)估的第二種方式是當(dāng)模型太大無(wú)法放入單個(gè)GPU時(shí)。

在這種情況下,在accelerate啟動(dòng)器外運(yùn)行庫(kù),但通過(guò)--model_args將parallelize=True傳遞,如下所示:

lm_eval --model hf     --tasks lambada_openai,arc_easy     --model_args parallelize=True     --batch_size 16

這意味著模型的權(quán)重將被分割到所有可用的GPU上。

對(duì)于更高級(jí)的用戶或更大的模型,當(dāng)parallelize=True時(shí),我們還允許以下參數(shù):
device_map_option:如何在可用的GPU上分配模型權(quán)重,默認(rèn)為"auto"。
max_memory_per_gpu:在加載模型時(shí)每個(gè)GPU使用的最大GPU內(nèi)存。
max_cpu_memory:在將模型權(quán)重卸載到RAM時(shí)使用的最大CPU內(nèi)存。
offload_folder:在需要時(shí)模型權(quán)重將卸載到磁盤的文件夾。
這兩種選項(xiàng)(accelerate launch和parallelize=True)是互斥的。

注意:我們目前不支持原生的多節(jié)點(diǎn)評(píng)估,建議使用外部托管的服務(wù)器運(yùn)行推理請(qǐng)求,或創(chuàng)建與分布式框架的自定義集成,如GPT-NeoX庫(kù)所做。

NVIDIA NeMo模型

NVIDIA NeMo Framework是一個(gè)為研究人員和使用PyTorch開(kāi)發(fā)語(yǔ)言模型的開(kāi)發(fā)人員設(shè)計(jì)的生成性AI框架。

要評(píng)估NeMo模型,請(qǐng)首先按照文檔安裝NeMo。我們強(qiáng)烈建議使用NVIDIA PyTorch或NeMo容器,特別是在安裝Apex或其他依賴項(xiàng)時(shí)遇到問(wèn)題時(shí)(請(qǐng)參閱最新發(fā)布的容器)。請(qǐng)按照安裝部分的說(shuō)明也安裝lm評(píng)估工具庫(kù)。

NeMo模型可以通過(guò)NVIDIA NGC Catalog或NVIDIA的Hugging Face頁(yè)面獲得。在NVIDIA NeMo框架中,有轉(zhuǎn)換腳本可以將流行模型(如Llama、Falcon、Mixtral或MPT)的hf檢查點(diǎn)轉(zhuǎn)換為NeMo。

在單GPU上運(yùn)行NeMo模型:

lm_eval --model nemo_lm     --model_args path=<path_to_nemo_model>     --tasks hellaswag     --batch_size 32

建議將NeMo模型解包以避免在Docker容器內(nèi)解包 - 這可能會(huì)導(dǎo)致磁盤空間溢出。為此,可以運(yùn)行:

mkdir MY_MODEL
tar -xvf MY_MODEL.nemo -c MY_MODEL
使用NVIDIA nemo模型進(jìn)行多GPU評(píng)估

默認(rèn)情況下,只使用一個(gè)GPU。但我們支持在一個(gè)節(jié)點(diǎn)上進(jìn)行評(píng)估時(shí),使用數(shù)據(jù)復(fù)制或張量/管道并行。

要啟用數(shù)據(jù)復(fù)制,請(qǐng)將devices的model_args設(shè)置為要運(yùn)行的數(shù)據(jù)副本數(shù)量。例如,運(yùn)行8個(gè)數(shù)據(jù)副本覆蓋8個(gè)GPU的命令如下:

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

要啟用張量和/或管道并行,請(qǐng)?jiān)O(shè)置tensor_model_parallel_size和/或pipeline_model_parallel_size的model_args。此外,還必須將devices設(shè)置為tensor_model_parallel_size和/或pipeline_model_parallel_size的乘積。例如,使用4個(gè)GPU的一個(gè)節(jié)點(diǎn),張量并行度為2,管道并行度為2的命令如下:

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

請(qǐng)注意,建議將python命令替換為torchrun --nproc-per-node=<設(shè)備數(shù)> --no-python,以便更輕松地將模型加載到GPU中。這對(duì)于加載到多個(gè)GPU的大型檢查點(diǎn)特別重要。

尚不支持的功能:多節(jié)點(diǎn)評(píng)估以及數(shù)據(jù)復(fù)制與張量或管道并行的組合。

Tensor + Data Parallel與vLLM的優(yōu)化推理

我們還支持vLLM,用于支持的模型類型進(jìn)行更快的推理,尤其是在多GPU上分割模型時(shí)更快。例如,單GPU或多GPU(張量并行、數(shù)據(jù)并行或兩者結(jié)合)推理的命令如下:

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

要使用vllm,請(qǐng)執(zhí)行pip install lm_eval[vllm]。有關(guān)支持的vLLM配置的完整列表,請(qǐng)參考我們的vLLM集成和vLLM文檔。

vLLM的輸出偶爾與Huggingface有所不同。我們將Huggingface視為參考實(shí)現(xiàn),并提供一個(gè)腳本來(lái)檢查vllm結(jié)果與HF的有效性。

提示:為了獲得最快的性能,請(qǐng)盡可能使用--batch_size auto,以利用其連續(xù)批處理功能!
提示:通過(guò)在模型參數(shù)args中傳遞max_model_len=4096或其他合理的默認(rèn)值到vLLM,可能會(huì)加快速度或防止嘗試使用自動(dòng)批量大小時(shí)出現(xiàn)內(nèi)存不足錯(cuò)誤,例如Mistral-7B-v0.1,默認(rèn)最大長(zhǎng)度為32k。

模型API和推理服務(wù)器

我們的庫(kù)還支持通過(guò)幾個(gè)商業(yè)API提供的模型進(jìn)行評(píng)估,并希望實(shí)現(xiàn)對(duì)最常用的性能良好的本地/自托管推理服務(wù)器的支持。

要調(diào)用托管模型,請(qǐng)使用:

export OPENAI_API_KEY=YOUR_KEY_HERE
lm_eval --model openai-completions     --model_args model=davinci     --tasks lambada_openai,hellaswag

我們還支持使用您自己的本地推理服務(wù)器,使用鏡像OpenAI Completions和ChatCompletions API的服務(wù)器。

lm_eval --model local-chat-completions --tasks gsm8k --model_args model=facebook/opt-125m,base_url=http://{yourip}:8000/v1

請(qǐng)注意,對(duì)于外部托管模型,不應(yīng)使用--device和--batch_size等配置,并且不起作用。就像您可以使用--model_args為本地模型的模型構(gòu)造函數(shù)傳遞任意參數(shù)一樣,您可以使用它為托管模型的API傳遞任意參數(shù)。有關(guān)他們支持的參數(shù)的信息,請(qǐng)參閱托管服務(wù)的文檔。

API or Inference ServerImplemented?--model <xxx>?nameModels supported:Request Types:
OpenAI Completions??openai-completions,?local-completionsAll OpenAI Completions API modelsgenerate_until,?loglikelihood,?loglikelihood_rolling
OpenAI ChatCompletions??openai-chat-completions,?local-chat-completionsAll ChatCompletions API modelsgenerate_until?(no logprobs)
Anthropic??anthropicSupported Anthropic Enginesgenerate_until?(no logprobs)
Anthropic Chat??anthropic-chat,?anthropic-chat-completionsSupported Anthropic Enginesgenerate_until?(no logprobs)
Textsynth??textsynthAll supported enginesgenerate_until,?loglikelihood,?loglikelihood_rolling
Cohere? - blocked on Cohere API bugN/AAll?cohere.generate()?enginesgenerate_until,?loglikelihood,?loglikelihood_rolling
Llama.cpp?(via?llama-cpp-python)??gguf,?ggmlAll models supported by llama.cppgenerate_until,?loglikelihood, (perplexity evaluation not yet implemented)
vLLM??vllmMost HF Causal Language Modelsgenerate_until,?loglikelihood,?loglikelihood_rolling
Mamba??mamba_ssmMamba architecture Language Models via the?mamba_ssm?packagegenerate_until,?loglikelihood,?loglikelihood_rolling
Huggingface Optimum (Causal LMs)??openvinoAny decoder-only AutoModelForCausalLM converted with Huggingface Optimum into OpenVINO? Intermediate Representation (IR) formatgenerate_until,?loglikelihood,?loglikelihood_rolling
Neuron via AWS Inf2 (Causal LMs)??neuronxAny decoder-only AutoModelForCausalLM supported to run on?huggingface-ami image for inferentia2generate_until,?loglikelihood,?loglikelihood_rolling
Neural Magic DeepSparse??deepsparseAny LM from?SparseZoo?or on?HF Hub with the "deepsparse" taggenerate_until,?loglikelihood
Neural Magic SparseML??sparsemlAny decoder-only AutoModelForCausalLM from?SparseZoo?or on?HF Hub. Especially useful for models with quantization like?zoo:llama2-7b-gsm8k_llama2_pretrain-pruned60_quantizedgenerate_until,?loglikelihood,?loglikelihood_rolling
Your local inference server!??local-completions?or?local-chat-completions?(using?openai-chat-completions?model type)Any server address that accepts GET requests using HF models and mirror's OpenAI's Completions or ChatCompletions interfacegenerate_until

不提供logits或logprobs的模型只能與類型為generate_until的任務(wù)一起使用,而本地模型或提供其提示的logits/logprobs的API可以在所有任務(wù)類型上運(yùn)行:generate_until、loglikelihood、loglikelihood_rolling和multiple_choice。

有關(guān)不同任務(wù)輸出類型和模型請(qǐng)求類型的更多信息,請(qǐng)參閱我們的文檔。

注意:對(duì)于閉環(huán)聊天模型API(如Anthropic Claude 3和GPT-4),我們建議首先仔細(xì)查看使用--limit 10的幾個(gè)樣本輸出,以確認(rèn)在生成任務(wù)上的答案提取和評(píng)分表現(xiàn)符合預(yù)期。對(duì)于anthropic-chat-completions,通過(guò)在--model_args中提供system="<some system prompt here>",指導(dǎo)模型如何響應(yīng)可能很有用。

其他框架

許多其他庫(kù)中都包含調(diào)用評(píng)估挑戰(zhàn)的腳本。這些包括GPT-NeoX、Megatron-DeepSpeed和mesh-transformer-jax。
要?jiǎng)?chuàng)建自己的自定義集成,可以按照此教程的說(shuō)明進(jìn)行操作。

附加功能

注意:對(duì)于不適合直接評(píng)估的任務(wù) —— 無(wú)論是由于執(zhí)行不受信任代碼的風(fēng)險(xiǎn)還是由于評(píng)估過(guò)程中的復(fù)雜性 —— 可以使用--predict_only標(biāo)志獲取解碼生成,以進(jìn)行事后評(píng)估。

如果您有兼容Metal的Mac,可以通過(guò)將--device cuda:0替換為--device mps(需要PyTorch版本2.1或更高版本)來(lái)運(yùn)行評(píng)估挑戰(zhàn)。請(qǐng)注意,PyTorch MPS后端仍處于早期開(kāi)發(fā)階段,因此可能存在正確性問(wèn)題或不支持的操作。如果您在MPS后端上觀察到模型性能異常,我們建議首先檢查在--device cpu和--device mps上的模型正向傳遞是否匹配。

注意,您可以通過(guò)運(yùn)行以下命令來(lái)查看LM輸入的樣子:

python write_out.py     --tasks <task1,task2,...>     --num_fewshot 5     --num_examples 10     --output_base_path /path/to/output/folder

這將為每個(gè)任務(wù)寫出一個(gè)文本文件。

要驗(yàn)證執(zhí)行任務(wù)本身之外的任務(wù)數(shù)據(jù)的完整性,可以使用--check_integrity標(biāo)志:

lm_eval --model openai     --model_args engine=davinci     --tasks lambada_openai,hellaswag     --check_integrity

3、高級(jí)使用技巧

對(duì)于使用HuggingFace transformers庫(kù)加載的模型,通過(guò)--model_args提供的任何參數(shù)將直接傳遞給相關(guān)的構(gòu)造函數(shù)。這意味著您可以像使用AutoModel一樣使用我們的庫(kù)。例如,您可以通過(guò)在model_args參數(shù)中添加local path通過(guò)pretrained=或使用PEFT微調(diào)的模型來(lái)運(yùn)行調(diào)用,如下所示:

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

使用Hugging Face transformers庫(kù)可以輕松加載提供為增量權(quán)重的模型。在--model_args中,設(shè)置delta參數(shù)以指定增量權(quán)重,并使用pretrained參數(shù)指定它們將應(yīng)用于的相對(duì)基本模型:

lm_eval --model hf     --model_args pretrained=Ejafa/llama_7B,delta=lmsys/vicuna-7b-delta-v1.1     --tasks hellaswag

GPTQ量化模型可以通過(guò)在model_args參數(shù)中指定文件名,使用autogptq=NAME(或autogptq=True以使用默認(rèn)名稱)加載:

lm_eval --model hf     --model_args pretrained=model-name-or-path,autogptq=model.safetensors,gptq_use_triton=True     --tasks hellaswag

我們支持任務(wù)名稱中的通配符,例如,您可以通過(guò)--task lambada_openai_mt_* 運(yùn)行所有機(jī)器翻譯的lambada任務(wù)。

4、保存結(jié)果

要保存評(píng)估結(jié)果,請(qǐng)?zhí)峁┮粋€(gè)--output_path。我們還支持使用--log_samples標(biāo)志記錄模型響應(yīng),以進(jìn)行事后分析。

此外,您可以通過(guò)--use_cache提供一個(gè)目錄,用于緩存先前運(yùn)行的結(jié)果。這樣可以避免重復(fù)執(zhí)行相同的(模型,任務(wù))對(duì)進(jìn)行重新評(píng)分。

要將結(jié)果和樣本推送到Hugging Face Hub,請(qǐng)首先確保在HF_TOKEN環(huán)境變量中設(shè)置了具有寫訪問(wèn)權(quán)限的訪問(wèn)令牌。然后,使用--hf_hub_log_args標(biāo)志指定組織、倉(cāng)庫(kù)名稱、倉(cāng)庫(kù)可見(jiàn)性以及是否將結(jié)果和樣本推送到Hub - 例如,HF Hub上的示例數(shù)據(jù)集。

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 \

這使您可以通過(guò)以下方式輕松從Hub下載結(jié)果和樣本:

from datasets import load_dataset

load_dataset("EleutherAI/lm-eval-results-private", "hellaswag", "latest")

有關(guān)支持的參數(shù)的完整列表,請(qǐng)查閱我們文檔中的接口指南!

5、可視化結(jié)果

您可以無(wú)縫地使用Weights & Biases(W&B)和Zeno分析和可視化評(píng)估挑戰(zhàn)運(yùn)行的結(jié)果。

Zeno

您可以使用Zeno來(lái)可視化評(píng)估挑戰(zhàn)運(yùn)行的結(jié)果。
首先,前往hub.zenoml.com創(chuàng)建帳戶并在您的帳戶頁(yè)面獲取API密鑰。將此密鑰添加為環(huán)境變量:

export ZENO_API_KEY=[your api key]

您還需要安裝額外的lm_eval[zeno]包。

要可視化結(jié)果,請(qǐng)使用log_samples和output_path標(biāo)志運(yùn)行評(píng)估挑戰(zhàn)。我們期望output_path包含代表各個(gè)模型名稱的多個(gè)文件夾。因此,您可以在任意數(shù)量的任務(wù)和模型上運(yùn)行評(píng)估,并將所有結(jié)果作為Zeno項(xiàng)目上傳。

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

然后,您可以使用zeno_visualize腳本上傳生成的數(shù)據(jù):

python scripts/zeno_visualize.py     --data_path output     --project_name "Eleuther Project"

這將使用data_path中的所有子文件夾作為不同的模型,并將這些模型文件夾中的所有任務(wù)上傳到Zeno。如果在多個(gè)任務(wù)上運(yùn)行評(píng)估挑戰(zhàn),則project_name將用作前綴,并將為每個(gè)任務(wù)創(chuàng)建一個(gè)項(xiàng)目。

您可以在examples/visualize-zeno.ipynb中找到此工作流程的示例。

Weights and Biases

通過(guò)Weights and Biases集成,您現(xiàn)在可以花更多時(shí)間提取對(duì)評(píng)估結(jié)果的深入見(jiàn)解。該集成旨在通過(guò)Weights & Biases(W&B)平臺(tái)簡(jiǎn)化記錄和可視化實(shí)驗(yàn)結(jié)果的流程。

集成提供以下功能:
>> 自動(dòng)記錄評(píng)估結(jié)果,
>> 將樣本記錄為W&B表格,便于可視化,
>> 將results.json文件記錄為版本控制的工件,
>> 如果記錄了樣本,則記錄<task_name>_eval_samples.json文件,
>> 生成包含所有重要指標(biāo)的全面報(bào)告進(jìn)行分析和可視化,
>> 記錄任務(wù)和CLI特定配置,
>> 以及更多類似于用于運(yùn)行評(píng)估的命令、GPU/CPU計(jì)數(shù)、時(shí)間戳等的開(kāi)箱即用功能。

首先,您需要安裝lm_eval[wandb]額外包。執(zhí)行pip install lm_eval[wandb]。使用您的唯一W&B令牌對(duì)計(jì)算機(jī)進(jìn)行身份驗(yàn)證。訪問(wèn)https:///authorize獲取令牌。在命令行終端中運(yùn)行wandb login。

像往常一樣使用wandb_args標(biāo)志運(yùn)行評(píng)估挑戰(zhàn)。使用此標(biāo)志提供參數(shù)以初始化wandb運(yùn)行(wandb.init)為逗號(hào)分隔的字符串參數(shù)。

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

在stdout中,您將找到指向W&B運(yùn)行頁(yè)面和生成報(bào)告的鏈接。您可以在examples/visualize-wandb.ipynb中找到此工作流程的示例,以及如何在CLI之外集成它的示例。

lm-evaluation-harness的案例應(yīng)用

持續(xù)更新中……

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多