LM-BFF常见问题解答:从环境配置到结果复现,解决你的所有困惑
LM-BFF常见问题解答从环境配置到结果复现解决你的所有困惑【免费下载链接】LM-BFF[ACL 2021] LM-BFF: Better Few-shot Fine-tuning of Language Models https://arxiv.org/abs/2012.15723项目地址: https://gitcode.com/gh_mirrors/lm/LM-BFFLM-BFFBetter Few-shot Fine-tuning of Language Models是一个强大的小样本学习框架它通过提示微调和演示集成技术让预训练语言模型在少量训练数据上表现更出色。无论你是刚接触小样本学习的新手还是希望复现论文结果的开发者这篇文章都将为你解答使用LM-BFF时遇到的各种问题。 环境配置常见问题如何快速搭建LM-BFF运行环境LM-BFF的环境配置相对简单但需要注意一些关键细节。首先确保使用正确的Python版本建议Python 3.7然后按照以下步骤操作# 克隆项目仓库 git clone https://gitcode.com/gh_mirrors/lm/LM-BFF # 进入项目目录 cd LM-BFF # 安装依赖包 pip install -r requirements.txt重要提醒transformers库必须使用3.4.0版本其他版本可能导致兼容性问题。如果遇到版本冲突可以创建虚拟环境单独安装。安装依赖时出现版本冲突怎么办这是最常见的问题之一。LM-BFF对特定版本有严格要求transformers3.4.0必须torch1.6.0建议sentence-transformers0.4.0如果出现版本冲突可以尝试创建新的虚拟环境先安装torch再安装其他依赖使用pip install --no-deps跳过依赖检查LM-BFF框架示意图展示了提示微调和演示集成的核心思想 数据准备与处理如何下载和处理数据集LM-BFF支持15个标准数据集包括SST-2、MRPC、MNLI等。数据准备有两种方式方法一自动下载脚本cd data bash download_dataset.sh方法二手动下载和解压从项目提供的链接下载数据集包解压到./data/original目录。生成小样本数据时需要注意什么使用以下命令生成K-shot数据python tools/generate_k_shot_data.py默认情况下会生成K16的5个不同种子13, 21, 42, 87, 100的数据。生成的数据保存在data/k-shot目录中。常见问题如果更改了数据务必清理缓存文件以cache开头的文件否则可能使用旧缓存。 运行实验的常见问题最简单的运行示例是什么对于SST-2数据集最简单的运行命令是python run.py \ --task_name SST-2 \ --data_dir data/k-shot/SST-2/16-42 \ --do_train \ --do_eval \ --model_name_or_path roberta-large \ --few_shot_type prompt-demo \ --max_steps 1000 \ --output_dir result/tmp \ --seed 42如何使用脚本快速运行实验项目提供了run_experiment.sh脚本简化运行TAGexp TYPEprompt-demo TASKSST-2 BS2 LR1e-5 SEED42 MODELroberta-large bash run_experiment.sh运行时报错CUDA out of memory怎么办这是GPU内存不足的常见问题。解决方法减小批大小--per_device_train_batch_size使用梯度累积脚本中已自动计算使用更小的模型如roberta-base代替roberta-large减少序列长度--max_seq_length 提示模板与标签映射如何理解提示模板的格式LM-BFF使用特殊的模板语法*cls*、*sep*、*mask*特殊标记*sent_0*第一个句子*sent-_0*第一个句子去掉最后一个字符*sentl_0*第一个句子首字母小写示例SST-2的模板*cls**sent_0*_It_was*mask*.*sep*会被转换为[CLS] {句子} It was [MASK]. [SEP]如何设计自己的提示模板根据任务特点设计模板分类任务通常包含句子和情感词文本蕴含任务包含两个句子和关系词确保模板自然流畅符合语言习惯标签映射有什么作用标签映射将类别标签转换为自然语言词汇。例如SST-2的映射{0:terrible,1:great}将0/1标签转换为terrible/great。重要提示对于RoBERTa模型会自动在词前添加空格设计映射时需要考虑这一点。 自动提示搜索问题如何使用自动搜索的提示项目提供了预计算的自动提示在auto_template和auto_label_mapping目录中。使用方法# 使用最佳自动模板 TAGexp TYPEprompt-demo TASKSST-2 BS2 LR1e-5 SEED42 MODELroberta-large bash run_experiment.sh --template_path auto_template/SST-2/16-42.sort.txt --template_id 0 # 使用最佳自动标签映射 TAGexp TYPEprompt-demo TASKSST-2 BS2 LR1e-5 SEED42 MODELroberta-large bash run_experiment.sh --mapping_path auto_label_mapping/SST-2/16-42.sort.txt --mapping_id 0如何自己进行自动提示搜索自动提示搜索是计算密集型的需要大量时间和GPU资源。基本流程使用T5生成模板候选对所有候选进行微调评估根据开发集性能排序详细命令参考tools/generate_template.py和tools/sort_template.py。 结果复现与验证如何复现论文中的实验结果要完全复现论文结果需要使用相同的数据集版本相同的超参数设置运行多个种子并取平均多种子运行脚本for seed in 13 21 42 87 100 do for bs in 2 4 8 do for lr in 1e-5 2e-5 5e-5 do TAGLM-BFF \ TYPEprompt-demo \ TASKSST-2 \ BS$bs \ LR$lr \ SEED$seed \ MODELroberta-large \ bash run_experiment.sh --template_path auto_template/SST-2/16-$seed.sort.txt --template_id 0 --demo_filter --demo_filter_model sbert-roberta-large done done done如何收集和统计结果使用tools/gather_result.py收集结果python tools/gather_result.py --condition {tag: LM-BFF, task_name: sst-2, few_shot_type: prompt-demo}这会计算所有符合条件的实验的平均值和标准差。⚡ 性能优化技巧如何提高训练速度使用混合精度训练添加--fp16参数调整批大小在GPU内存允许范围内使用最大批大小使用数据缓存首次运行后会自动生成缓存减少评估频率调整--eval_steps参数如何节省GPU内存使用梯度检查点gradient checkpointing减少序列最大长度使用更小的模型变体使用CPU进行部分计算 常见错误与解决方案错误No module named transformers原因transformers库未安装或版本不正确解决pip install transformers3.4.0错误CUDA error: out of memory原因GPU内存不足解决减小批大小使用梯度累积或使用CPU错误KeyError: xxx in template原因模板语法错误或变量名不正确解决检查模板格式确保变量名正确错误结果与论文差异较大原因可能的数据处理、超参数或随机种子差异解决验证数据MD5校验和cd data/k-shot md5sum -c checksum使用完全相同的超参数运行足够多的随机种子 扩展与自定义如何添加新的数据集在data/original目录中添加新数据集确保格式与其他数据集一致可能需要修改tools/generate_k_shot_data.py在run_experiment.sh中添加对应的模板和映射如何集成其他预训练模型LM-BFF支持所有BERT和RoBERTa系列的Hugging Face模型。只需修改--model_name_or_path参数即可。 监控与调试如何查看训练过程日志文件所有运行结果保存在./log目录TensorBoard添加--logging_dir参数启用控制台输出设置--logging_steps控制输出频率如何调试模板效果使用--no_train进行零样本测试手动检查模板转换结果使用不同的模板ID进行比较 最佳实践建议从小开始先用小数据集如SST-2测试再扩展到其他任务版本控制记录所有实验的完整配置资源管理大型实验可能需要多GPU或长时间运行结果验证总是运行多个随机种子以获得可靠结果文档记录记录所有自定义修改和发现 总结LM-BFF为小样本学习提供了强大而灵活的框架。通过本文的常见问题解答你应该能够顺利配置环境、运行实验、调试问题并复现结果。记住小样本学习的关键在于精心设计的提示和有效的演示选择LM-BFF在这两方面都提供了优秀的工具和方法。如果在使用过程中遇到本文未涵盖的问题建议查看项目文档和源码注释检查GitHub Issues中是否有类似问题在相关社区或论坛寻求帮助祝你使用LM-BFF取得成功【免费下载链接】LM-BFF[ACL 2021] LM-BFF: Better Few-shot Fine-tuning of Language Models https://arxiv.org/abs/2012.15723项目地址: https://gitcode.com/gh_mirrors/lm/LM-BFF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻