You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hugging Face多选QA适配数据集时DataCollator报KeyError: 'labels'

多选QA适配自定义数据集标签字段报错解决方案

错误根因

你使用的目标数据集标签字段为answerKey,但当前DataCollatorForMultipleChoice的默认逻辑仅检查label和labels两个字段名,两个字段都不存在时会尝试取出不存在的labels字段,因此触发KeyError。

解决方案

方案1:数据集预处理阶段重命名字段(推荐,代码改动最小)

在加载完自定义数据集后,直接将answerKey字段重命名为collator默认识别的label字段即可:

# 加载完数据集后执行
dataset = dataset.rename_column("answerKey", "label")

方案2:修改DataCollator逻辑兼容多标签字段名

调整collator中标签字段的判断逻辑,新增对answerKey的识别支持:

def __call__(self, features):
    print(features[0].keys())
    # 调整标签字段判断逻辑
    if "answerKey" in features[0]:
        label_name = "answerKey"
    elif "label" in features[0]:
        label_name = "label"
    else:
        label_name = "labels"
    labels = [feature.pop(label_name) for feature in features]
    # 后续原有逻辑保持不变

注意事项

如果你的数据集answerKey存储的是A/B/C/D这类字符串格式的答案标识,需要先将其转换为0/1/2/3对应的整数索引,否则后续模型计算损失时会出现类型不匹配报错,转换示例如下:

ans_mapping = {"A":0, "B":1, "C":2, "D":3}
def convert_ans_to_idx(example):
    example["label"] = ans_mapping[example["label"]]
    return example
# 重命名字段后执行映射转换
dataset = dataset.map(convert_ans_to_idx)

内容的提问来源于stack exchange,提问作者programming123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 00:45:03