项目介绍:transfer-learning-conv-ai
背景
transfer-learning-conv-ai 是一个基于传递学习构建对话人工智能的项目。这个项目采用 OpenAI 的 GPT 和 GPT-2 转换器语言模型,通过传递学习来实现对话代理的训练。它的代码既干净又注释详细,包含了训练和测试脚本,用户可以利用这些脚本有效地训练具备会话功能的人工智能。
项目成果
该项目的代码可以用于重现 HuggingFace 团队在 NeurIPS 2018 对话比赛(ConvAI2)中的成果。这个比赛中,他们的模型在自动化指标上处于领先地位。项目中提供的训练代码将当时的比赛代码量从 3000 多行浓缩到了 250 行,支持分布式和 FP16 选项。
使用该模型,在配备 8 个 V100 显卡的云实例上,可以大约在一个小时内完成训练,同时项目也提供了预训练的模型供使用。
安装指南
常规安装
首先,需要克隆代码库并安装相关依赖:
git clone https://github.com/huggingface/transfer-learning-conv-ai
cd transfer-learning-conv-ai
pip install -r requirements.txt
python -m spacy download en
使用 Docker 安装
用户也可以通过 Docker 安装,此时需构建自包含的映像:
docker build -t convai .
确保 Docker 设置分配足够的内存来构建容器。默认的 1.75GB 可能因 PyTorch 轮过大而导致失败。构建后,可以通过以下方式进入映像:
docker run --rm -it convai bash
预训练模型
项目提供了一个预训练并经过微调的模型,用户可以通过运行 interact.py
脚本与其对话。默认情况下,脚本会自动下载并缓存模型。
使用训练脚本
训练脚本支持单 GPU 和多 GPU 设置,并接受多种参数用于调整训练过程。以下是一些常用的训练参数:
dataset_path
:数据集路径或 URL。model
:模型路径、URL 或者模型的简短名称。train_batch_size
:训练批量大小。n_epochs
:训练的轮次数。
运行训练脚本的示例命令:
python ./train.py # 单 GPU 训练
python -m torch.distributed.launch --nproc_per_node=8 ./train.py # 在 8 个 GPU 上训练
使用交互脚本
在训练完成后,可以使用交互脚本与模型进行交互。交互脚本允许用户调整解码算法,例如最大输出长度、温度、和 top-k 过滤等参数。
运行交互脚本的示例命令:
python ./interact.py --model_checkpoint ./data/your_checkpoint/ # 使用训练检查点运行
python ./interact.py # 使用项目的微调模型
评估脚本
用户可以运行 ConvAI2 的评估脚本来评估模型的性能。在运行评估前,需在代码库中安装 ParlAI
:
git clone https://github.com/facebookresearch/ParlAI.git
cd ParlAI
python setup.py develop
然后可以在 ParlAI
的基础文件夹中运行评估脚本:
python ../convai_evaluation.py --eval_type hits@1
总结
transfer-learning-conv-ai 项目为用户提供了一套完善的工具来训练和评估对话型人工智能。通过传递学习,该项目为爱好者和研究人员提供了一个构建先进对话系统的捷径。