使用 wandb_writer.py
将评测结果记录到 W&B (wandb) 并可视化展示。
wandb_writer.py
能够:
python wandb_writer.py --config <config_file> [--print-only]
config_file
: yaml 配置文件路径(配置项细节请见配置)--print-only
: 仅将结果打印到命令行,不执行写 wandb 操作,用于调试
我们在 config
文件夹中为三种不同的情况提供了三个示例文件,其中通用的配置项格式如下:
project: <str> # wandb 项目名
base_url: <str> # wandb 实例 url
# other specific configuration items
其他配置项根据实际需要填写。
如下配置项用于从 HELM 的输出目录中提取评测结果并记录到 wandb 中。
# general configurations
# ...
evals: # evaluations to record
- eval_type: helm # 目前仅支持 helm
model_name: <str> # 模型名字
source: helm # helm 或 file,这里使用 helm 来从 helm 输出目录提取评测结果
helm_output_dir: <your helm output dir path>
helm_suite_name: <your helm suite name>
token_per_iteration: <tokens per iteration in billions>
benchmarks: # 需要记录到 wandb 的评测指标,如下是一些样例
- name: mmlu
metrics:
- EM
- name: boolq
metrics:
- EM
- name: narrative_qa
metrics:
- F1
- name: hellaswag
metrics:
- EM
- ...
本工具使用 HELM 的 16 组核心指标作为默认评测指标。如果配置中没有提供 benchmarks 域,则会自动使用如下16个评测指标:
mmlu.EM, raft.EM, imdb.EM, truthful_qa.EM, summarization_cnndm.ROUGE-2, summarization_xsum.ROUGE-2, boolq.EM, msmarco_trec.NDCG@10, msmarco_regular.RR@10, narrative_qa.F1, natural_qa_closedbook.F1, natural_qa_openbook_longans.F1, civil_comments.EM, hellaswag.EM, openbookqa.EM
评测结果可以直接写在配置文件中,该选项主要用于快速向 wandb 记录已有的评测结果。
# general configurations
# ...
evals: # evaluations to record
- eval_type: helm
model_name: llama-7B # 模型名字
source: file # helm 或 file,这里使用 file 来直接从配置文件提取评测结果
token_num: 1000 # 需要提供该模型训练时使用的 token 数量(单位:B)
eval_result: # 需要被记录的评测结果,如下为一些样例
mmlu:
EM: 0.345
boolq:
EM: 0.751
narrative_qa:
F1: 0.524
hellaswag:
EM: 0.747
...
如下配置用于对在同一个 wandb 项目中的数据生成排行榜。
# general configurations
# ...
leaderboard: True
leaderboard_metrics: # 排行榜中需要统计的指标(仅有包含全部指标评测结果的模型才会进入榜单)
- mmlu.EM
- boolq.EM
- quac.F1
- hellaswag.EM
- ...
excluded_models: # 不参与排行榜的模型名称
- <model to exclude>
- ...
工具使用 HELM 的 16 组核心指标作为默认的排行榜指标。如果没有提供
leaderboard_metrics
域,则会自动使用这 16 组核心指标。