최신 뉴스
hf-multimodal
및 vllm-vlm
모델 유형과 mmmu
작업을 프로토타입 기능으로 추가했습니다. . 우리는 사용자가 진행 중인 이 기능을 시험해 보고 스스로 스트레스 테스트를 해볼 것을 환영하며, 원래 lm-evaluation-harness에서 파생된 훌륭한 프로젝트인 lmms-eval
확인하여 더 넓은 범위의 다중 모드 작업을 수행할 것을 제안합니다. 모델 및 기능.local-completions
모델 유형을 사용하여 모델을 평가하는 것이 좋습니다.lm-evaluation-harness의 새로운 v0.4.0 릴리스가 출시되었습니다 !
새로운 업데이트 및 기능은 다음과 같습니다.
자세한 내용은 docs/
의 업데이트된 설명서 페이지를 참조하세요.
개발은 main
브랜치에서 계속될 예정이며, 원하는 기능과 라이브러리를 더욱 개선하는 방법에 대한 피드백을 제공하거나 GitHub의 이슈나 PR 또는 EleutherAI 디스코드에서 질문을 하시기 바랍니다!
이 프로젝트는 다양한 평가 작업에서 생성 언어 모델을 테스트하기 위한 통합 프레임워크를 제공합니다.
특징:
언어 모델 평가 하네스는 ? Hugging Face의 인기 있는 Open LLM Leaderboard는 수백 편의 논문에서 사용되었으며 NVIDIA, Cohere, BigScience, BigCode, Nous Research 및 mosaic ML을 포함한 수십 개의 조직에서 내부적으로 사용됩니다.
github 저장소에서 lm-eval
패키지를 설치하려면 다음을 실행하세요.
git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
또한 확장된 기능을 위해 다양한 선택적 종속성을 제공합니다. 이 문서의 끝부분에 자세한 표가 나와 있습니다.
지원되는 인수의 전체 목록을 자세히 설명하는 사용자 가이드는 여기와 터미널에서 lm_eval -h
호출하여 제공됩니다. 또는 lm_eval
대신 lm-eval
사용할 수도 있습니다.
지원되는 작업 목록(또는 작업 그룹)은 lm-eval --tasks list
사용하여 볼 수 있습니다. 여기에는 작업 설명과 해당 하위 폴더에 대한 링크가 제공됩니다.
transformers
hellaswag
의 HuggingFace Hub(예: GPT-J-6B)에 호스팅된 모델을 평가하려면 다음 명령을 사용할 수 있습니다(CUDA 호환 GPU를 사용한다고 가정).
lm_eval --model hf
--model_args pretrained=EleutherAI/gpt-j-6B
--tasks hellaswag
--device cuda:0
--batch_size 8
--model_args
플래그를 사용하여 모델 생성자에 추가 인수를 제공할 수 있습니다. 특히 이는 부분적으로 훈련된 체크포인트를 저장하거나 모델 실행을 위한 데이터 유형을 지정하기 위해 허브의 revisions
기능을 사용하는 일반적인 관행을 지원합니다.
lm_eval --model hf
--model_args pretrained=EleutherAI/pythia-160m,revision=step100000,dtype= " float "
--tasks lambada_openai,hellaswag
--device cuda:0
--batch_size 8
Huggingface의 transformers.AutoModelForCausalLM
(자동 회귀, 디코더 전용 GPT 스타일 모델) 및 transformers.AutoModelForSeq2SeqLM
(예: T5와 같은 인코더-디코더 모델)을 통해 로드되는 모델이 지원됩니다.
--batch_size
플래그를 auto
로 설정하면 배치 크기 선택을 자동화할 수 있습니다. 그러면 장치에 맞는 가장 큰 배치 크기가 자동으로 감지됩니다. 가장 긴 예제와 가장 짧은 예제 사이에 큰 차이가 있는 작업에서는 속도를 더 높이려면 가장 큰 배치 크기를 주기적으로 다시 계산하는 것이 도움이 될 수 있습니다. 이렇게 하려면 위 플래그에 :N
추가하여 가장 큰 배치 크기를 N
번 자동으로 다시 계산합니다. 예를 들어 배치 크기를 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
에 대한 로컬 경로를 제공할 수 있는 것처럼 --model_args pretrained=/path/to/model
통해 lm_eval
에 대한 로컬 경로를 제공할 수도 있습니다.
accelerate
사용한 다중 GPU 평가우리는 다중 GPU 평가를 위해 Hugging Face의 가속 라이브러리를 사용하는 세 가지 주요 방법을 지원합니다.
데이터 병렬 평가 (각 GPU가 모델의 별도의 전체 복사본을 로드하는 경우)를 수행하기 위해 다음과 같이 accelerate
실행 프로그램을 활용합니다.
accelerate launch -m lm_eval --model hf
--tasks lambada_openai,arc_easy
--batch_size 16
(또는 accelerate launch --no-python lm_eval
을 통해)
모델이 단일 GPU에 적합할 수 있는 경우 이를 통해 K GPU에서 하나보다 K배 빠르게 평가할 수 있습니다.
경고 : 이 설정은 FSDP 모델 샤딩에서는 작동하지 않으므로 accelerate config
에서는 FSDP를 비활성화하거나 NO_SHARD FSDP 옵션을 사용해야 합니다.
다중 GPU 평가에 accelerate
사용하는 두 번째 방법은 모델이 너무 커서 단일 GPU에 맞지 않는 경우입니다.
이 설정에서는 accelerate
실행기 외부에서 라이브러리를 실행하되 다음과 같이 --model_args
에 parallelize=True
전달합니다.
lm_eval --model hf
--tasks lambada_openai,arc_easy
--model_args parallelize=True
--batch_size 16
이는 모델의 가중치가 사용 가능한 모든 GPU에 걸쳐 분할됨을 의미합니다.
고급 사용자 또는 더 큰 규모의 모델의 경우, parallelize=True
일 때 다음 인수도 허용됩니다.
device_map_option
: 사용 가능한 GPU 전체에서 모델 가중치를 분할하는 방법입니다. 기본값은 "자동"입니다.max_memory_per_gpu
: 모델 로딩 시 GPU당 사용할 최대 GPU 메모리입니다.max_cpu_memory
: 모델 가중치를 RAM으로 오프로드할 때 사용할 최대 CPU 메모리 양입니다.offload_folder
: 필요한 경우 모델 가중치가 디스크로 오프로드되는 폴더입니다.세 번째 옵션은 두 가지를 동시에 사용하는 것입니다. 이를 통해 데이터 병렬성과 모델 샤딩을 모두 활용할 수 있으며, 단일 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
모델 병렬 처리 및 이를 accelerate
라이브러리와 함께 사용하는 방법에 대해 자세히 알아보려면 가속 문서를 참조하세요.
경고: 우리는 hf
모델 유형을 사용한 다중 노드 평가를 기본적으로 지원하지 않습니다! 사용자 정의 다중 시스템 평가 스크립트가 작성되는 코드 예는 GPT-NeoX 라이브러리 통합을 참조하세요.
참고: 현재는 다중 노드 평가를 기본적으로 지원하지 않으며 추론 요청을 실행하기 위해 외부 호스팅 서버를 사용하거나 GPT-NeoX 라이브러리에서 수행되는 것처럼 분산 프레임워크와 사용자 정의 통합을 생성하는 것이 좋습니다.
nemo
모델NVIDIA NeMo 프레임워크는 언어 모델을 연구하는 연구자와 파이토치 개발자를 위해 구축된 생성적 AI 프레임워크입니다.
nemo
모델을 평가하려면 먼저 설명서에 따라 NeMo를 설치하세요. 특히 Apex 또는 기타 종속성을 설치하는 데 문제가 있는 경우 NVIDIA PyTorch 또는 NeMo 컨테이너를 사용하는 것이 좋습니다(최신 릴리스 컨테이너 참조). 설치 섹션의 지침에 따라 lm 평가 하네스 라이브러리도 설치하세요.
NeMo 모델은 NVIDIA NGC 카탈로그 또는 NVIDIA의 Hugging Face 페이지를 통해 얻을 수 있습니다. NVIDIA NeMo 프레임워크에는 llama, falcon, mixtral 또는 mpt와 같은 인기 모델의 hf
체크포인트를 nemo
로 변환하는 변환 스크립트가 있습니다.
하나의 GPU에서 nemo
모델을 실행합니다.
lm_eval --model nemo_lm
--model_args path= < path_to_nemo_model >
--tasks hellaswag
--batch_size 32
도커 컨테이너 내부에서 압축을 풀지 않도록 nemo
모델의 압축을 풀 것을 권장합니다. 디스크 공간이 넘칠 수 있습니다. 이를 위해 다음을 실행할 수 있습니다.
mkdir MY_MODEL
tar -xvf MY_MODEL.nemo -c MY_MODEL
nemo
모델을 사용한 다중 GPU 평가기본적으로 하나의 GPU만 사용됩니다. 그러나 우리는 하나의 노드에서 평가 중에 데이터 복제 또는 텐서/파이프라인 병렬 처리를 지원합니다.
devices
의 model_args
실행할 데이터 복제본 수로 설정하세요. 예를 들어 8개의 GPU를 통해 8개의 데이터 복제본을 실행하는 명령은 다음과 같습니다. 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
tensor_model_parallel_size
및/또는 pipeline_model_parallel_size
의 model_args
설정하세요. 또한 tensor_model_parallel_size
및/또는 pipeline_model_parallel_size
의 곱과 동일하도록 devices
설정해야 합니다. 예를 들어, 텐서 병렬도가 2이고 파이프라인 병렬도가 2인 GPU 4개 중 하나의 노드를 사용하는 명령은 다음과 같습니다. 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
모델을 GPU에 쉽게 로드하려면 python
명령을 torchrun --nproc-per-node=<number of devices> --no-python
으로 대체하는 것이 좋습니다. 이는 여러 GPU에 로드된 대규모 체크포인트의 경우 특히 중요합니다.
아직 지원되지 않음: 다중 노드 평가 및 텐서 또는 파이프라인 병렬 처리와 데이터 복제의 조합.
vLLM
사용한 Tensor + 데이터 병렬 및 최적화 추론또한 지원되는 모델 유형에 대한 더 빠른 추론을 위해 vLLM을 지원합니다. 특히 여러 GPU에 걸쳐 모델을 분할할 때 더 빠르게 작동합니다. 단일 GPU 또는 다중 GPU(텐서 병렬, 데이터 병렬 또는 둘 모두의 조합)의 경우 추론은 다음과 같습니다.
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을 사용하려면 pip install lm_eval[vllm]
수행하십시오. 지원되는 vLLM 구성의 전체 목록을 보려면 vLLM 통합 및 vLLM 설명서를 참조하세요.
vLLM은 때때로 Huggingface의 출력과 다릅니다. 우리는 Huggingface를 참조 구현으로 취급하고 HF에 대한 vllm 결과의 유효성을 확인하기 위한 스크립트를 제공합니다.
팁
가장 빠른 성능을 위해 가능하면 vLLM에 대해 --batch_size auto
사용하여 지속적인 일괄 처리 기능을 활용하는 것이 좋습니다!
팁
모델 인수를 통해 max_model_len=4096
또는 기타 합리적인 기본값을 vLLM에 전달하면 자동 배치 크기를 사용하려고 할 때 속도가 향상되거나 메모리 부족 오류가 방지될 수 있습니다(예: Mistral-7B-v0.1의 경우 기본값은 최대 길이 32k.
우리 라이브러리는 또한 여러 상용 API를 통해 제공되는 모델의 평가를 지원하며 가장 일반적으로 사용되는 고성능 로컬/자체 호스팅 추론 서버에 대한 지원을 구현하기를 희망합니다.
호스팅 모델을 호출하려면 다음을 사용하세요.
export OPENAI_API_KEY=YOUR_KEY_HERE
lm_eval --model openai-completions
--model_args model=davinci
--tasks lambada_openai,hellaswag
또한 OpenAI Completions 및 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
외부 호스팅 모델의 경우 로컬 모델을 배치할 위치와 관련된 --device
와 같은 구성을 사용해서는 안 되며 작동하지도 않습니다. --model_args
사용하여 로컬 모델의 모델 생성자에 임의 인수를 전달할 수 있는 것처럼 이를 사용하여 호스팅 모델의 모델 API에 임의 인수를 전달할 수 있습니다. 지원하는 인수에 대한 자세한 내용은 호스팅 서비스 설명서를 참조하세요.
API 또는 추론 서버 | 구현되었나요? | --model <xxx> 이름 | 지원되는 모델: | 요청 유형: |
---|---|---|---|---|
OpenAI 완성 | ✔️ | openai-completions , local-completions | 모든 OpenAI Completions API 모델 | generate_until , loglikelihood , loglikelihood_rolling |
OpenAI Chat완료 | ✔️ | openai-chat-completions , local-chat-completions | 모든 ChatCompletions API 모델 | generate_until (logprob 없음) |
인류학 | ✔️ | anthropic | 지원되는 인류 엔진 | generate_until (logprob 없음) |
인류애 채팅 | ✔️ | anthropic-chat , anthropic-chat-completions | 지원되는 인류 엔진 | generate_until (logprob 없음) |
텍스트신스 | ✔️ | textsynth | 지원되는 모든 엔진 | generate_until , loglikelihood , loglikelihood_rolling |
코히어 | ⌛ - Cohere API 버그로 인해 차단됨 | 해당 없음 | 모든 cohere.generate() 엔진 | generate_until , loglikelihood , loglikelihood_rolling |
Llama.cpp(llama-cpp-python을 통해) | ✔️ | gguf , ggml | llama.cpp에서 지원되는 모든 모델 | generate_until , loglikelihood , (복잡성 평가는 아직 구현되지 않음) |
vLLM | ✔️ | vllm | 대부분의 HF 인과 언어 모델 | generate_until , loglikelihood , loglikelihood_rolling |
맘바 | ✔️ | mamba_ssm | mamba_ssm 패키지를 통한 Mamba 아키텍처 언어 모델 | generate_until , loglikelihood , loglikelihood_rolling |
허깅페이스 옵티멈(Causal LM) | ✔️ | openvino | Huggingface Optimum을 사용하여 OpenVINO™ IR(중간 표현) 형식으로 변환된 모든 디코더 전용 AutoModelForCausalLM | generate_until , loglikelihood , loglikelihood_rolling |
AWS Inf2(인과 LM)를 통한 뉴런 | ✔️ | neuronx | inferentia2에 대한 Huggingface-ami 이미지에서 실행되도록 지원되는 모든 디코더 전용 AutoModelForCausalLM | generate_until , loglikelihood , loglikelihood_rolling |
신경 매직 DeepSparse | ✔️ | deepsparse | SparseZoo 또는 "deepsparse" 태그가 있는 HF Hub의 모든 LM | generate_until , loglikelihood |
신경 매직 SparseML | ✔️ | sparseml | SparseZoo 또는 HF Hub의 모든 디코더 전용 AutoModelForCausalLM. zoo:llama2-7b-gsm8k_llama2_pretrain-pruned60_quantized 와 같은 양자화를 사용하는 모델에 특히 유용합니다. | generate_until , loglikelihood , loglikelihood_rolling |
로컬 추론 서버! | ✔️ | local-completions 또는 local-chat-completions | OpenAI API 호환 서버를 지원하며 다른 API에 대한 손쉬운 사용자 정의가 가능합니다. | generate_until , loglikelihood , loglikelihood_rolling |
logits 또는 logprobs를 제공하지 않는 모델은 generate_until
유형의 작업에서만 사용할 수 있는 반면, 프롬프트의 logprobs/logits를 제공하는 로컬 모델 또는 API는 모든 작업 유형( generate_until
, loglikelihood
, loglikelihood_rolling
및 multiple_choice
에서 실행할 수 있습니다.
다양한 작업 output_types
및 모델 요청 유형에 대한 자세한 내용은 설명서를 참조하세요.
메모
Anthropic Claude 3 및 GPT-4와 같은 비공개 채팅 모델 API에서 최상의 성능을 얻으려면 먼저 --limit 10
사용하여 몇 가지 샘플 출력을 주의 깊게 살펴보고 생성 작업에 대한 답변 추출 및 채점이 예상대로 수행되는지 확인하는 것이 좋습니다. anthropic-chat-completions에 대해 --model_args
내에 system="<some system prompt here>"
제공하여 응답할 형식을 모델에 지시하는 것이 유용할 수 있습니다.
다른 여러 라이브러리에는 해당 라이브러리를 통해 평가 하네스를 호출하기 위한 스크립트가 포함되어 있습니다. 여기에는 GPT-NeoX, Megatron-DeepSpeed 및 mesh-transformer-jax가 포함됩니다.
자신만의 사용자 지정 통합을 만들려면 이 튜토리얼의 지침을 따르세요.
메모
직접 평가에 부적합한 작업(신뢰할 수 없는 코드 실행과 관련된 위험 또는 평가 프로세스의 복잡성)의 경우 --predict_only
플래그를 사용하여 사후 평가를 위한 디코딩된 생성을 얻을 수 있습니다.
Metal 호환 Mac이 있는 경우 --device cuda:0
--device mps
로 대체하여 MPS 백엔드를 사용하여 평가 하네스를 실행할 수 있습니다(PyTorch 버전 2.1 이상 필요). PyTorch MPS 백엔드는 아직 개발 초기 단계이므로 정확성 문제나 지원되지 않는 작업이 존재할 수 있습니다. MPS 백엔드의 모델 성능에서 이상한 점이 발견되면 먼저 --device cpu
및 --device mps
에서 모델의 정방향 전달이 일치하는지 확인하는 것이 좋습니다.
메모
다음 명령을 실행하여 LM 입력의 모양을 검사할 수 있습니다.
python write_out.py
--tasks < task1,task2,... >
--num_fewshot 5
--num_examples 10
--output_base_path /path/to/output/folder
그러면 각 작업에 대해 하나의 텍스트 파일이 작성됩니다.
작업 자체를 실행하는 것 외에도 수행 중인 작업의 데이터 무결성을 확인하려면 --check_integrity
플래그를 사용할 수 있습니다.
lm_eval --model openai
--model_args engine=davinci
--tasks lambada_openai,hellaswag
--check_integrity
HuggingFace transformers
라이브러리와 함께 로드된 모델의 경우 --model_args
통해 제공된 모든 인수는 관련 생성자에 직접 전달됩니다. 이는 AutoModel
로 할 수 있는 모든 작업이 우리 라이브러리에서도 가능하다는 것을 의미합니다. 예를 들어 pretrained=
통해 로컬 경로를 전달하거나 기본 모델을 평가하고 model_args
인수에 ,peft=PATH
추가하기 위해 실행할 호출을 사용하여 PEFT로 미세 조정된 모델을 사용할 수 있습니다.
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 변환기 라이브러리를 사용하여 쉽게 로드할 수 있습니다. --model_args 내에서 델타 인수를 설정하여 델타 가중치를 지정하고 사전 학습된 인수를 사용하여 적용할 상대 기본 모델을 지정합니다.
lm_eval --model hf
--model_args pretrained=Ejafa/llama_7B,delta=lmsys/vicuna-7b-delta-v1.1
--tasks hellaswag
GPTQ 양자화 모델은 GPTQModel(더 빠름) 또는 AutoGPTQ를 사용하여 로드할 수 있습니다.
GPTQModel: model_args
에 ,gptqmodel=True
추가합니다.
lm_eval --model hf
--model_args pretrained=model-name-or-path,gptqmodel=True
--tasks hellaswag
AutoGPTQ: model_args
에 ,autogptq=True
추가:
lm_eval --model hf
--model_args pretrained=model-name-or-path,autogptq=model.safetensors,gptq_use_triton=True
--tasks hellaswag
작업 이름에 와일드카드를 지원합니다. 예를 들어 --task lambada_openai_mt_*
를 통해 기계 번역된 모든 람바다 작업을 실행할 수 있습니다.
평가 결과를 저장하려면 --output_path
를 제공하세요. 또한 사후 분석을 위해 --log_samples
플래그를 사용하여 로깅 모델 응답을 지원합니다.
또한 --use_cache
를 사용하여 디렉토리를 제공하여 이전 실행 결과를 캐시할 수 있습니다. 이를 통해 점수를 다시 매기기 위해 동일한(모델, 작업) 쌍을 반복적으로 실행하는 것을 방지할 수 있습니다.
Hugging Face Hub에 결과와 샘플을 푸시하려면 먼저 쓰기 권한이 있는 액세스 토큰이 HF_TOKEN
환경 변수에 설정되어 있는지 확인하세요. 그런 다음 --hf_hub_log_args
플래그를 사용하여 조직, 저장소 이름, 저장소 가시성, 결과 및 샘플을 HF Hub의 예시 데이터세트인 Hub에 푸시할지 여부를 지정합니다. 예를 들어:
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
이를 통해 다음을 사용하여 허브에서 결과와 샘플을 쉽게 다운로드할 수 있습니다.
from datasets import load_dataset
load_dataset ( "EleutherAI/lm-eval-results-private" , "hellaswag" , "latest" )
지원되는 인수의 전체 목록을 보려면 설명서의 인터페이스 가이드를 확인하세요!
W&B(Weights & Biases)와 Zeno를 모두 사용하여 평가 하네스 실행 결과를 원활하게 시각화하고 분석할 수 있습니다.
Zeno를 사용하여 평가 하네스 실행 결과를 시각화할 수 있습니다.
먼저, Hub.zenoml.com으로 이동하여 계정을 생성하고 계정 페이지에서 API 키를 받으세요. 이 키를 환경 변수로 추가합니다.
export ZENO_API_KEY=[your api key]
또한 lm_eval[zeno]
패키지를 추가로 설치해야 합니다.
결과를 시각화하려면 log_samples
및 output_path
플래그를 사용하여 평가 하네스를 실행하세요. output_path
개별 모델 이름을 나타내는 여러 폴더가 포함될 것으로 예상됩니다. 따라서 원하는 수의 작업과 모델에 대해 평가를 실행하고 모든 결과를 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
그런 다음 zeno_visualize
스크립트를 사용하여 결과 데이터를 업로드할 수 있습니다.
python scripts/zeno_visualize.py
--data_path output
--project_name " Eleuther Project "
이는 data_path
의 모든 하위 폴더를 다른 모델로 사용하고 이러한 모델 폴더 내의 모든 작업을 Zeno에 업로드합니다. 여러 작업에서 평가 하네스를 실행하는 경우 project_name
이 접두사로 사용되고 작업당 하나의 프로젝트가 생성됩니다.
example/visualize-zeno.ipynb에서 이 워크플로의 예를 찾을 수 있습니다.
가중치 및 편향 통합을 통해 이제 평가 결과에 대한 더 깊은 통찰력을 추출하는 데 더 많은 시간을 할애할 수 있습니다. 통합은 W&B(Weights & Biases) 플랫폼을 사용하여 실험 결과를 기록하고 시각화하는 프로세스를 간소화하도록 설계되었습니다.
통합은 기능을 제공합니다
results.json
파일을 버전 제어를 위한 아티팩트로 기록합니다.<task_name>_eval_samples.json
파일을 기록하고, 먼저 lm_eval[wandb] 패키지를 추가로 설치해야 합니다. pip install lm_eval[wandb]
수행하십시오.
고유한 W&B 토큰으로 컴퓨터를 인증하세요. https://wandb.ai/authorize를 방문하여 얻으세요. 명령줄 터미널에서 wandb login
수행하세요.
wandb_args
플래그를 사용하여 평소대로 평가 하네스를 실행합니다. 이 플래그를 사용하여 wandb 실행(wandb.init)을 초기화하기 위한 인수를 쉼표로 구분된 문자열 인수로 제공합니다.
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 실행 페이지에 대한 링크와 생성된 보고서에 대한 링크를 찾을 수 있습니다. example/visualize-wandb.ipynb에서 이 워크플로의 예와 이를 CLI 이상으로 통합하는 방법의 예를 찾을 수 있습니다.
라이브러리에 대한 자세한 내용과 모든 것이 어떻게 조화를 이루는지 알아보려면 모든 문서 페이지를 확인하세요! 우리는 기여자가 어떻게 도울 수 있는지에 대한 자세한 정보와 함께 원하는 라이브러리 개선 계획에 대한 더 큰 로드맵을 곧 게시할 계획입니다.
평가 하네스에서 새 작업을 구현하려면 이 가이드를 참조하세요.
일반적으로 우리는 프롬프트 및 기타 평가 세부 사항에 대한 우려 사항을 해결하기 위해 다음 우선 순위 목록을 따릅니다.
이는 규칙이 아닌 지침이며 특별한 상황에서는 무시될 수 있습니다.
우리는 관행을 방해함에도 불구하고 사람들이 필연적으로 다른 논문의 실행을 비교할 때 피해를 줄이기 위해 다른 그룹에서 사용하는 절차와의 합의를 우선시하려고 노력합니다. 역사적으로 우리의 원래 목표는 특히 결과를 해당 논문과 비교하는 것이었기 때문에 Language Models is Few Shot Learners의 구현을 우선시했습니다.
지원을 받는 가장 좋은 방법은 이 저장소에서 문제를 열거나 EleutherAI Discord 서버에 가입하는 것입니다. #lm-thunderdome
채널은 이 프로젝트 개발에 전념하고 #release-discussion
채널은 릴리스에 대한 지원을 받기 위한 것입니다. 도서관을 이용하시고 긍정적인(또는 부정적인) 경험을 하신 경우, 귀하의 의견을 듣고 싶습니다!
추가 종속성은 pip install -e ".[NAME]"
통해 설치할 수 있습니다.
이름 | 사용 |
---|---|
API | API 모델 사용용(Anthropic, OpenAI API) |
깊은 스파스 | NM의 DeepSparse 모델 실행용 |
개발자 | Linting PR 및 기여를 위해 |
gptq | GPTQ를 사용하여 모델을 로드하는 경우 |
hf_transfer | HF Hub 파일 다운로드 속도를 높이기 위해 |
ifeval | IFEval 작업을 실행하는 경우 |
신경세포 | AWS inf2 인스턴스에서 실행하는 경우 |
맘바 | Mamba SSM 모델 로딩용 |
수학 | 수학 과제 답안 확인을 실행하는 경우 |
다국어 | 다국어 토크나이저의 경우 |
최적 | Intel OpenVINO 모델 실행용 |
프롬프트소스 | PromptSource 프롬프트를 사용하는 경우 |
문장 | 문장 조각 토크나이저를 사용하는 경우 |
sparseml | NM의 SparseML 모델을 사용하는 경우 |
테스트 | 라이브러리 테스트 스위트 실행용 |
vllm | vLLM을 사용하여 모델을 로드하는 경우 |
제노 | Zeno를 사용한 결과 시각화 |
--------------- | -------------------------- |
모두 | 모든 추가 항목을 로드합니다(권장하지 않음) |
@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}
}