跳转到主要内容

轻量级且可配置的评估包

项目描述

Tests Quality Python versions License Status Version

LightEval 🌤️

一个用于LLM评估的轻量级框架

上下文

LightEval是一个轻量级LLM评估套件,Hugging Face一直在使用它,最近发布的LLM数据处理库datatrove和LLM训练库nanotron

我们本着在公开环境中构建的精神,与社区一同发布。

请注意,目前还处于非常早期的阶段,所以不要期望100%的稳定性 ^.^' 如果有问题或疑问,请随时创建一个issue!

安装

克隆仓库

git clone https://github.com/huggingface/lighteval.git
cd lighteval

根据您的喜好使用virtualenv或conda创建虚拟环境。我们要求Python 3.10或更高版本

conda create -n lighteval python=3.10 && conda activate lighteval

安装依赖项。对于默认安装,您只需要

pip install .

如果您想使用acceleratepeft等框架评估模型,您需要指定适合您用例的可选依赖组(acceleratetgioptimumquantizationadaptersnanotrontensorboardX

pip install '.[optional1,optional2]'

测试最多的是以下设置

pip install '.[accelerate,quantization,adapters]'

如果您想将结果推送到Hugging Face Hub,别忘了将您的访问令牌添加到环境变量HF_TOKEN中。您可以通过运行以下命令来完成此操作:

huggingface-cli login

并将您的访问令牌粘贴进去。

可选步骤

  • 要加载和推送大型模型/数据集,您的机器可能需要Git LFS。您可以使用以下命令安装它:sudo apt-get install git-lfs
  • 如果您想运行bigbench评估,请安装bigbench pip install "bigbench@https://storage.googleapis.com/public_research_data/bigbench/bigbench-0.0.1.tar.gz"

最后,如果您打算推送代码库,您需要安装用于样式测试的precommit钩子

pip install .[dev]
pre-commit install

用法

我们提供了两个主要的入口点来评估模型

  • lighteval accelerate:使用🤗 Accelerate在CPU或一个或多个GPU上评估模型。
  • lighteval nanotron:使用⚡️ Nanotron在分布式环境中评估模型。

对于大多数用户,我们推荐使用🤗 Accelerate后端 - 具体命令请见下文。

在单个或多个GPU上评估模型(推荐)

要在一个或多个GPU上评估模型,首先通过运行以下命令创建一个multi-gpu配置

accelerate config

然后您可以使用数据并行性来评估模型,如下所示

accelerate launch --multi_gpu --num_processes=<num_gpus> -m \
    lighteval accelerate \
    --model_args="pretrained=<path to model on the hub>" \
    --tasks <task parameters> \
    --output_dir output_dir

这里,--tasks是指来自tasks_list文件实现中支持的tasks_list的逗号分隔列表,格式如下:Tasks的详细信息也可以在实现它们的文件中找到。

suite|task|num_few_shot|{0 or 1 to automatically reduce `num_few_shot` if prompt is too long}

或者一个文件路径,如examples/tasks/recommended_set.txt,它指定多个任务配置。例如,要评估GPT-2在Truthful QA基准上,请运行以下命令:

accelerate launch --multi_gpu --num_processes=8 -m \
    lighteval accelerate \
    --model_args "pretrained=gpt2" \
    --tasks "leaderboard|truthfulqa:mc|0|0" \
    --override_batch_size 1 \
    --output_dir="./evals/"

这里,--override_batch_size定义了每个设备的批次大小,因此有效批次大小将是override_batch_size x num_gpus。要评估多个基准,用逗号分隔每个任务配置,例如:

accelerate launch --multi_gpu --num_processes=8 -m \
    lighteval accelerate \
    --model_args "pretrained=gpt2" \
    --tasks "leaderboard|truthfulqa:mc|0|0,leaderboard|gsm8k|0|0" \
    --override_batch_size 1 \
    --output_dir="./evals/"

有关推荐任务配置的列表,请参阅examples/tasks/recommended_set.txt文件。

评估具有复杂配置的模型

如果您想通过启动推理端点、使用适配器/增量权重或更复杂的配置选项来评估模型,您可以使用配置文件来加载模型。操作方法如下:

accelerate launch --multi_gpu --num_processes=<num_gpus> -m \
    lighteval accelerate \
    --model_config_path="<path to your model configuration>" \
    --tasks <task parameters> \
    --output_dir output_dir

您可以在examples/model_configs/base_model.yaml_中找到预期模型配置的模板。

评估量化模型

如果您想通过量化来评估模型,那么模型可以以4bit8bit加载。隐式地,这使用了BitsAndBytesConfig,并且可以显著降低消费级硬件的内存需求。

一个示例配置可以在examples/model_configs/quantized_model.yaml中找到。

评估PEFT模型

如果您想评估使用peft训练的模型,请查看examples/model_configs/peft_model.yaml

目前,lighteval支持将adapterdelta权重应用到基础模型上。

使用管道并行性评估大型模型

为了评估超过40亿参数的模型,并使用16位精度,您需要将模型跨多个GPU进行分片以适应VRAM。您可以通过传递model_parallel=True并调整--num_processes为要使用的进程数来实现这一点。例如,在单个节点上使用8个GPU,您可以运行:

# PP=2, DP=4 - good for models < 70B params
accelerate launch --multi_gpu --num_processes=4 -m \
    lighteval accelerate \
    --model_args="pretrained=<path to model on the hub>,model_parallel=True" \
    --tasks <task parameters> \
    --output_dir output_dir

# PP=4, DP=2 - good for huge models >= 70B params
accelerate launch --multi_gpu --num_processes=2 -m \
    lighteval accelerate \
    --model_args="pretrained=<path to model on the hub>,model_parallel=True" \
    --tasks <task parameters> \
    --output_dir output_dir

在Open LLM Leaderboard基准上评估模型

要使用单个节点的8个GPU在Open LLM Leaderboard的所有基准上评估模型,请运行:

accelerate launch --multi_gpu --num_processes=8 -m \
    lighteval accelerate \
    --model_args "pretrained=<model name>" \
    --tasks examples/tasks/open_llm_leaderboard_tasks.txt \
    --override_batch_size 1 \
    --output_dir="./evals/"

在CPU上评估模型

您还可以使用lighteval在CPU上评估模型,尽管请注意这通常对大型模型来说非常慢。要这样做,请运行:

lighteval accelerate \
    --model_args="pretrained=<path to model on the hub>"\
    --tasks <task parameters> \
    --output_dir output_dir

在服务器/容器上评估模型。

除了本地启动评估之外,您还可以在TGI兼容的服务器/容器上托管模型,然后通过向服务器发送请求来运行评估。命令与之前相同,只是您需要指定yaml配置文件的路径(下面将详细介绍)

lighteval accelerate \
    --model_config_path="/path/to/config/file"\
    --tasks <task parameters> \
    --output_dir output_dir

可以为在服务器上运行提供两种类型的配置文件

  1. endpoint_model.yaml:此配置允许您使用HuggingFace的推理端点启动模型。您可以在配置文件中指定所有相关参数,然后lighteval将自动部署端点、运行评估,并最终删除端点(除非您指定了一个已启动的端点,在这种情况下端点不会在之后被删除)。

  2. tgi_model.yaml:此配置允许您指定运行在TGI容器中的模型的URL,例如部署在HuggingFace无服务器推理上的模型。

这些配置的模板可以在examples/model_configs中找到。

在扩展、社区或自定义任务上评估模型。

除了在lighteval中提供的默认任务外,您还可以使用lighteval评估需要特殊处理(或由社区添加)的任务。这些任务有自己的评估套件,定义如下:

  • extended:由lighteval维护者添加的具有复杂的前处理或后处理的任务。请参阅extended文件夹中的示例。
  • community:由社区添加的任务。请参阅community_tasks文件夹中的示例。
  • custom:在本地定义且不在核心库中的任务。如果您想尝试设计特殊的指标或任务,请使用此套件。

例如,要运行像ifeval这样的扩展任务,您可以运行:

lighteval accelerate \
    --model_args "pretrained=HuggingFaceH4/zephyr-7b-beta" \
    --use_chat_template \ # optional, if you want to run the evaluation with the chat template
    --tasks "extended|ifeval|0|0" \
    --output_dir "./evals"

要运行社区或自定义任务,您可以使用(注意自定义任务标志):

lighteval accelerate \
    --model_args="pretrained=<path to model on the hub>"\
    --tasks <task parameters> \
    --custom_tasks <path to your custom or community task> \
    --output_dir output_dir

例如,要为HuggingFaceH4/zephyr-7b-betaarabic_mmlu:abstract_algebra上启动lighteval,请运行:

lighteval accelerate \
    --model_args "pretrained=HuggingFaceH4/zephyr-7b-beta,trust_remote_code=True" \
    --use_chat_template \ # optional, if you want to run the evaluation with the chat template
    --tasks "community|arabic_mmlu:abstract_algebra|5|1" \
    --custom_tasks "community_tasks/arabic_evals.py" \
    --output_dir "./evals"

使用虚拟模型

为了调试或获取给定任务集的随机基线分数,您可以使用dummy模型

lighteval accelerate \
    --model_args "dummy"\
    --tasks <task parameters> \
    --output_dir output_dir

此“模型”随机生成logprobs(用于选择/准确度任务)和字符串“random baseline”用于生成任务。您还可以选择虚拟模型生成的随机logprob值的具体种子:--model_args "dummy,seed=123"

深深的感谢

lighteval最初是在伟大的Eleuther AI Harness之上构建的(我们使用后者来驱动Open LLM Leaderboard)。我们还从惊人的HELM那里获得了许多灵感,特别是在指标方面。

通过不断增加日志功能,使其与越来越多的工作流程和模型代码库(包括3D并行性)兼容,并允许自定义评估实验、指标和基准,我们最终不得不越来越深入地更改代码,直到lighteval成为现在这个小型的独立库。

然而,我们非常感谢Harness和HELM团队在改进评估方面持续的工作。

如何导航此项目

lighteval应该用作独立的评估库。

  • 要运行评估,您可以使用lighteval acceleratelighteval nanotron
  • src/lighteval包含库的核心部分
    • lighteval包含库的核心部分,分为以下几部分
      • main_accelerate.pymain_nanotron.py是我们运行评估的入口点
      • logging:我们的日志记录器,用于显示实验信息并在运行后将信息推送到hub
      • metrics:所有可用的指标。它们在指标部分有描述,分为样本指标(在样本级别应用,例如预测精度)和语料库指标(在整个语料库上应用)。您还将找到可用的归一化函数。
      • models:可能使用的模型。我们包括transformers(base_model),具有适配器或delta权重,以及本地部署的TGI模型(这里的代码可能已经过时),以及brrr/nanotron模型。
      • tasks:可用的任务。完整的列表在default_tasks.py中,您将在tasks_prompt_formatting.py中找到所有提示。一些需要自定义逻辑的流行任务被特别添加到扩展任务中。
  • examples/tasks包含您可以启动的可用的任务列表。我们建议使用recommended_set中的任务,因为其他一些任务可能需要再次检查。
  • tests包含我们的测试套件,我们会在每个PR上运行它,以防止指标/提示/任务的回归,针对一组重要的任务。

自定义

如果您的新的任务或指标有要求,请添加一个特定的requirements.txt文件,与您的评估一起。

添加新任务

要添加新任务,首先要么打开一个问题,以确定它是否将被集成到lighteval的核心评估、扩展任务或社区任务中,并在hub上添加其数据集

  • 核心评估是只需要在它们的指标和处理中标准逻辑的评估,我们将将其添加到我们的测试套件中,以确保随着时间的推移不发生回归。它们已经在社区中看到很高的使用率。
  • 扩展评估是需要在其指标中自定义逻辑的评估(复杂的归一化、一个LLM作为裁判等),我们添加了它们,以使用户的生活更方便。它们已经在社区中看到很高的使用率。
  • 社区评估是社区提交的新任务。

随着时间的推移,流行的社区评估可以转变为扩展或核心评估。

核心评估

提示函数:在 src.lighteval.tasks.task_prompt_formatting.py 中查找合适的提示函数,或自行编写。此函数必须输出一个 Doc 对象,该对象应包含 query、您的提示,以及 gold(黄金输出)或 choicesgold_index(选项列表和正确答案的索引或索引列表)。如果您的查询中包含不应在几轮设置中重复的指令,请将其添加到 instruction 字段。

摘要:在 src/lighteval/tasks/default_tasks.py 中创建您的评估的 LightevalTaskConfig 摘要。此摘要应包含以下字段

  • name(字符串),您的评估名称
  • suite(列表),您的评估应属于的套件。此字段允许我们比较不同的任务实现,并用于区分要启动的版本。目前,您会找到以下关键词 ["helm", "bigbench", "original", "lighteval", "community", "custom"];对于核心评估,请选择 lighteval
  • prompt_function(可调用),您在上一步中定义的提示函数
  • hf_repo(字符串),您的评估数据集在 hub 上的路径
  • hf_subset(字符串),您想用于评估的特定子集(注意:当数据集没有子集时,请用 "default" 填充此字段,而不是 None""
  • hf_avail_splits(列表),您的数据集可用的所有拆分(训练、有效或验证、测试、其他...)
  • evaluation_splits(列表),您想用于评估的拆分
  • few_shots_split(字符串,可以是 null),您想从其中选择样本用于您的几轮示例的具体拆分。它应与包含在 evaluation_splits 中的集合不同
  • few_shots_select(字符串,可以是 null),您将用于选择几轮示例项的方法。可以是 null,或以下之一
    • balancedfew_shots_split 中选择带有平衡标签的示例,以避免使几轮示例(从而模型生成)偏向特定标签
    • randomfew_shots_split 中随机选择示例
    • random_sampling 每个新项目从 few_shots_split 中随机选择新示例,但如果采样项等于当前项,则将其从可用样本中删除
    • random_sampling_from_train 每个新项目从 few_shots_split 中随机选择新示例,但如果采样项等于当前项,则保留!仅在您知道自己在做什么的情况下使用此选项。 sequential 选择 few_shots_split 的前 n 个示例
  • generation_size(整数),生成评估允许的最大令牌数。如果您的评估是似然评估(多选),则此值应为 -1
  • stop_sequence(列表),用作生成结束标记的字符串列表
  • metric(列表),您想用于评估的指标(请参阅下一节以获取详细说明)
  • output_regex(字符串),将用于过滤生成的正则表达式字符串。(生成指标将只选择由正则表达式匹配的第一和第二个序列之间的令牌。例如,对于匹配 \n 的正则表达式和生成 \n模型生成输出\n其他文本,指标将只提供 模型生成输出
  • frozen(布尔值),目前设置为 False,但我们将逐步将所有稳定任务传递给 True。
  • trust_dataset(布尔值),如果您信任数据集,则设置为 True。

确保您可以使用 --tasks lighteval|yournewtask|2|0 启动您的新任务。

社区评估

community_tasks/_template.py复制到community_tasks/yourevalname.py,并编辑它以添加您自定义的任务(您可以使用哪些参数在上文中有说明)。如果添加的数据集包含许多子集,它包含一个有趣的机制。

确保您可以使用--tasks community|yournewtask|2|0 --custom_tasks community_tasks/yourevalname.py启动带有您新任务的新模型。

添加新指标

首先,检查您是否可以使用src.lighteval.metrics.metrics_corpussrc.lighteval.metrics.metrics_sample中的参数化函数。

如果不能,您可以使用自定义任务系统注册您的新指标

  • 创建一个新Python文件,该文件应包含您指标的完整逻辑。
  • 文件还需要以下导入
from aenum import extend_enum
from lighteval.metrics import Metrics

# And any other class you might need to redefine your specific metric, depending on whether it's a sample or corpus metric.
  • 并结束以下,以便在加载为模块时将您的指标添加到我们的指标列表。
# Adds the metric to the metric list!
extend_enum(Metrics, "metric_name", metric_function)
if __name__ == "__main__":
    print("Imported metric")

然后,您可以在启动lighteval时使用--custom-tasks path_to_your_file将您的自定义指标提供给lighteval。

要查看添加自定义任务的同时添加自定义指标的一个示例,请参阅examples/tasks/custom_tasks_with_custom_metrics/ifeval/ifeval.py

可用指标

多选题指标的指标

这些指标使用不同可能目标的对数似然。

  • loglikelihood_acc(Harness):最佳对数概率选择的实例占的比率 - 还存在一个更快版本的用于只包含一个标记的可能选择的任务(loglikelihood_acc_single_token
  • loglikelihood_acc_norm(Harness):最佳对数概率选择的实例占的比率,按序列长度归一化 - 还存在一个更快版本的用于只包含一个标记的可能选择的任务(loglikelihood_acc_norm_single_token
  • loglikelihood_acc_norm_nospace(Harness):最佳对数概率选择的实例占的比率,按序列长度归一化,忽略第一个空格
  • loglikelihood_f1(Harness):多选题选择的语料库级别F1分数 - 还存在一个更快版本的用于只包含一个标记的可能选择的任务(loglikelihood_f1_single_token
  • mcc(Harness):马修斯相关系数(统计分布之间一致性的度量),
  • recall_at_1(Harness):最佳对数概率选择的实例占的比率 - 还存在一个更快版本的用于每个选择只包含一个标记的任务(recall_at_1_single_token
  • recall_at_2(Harness):第2好或更好的对数概率选择的实例占的比率 - 还存在一个更快版本的用于每个选择只包含一个标记的任务(recall_at_2_single_token
  • mrr(Harness):平均倒数排名,衡量按正确性/相关性排序的选择排名的质量 - 还存在一个更快版本的用于只包含一个标记的可能选择的任务(mrr_single_token
  • target_perplexity(Harness):不同选择的困惑度。
  • acc_golds_likelihood: Harness):有点不同,它实际上检查单个目标的平均对数概率是否高于或低于0.5
  • multi_f1_numeric: 多个金牌目标的对数似然F1分数

所有这些指标也存在于“单个标记”版本中(loglikelihood_acc_single_tokenloglikelihood_acc_norm_single_tokenloglikelihood_f1_single_tokenmcc_single_tokenrecall@2_single_tokenmrr_single_token)。当多选择选项只比较一个标记时(例如:“A”vs“B”vs“C”vs“D”,或“是”vs“否”),使用这些指标的单个标记版本将根据选择的数量除以花费的时间。单个标记评估还包括

  • multi_f1_numeric(Harness,对于CB):计算所有可能的选择的f1分数并取平均值。

困惑度和语言模型的指标

这些指标使用提示的对数似然。

  • word_perplexity ( Harness):序列中单词数量的加权输入困惑度(输入的对数概率)。
  • byte_perplexity ( Harness):序列中字节数量的加权输入困惑度(输入的对数概率)。
  • bits_per_byte ( HELM):根据模型概率计算的平均每字节比特数。
  • log_prob ( HELM):预测输出的平均对数概率(语言模型输入的对数概率)。

生成任务的指标

这些指标需要模型生成输出。因此,它们较慢。

  • 基础
    • perfect_exact_match ( Harness):预测与黄金标准完全匹配的实例比例。
    • exact_match ( HELM):预测与黄金标准匹配的实例比例,除去边界空白字符(=对两者都应用了 strip)。
    • quasi_exact_match ( HELM):预测与规范化后的黄金标准匹配的实例比例(在空白字符、冠词、大小写等方面进行规范化)。其他变体也存在,例如 quasi_exact_match_triviaqa,它只对应用了 strip 的所有句子后的预测进行规范化。
    • prefix_exact_match ( HELM):预测的开始与黄金标准匹配的实例比例,除去边界空白字符(=对两者都应用了 strip)。
    • prefix_quasi_exact_match ( HELM):预测的规范化开始与规范化后的黄金标准匹配的实例比例(在空白字符、冠词、大小写等方面进行规范化)
    • exact_match_indicator:去除某些前置上下文(在指示符之前)的精确匹配
    • f1_score_quasi ( HELM):根据模型输出与黄金标准之间的词重叠度计算的F1分数的平均值,在两者都进行规范化后。
    • f1_score:模型输出与黄金标准之间,未经规范化的词重叠度计算的F1分数的平均值
    • f1_score_macro:语料库级别的宏观F1分数
    • f1_score_macro:语料库级别的微观F1分数
    • maj_at_5maj_at_8:模型多数投票。从模型中取n(5或8)个生成项,并假设最频繁的是实际预测。
  • 摘要
    • rouge ( Harness):平均ROUGE分数 (Lin, 2004)
    • rouge1 ( HELM):基于1-gram重叠的平均ROUGE分数 (Lin, 2004)
    • rouge2 ( HELM):基于2-gram重叠的平均ROUGE分数 (Lin, 2004)
    • rougeL ( HELM):基于最长公共子序列重叠的平均ROUGE分数 (Lin, 2004)
    • rougeLsum ( HELM):基于最长公共子序列重叠的平均ROUGE分数 (Lin, 2004)
    • rouge_t5 ( BigBench):所有可用ROUGE指标的语料库级别ROUGE分数
    • faithfulness ( HELM):基于Laban等人(2022)的SummaC方法的忠实度分数。
    • extractiveness ( HELM):根据Grusky等人(2018)的研究报告。
      • summarization_coverage:模型生成的摘要从源文档中提取片段的程度
      • summarization_density:模型生成的摘要基于源文档的提取摘要程度
      • summarization_compression:模型生成的摘要相对于源文档的压缩程度
    • bert_score ( HELM):报告模型生成与黄金摘要之间的平均BERTScore精确度、召回率和F1分数 (Zhang et al., 2020)
  • 翻译
    • bleu:语料库级别的BLEU分数 (Papineni et al., 2002) - 使用sacrebleu实现。
    • bleu_1 (HELM):基于1-gram重叠的平均样本BLEU分数 (Papineni et al., 2002) - 使用nltk实现。
    • bleu_4 (HELM):基于4-gram重叠的平均样本BLEU分数 (Papineni et al., 2002) - 使用nltk实现。
    • chrf (Harness):字符n-gram匹配f分数。
    • ter (Harness):翻译编辑/错误率。
  • 版权
    • copyright (HELM):报告
      • longest_common_prefix_length:模型生成和参考之间最长公共前缀的平均长度,
      • edit_distance:模型生成和参考之间Levenshtein编辑距离的平均值,
      • edit_similarity:模型生成和参考之间Levenshtein编辑相似度(通过较长序列的长度归一化),
  • 数学
    • quasi_exact_match_math (HELM):标准化预测匹配标准化黄金比例的实例比例(对数学进行归一化,其中移除了LaTeX符号、单位等)
    • maj_at_4_math (Lighteval):多数选择评估,使用预测和黄金的数学归一化
    • quasi_exact_match_gsm8k (Harness):标准化预测匹配标准化黄金比例的实例比例(对gsm8k进行归一化,其中移除了LaTeX符号、单位等)
    • maj_at_8_gsm8k (Lighteval):多数选择评估,使用预测和黄金的gsm8k归一化
  • LLM-as-Judge
    • llm_judge_gpt3p5:可用于任何生成任务,模型将由GPT3.5模型通过openai API进行评分
    • llm_judge_llama_3_405b:可用于任何生成任务,模型将由Llama 3.405B模型通过openai API进行评分
    • llm_judge_multi_turn_gpt3p5:可用于任何生成任务,模型将由GPT3.5模型通过openai API进行评分。它用于mt-bench等多轮任务。
    • llm_judge_multi_turn_llama_3_405b:可用于任何生成任务,模型将由Llama 3.405B模型通过openai API进行评分。它用于mt-bench等多轮任务。

特定任务的度量标准

为了与Harness兼容某些特定任务,我们以更多或更少的方式移植了它们的评估。它们包括drop(用于DROP数据集)和truthfulqa_mc_metrics(用于TruthfulQA)。通常,除了数据集格式与通常非常不同(另一种语言、编程语言、数学等)的任务外,我们希望使用上述度量标准的标准实现。对于不同任务的精确匹配有10个不同的版本几乎没有什么意义。然而,上述大多数度量标准都是可参数化的,这样您可以轻松更改用于实验目的的归一化。

尚未工作

这些度量标准需要生成和其logprob。目前它们无法工作,因为此fn不在AI Harness中。

  • prediction_perplexity (HELM):给定输入的logprob度量。

在集群上启动lighteval的脚本示例

在一个节点上,8个GPU上评估整个套件

  1. 为accelerate创建一个配置文件
compute_environment: LOCAL_MACHINE
distributed_type: MULTI_GPU
downcast_bf16: 'no'
gpu_ids: all
machine_rank: 0
main_training_function: main
mixed_precision: 'no'
num_machines: 1
num_processes: 8
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: false
  1. 创建一个slurm文件
#!/bin/bash
#SBATCH --job-name=kirby-one-node
#SBATCH --nodes=1
#SBATCH --exclusive
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=24
#SBATCH --gres=gpu:8
#SBATCH --mem-per-cpu=11G # This is essentially 1.1T / 96
#SBATCH --partition=production-cluster
#SBATCH --mail-type=ALL
#SBATCH --mail-user=clementine@huggingface.co

set -x -e
export TMPDIR=/scratch

echo "START TIME: $(date)"

# Activate your relevant virtualenv
source <path_to_your_venv>/activate #or conda activate yourenv

cd <path_to_your_lighteval>/lighteval

export CUDA_LAUNCH_BLOCKING=1
srun accelerate launch --multi_gpu --num_processes=8 -m lighteval accelerate --model_args "pretrained=your model name" --tasks examples/tasks/open_llm_leaderboard_tasks.txt --override_batch_size 1 --save_details --output_dir=your output dir

身份验证

对于HuggingFace模型的身份验证(例如base模型),使用HuggingFace令牌。使用的HF_TOKEN直接从环境变量中获取。

对于tgi模型,身份验证在配置文件中提供。一个示例可以在tgi_model.yaml中找到。

版本

构建包

pip install build
python3 -m build .

引用

@misc{lighteval,
  author = {Fourrier, Clémentine and Habib, Nathan and Wolf, Thomas and Tunstall, Lewis},
  title = {LightEval: A lightweight framework for LLM evaluation},
  year = {2023},
  version = {0.3.0},
  url = {https://github.com/huggingface/lighteval}
}

项目详细信息


下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源代码发行版

lighteval-0.5.0.tar.gz (240.3 kB 查看哈希值)

上传时间: 源代码

构建发行版

lighteval-0.5.0-py3-none-any.whl (262.0 kB 查看哈希值)

上传时间: Python 3

支持