Lighteval 文件

快速教程

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

快速入門

我們建議使用 --help 標誌來獲取有關每個命令可用選項的更多資訊。 lighteval --help

Lighteval 可以通過幾個不同的命令來使用。

基本用法

要在 Truthful QA 基準上使用 🤗 Accelerate 評估 GPT-2,請執行

lighteval accelerate \
     "model_name=openai-community/gpt2" \
     "leaderboard|truthfulqa:mc|0|0"

在這裡,我們首先選擇一個後端(acceleratenanotronvllm),然後指定要執行的模型和任務。

模型引數的語法是 `key1=value1,key2=value2,etc`。有效的鍵值對與後端配置相對應,並在[下面](#Model Arguments)詳細說明。

任務規範的語法一開始可能有點難懂。格式如下

{suite}|{task}|{num_few_shot}|{0 for strict `num_few_shots`, or 1 to allow a truncation if context size is too small}

如果第四個值設定為 1,lighteval 將檢查提示(包括少樣本示例)是否對於任務或模型的上下文大小來說過長。如果是,則會自動減少少樣本示例的數量。

所有官方支援的任務都可以在 tasks_listextended 資料夾中找到。此外,社群提供的任務可以在 community 資料夾中找到。有關任務實現的更多詳細資訊,例如提示是如何構建的,或使用了哪些指標,您可以檢視實現它們的檔案

支援執行多個任務,可以使用逗號分隔的列表,或者透過指定檔案路徑。檔案結構應類似於 examples/tasks/recommended_set.txt。指定檔案路徑時,應以 ./ 開頭。

lighteval accelerate \
     "model_name=openai-community/gpt2" \
     ./path/to/lighteval/examples/tasks/recommended_set.txt
# or, e.g., "leaderboard|truthfulqa:mc|0|0|,leaderboard|gsm8k|3|1"

在一個或多個 GPU 上評估模型

資料並行

要在單個或多個 GPU 上評估模型,首先透過執行以下命令建立一個多 GPU 配置。

accelerate config

然後,您可以像下面這樣在 8 個 GPU 上使用資料並行評估模型

accelerate launch --multi_gpu --num_processes=8 -m \
    lighteval accelerate \
    "model_name=openai-community/gpt2" \
    "leaderboard|truthfulqa:mc|0|0"

在這裡,--override_batch_size 定義了每個裝置的批次大小,所以有效的批次大小將是 override_batch_size * num_gpus

流水線並行

要在 2 個或更多 GPU 上使用流水線並行評估模型,請執行

lighteval accelerate \
    "model_name=openai-community/gpt2,model_parallel=True" \
    "leaderboard|truthfulqa:mc|0|0"

這將自動使用 accelerate 將模型分佈到各個 GPU 上。

透過設定 model_parallel=True 並使用 accelerate 在 GPU 之間分配資料,可以同時結合資料並行和流水線並行。

後端配置

model-args 引數接受一個表示模型引數列表的字串。允許的引數根據你使用的後端(vllm 或 accelerate)而有所不同。

Accelerate

  • pretrained (str):HuggingFace Hub 模型 ID 名稱或要載入的預訓練模型的路徑。這實際上是 HuggingFace transformers API 中 from_pretrainedpretrained_model_name_or_path 引數。
  • tokenizer (Optional[str]):用於分詞的 HuggingFace Hub 分詞器 ID。
  • multichoice_continuations_start_space (Optional[bool]):是否在多項選擇生成的每個續寫內容的開頭新增一個空格。例如,上下文:“法國的首都是什麼?”以及選項:“巴黎”、“倫敦”。將被分詞為:“法國的首都是什麼? 巴黎”和“法國的首都是什麼? 倫敦”。True 表示新增空格,False 表示去除空格,None 則不作處理。
  • subfolder (Optional[str]):模型倉庫中的子資料夾。
  • revision (str):模型的修訂版本。
  • max_gen_toks (Optional[int]):要生成的最大詞元數。
  • max_length (Optional[int]):生成輸出的最大長度。
  • add_special_tokens (bool, optional, defaults to True):是否向輸入序列新增特殊詞元。如果為 None,對於序列到序列模型(例如 T5),預設值將設定為 True,對於因果模型則為 False
  • model_parallel (bool, optional, defaults to None):True/False:強制使用或不使用 accelerate 庫在多個裝置上載入大型模型。預設值:None,這對應於比較程序數與 GPU 數量。如果程序數更少 => 模型並行,否則不是。
  • dtype (Union[str, torch.dtype], optional, defaults to None):如果指定,則將模型權重轉換為 dtype。字串會被轉換為 torch.dtype 物件(例如 float16 -> torch.float16)。使用 dtype="auto" 從模型權重中推斷型別。
  • device (Union[int, str]):用於模型訓練的裝置。
  • quantization_config (Optional[BitsAndBytesConfig]):模型的量化配置,手動提供以量化精度載入通常為浮點數的模型。4 位和 8 位精度需要此配置。
  • trust_remote_code (bool):是否在載入模型時信任遠端程式碼。

VLLM

  • pretrained (str):HuggingFace Hub 模型 ID 名稱或要載入的預訓練模型的路徑。
  • gpu_memory_utilization (float):要使用的 GPU 記憶體比例。
  • batch_size (int):模型訓練的批次大小。
  • revision (str):模型的修訂版本。
  • dtype (str, None):模型使用的資料型別。
  • tensor_parallel_size (int):要使用的張量並行單元數量。
  • data_parallel_size (int):要使用的資料並行單元數量。
  • max_model_length (int):模型的最大長度。
  • swap_space (int):每個 GPU 的 CPU 交換空間大小 (GiB)。
  • seed (int):模型使用的隨機種子。
  • trust_remote_code (bool):是否在載入模型時信任遠端程式碼。
  • use_chat_template (bool):是否使用聊天模板。
  • add_special_tokens (bool):是否向輸入序列新增特殊詞元。
  • multichoice_continuations_start_space (bool):是否在多項選擇生成的每個續寫內容的開頭新增空格。
  • subfolder (Optional[str]):模型倉庫中的子資料夾。

Nanotron

在單個 GPU 上評估一個使用 nanotron 訓練的模型。

Nanotron 模型不能在沒有 torchrun 的情況下進行評估。

 torchrun --standalone --nnodes=1 --nproc-per-node=1  \
 src/lighteval/__main__.py nanotron \
 --checkpoint-config-path ../nanotron/checkpoints/10/config.yaml \
 --lighteval-config-path examples/nanotron/lighteval_config_override_template.yaml

nproc-per-node 引數應與 lighteval_config_template.yaml 檔案中配置的資料、張量和流水線並行度相匹配。即:nproc-per-node = data_parallelism * tensor_parallelism * pipeline_parallelism

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.