Bort 项目使用教程

Bort 项目使用教程

bort Repository for the paper "Optimal Subarchitecture Extraction for BERT" 项目地址: https://gitcode.com/gh_mirrors/bo/bort

1. 项目介绍

Bort 是一个用于 BERT 架构的最优子架构提取的开源项目。该项目通过应用完全多项式时间近似方案(FPTAS)来进行神经架构搜索,提取出 BERT 架构的最优子集。Bort 的有效大小(不包括嵌入层)仅为原始 BERT-large 架构的 5.5%,网络大小的 16%。它能够在 288 GPU 小时内完成预训练,这仅是预训练最高性能 BERT 参数架构变体(如 RoBERTa-large)所需时间的 1.2%。此外,Bort 在 CPU 上的运行速度比 BERT-base 快 7.9 倍(比 BERT/RoBERTa-large 快 20 倍),并且在多个公共自然语言理解(NLU)基准测试中表现优于其他压缩变体和一些非压缩变体。

2. 项目快速启动

2.1 环境准备

首先,确保你已经安装了 Python 3.6.5 或更高版本。然后,安装项目所需的依赖包:

pip install -r requirements.txt

如果你需要进行预训练,建议从源代码安装 Horovod:

pip uninstall horovod
HOROVOD_CUDA_HOME=/usr/local/cuda-10.1 \
HOROVOD_WITH_MXNET=1 \
HOROVOD_GPU_ALLREDUCE=NCCL \
pip install horovod==0.16.2 --no-cache-dir

2.2 下载模型

如果你有 AWS CLI,可以通过以下命令下载模型:

aws s3 cp s3://alexa-saif-bort/bort params model/

2.3 运行测试

下载示例文本并将其放入 test_data/ 目录中:

wget https://github.com/dmlc/gluon-nlp/blob/v0.9.x/scripts/bert/sample_text.txt
mv sample_text.txt test_data/

2.4 预训练

Bort 已经预训练完成,但如果你想尝试其他数据集,可以按照以下步骤进行预训练:

首先,对预训练文本进行分词:

python create_pretraining_data.py \
--input_file <input text> \
--output_dir <output directory> \
--dataset_name <dataset name> \
--dupe_factor <duplication factor> \
--num_outputs <number of output files>

推荐使用 --dataset_name openwebtext_ccnews_stories_books_cased 作为词汇表。

然后运行预训练蒸馏脚本:

./run_pretraining_distillation.sh <num gpus> <training data> <testing data> [optional teacher checkpoint]

2.5 微调

要微调 Bort,运行以下命令:

./run_finetune.sh <your task here>

建议调整 run_finetune.sh 中的超参数。

3. 应用案例和最佳实践

3.1 自然语言理解(NLU)

Bort 在多个自然语言理解基准测试中表现优异,尤其是在 GLUE 和 SuperGLUE 基准测试中。通过微调 Bort,可以在这些基准测试中获得比其他压缩变体更好的性能。

3.2 快速推理

由于 Bort 的架构较小且预训练时间短,它在推理任务中表现出色,尤其是在资源受限的环境中。例如,在嵌入式设备或移动设备上,Bort 可以提供比 BERT-base 更快的推理速度。

3.3 迁移学习

Bort 可以作为迁移学习的基础模型,应用于各种自然语言处理任务。通过在特定任务上微调 Bort,可以快速适应新的数据集,并获得良好的性能。

4. 典型生态项目

4.1 Hugging Face Transformers

Hugging Face 的 Transformers 库是一个广泛使用的自然语言处理库,支持多种预训练模型,包括 BERT 和 Bort。通过集成 Bort,可以在 Hugging Face 的生态系统中快速部署和使用 Bort 模型。

4.2 MXNet

Bort 项目使用了 MXNet 深度学习框架进行开发。MXNet 提供了高效的计算能力和灵活的 API,使得 Bort 的训练和推理过程更加高效。

4.3 Horovod

Horovod 是一个分布式深度学习训练框架,支持多种深度学习框架,包括 MXNet。通过使用 Horovod,可以加速 Bort 的预训练和微调过程,尤其是在大规模数据集上。

通过以上模块的介绍和实践,你可以快速上手并应用 Bort 项目,提升自然语言处理任务的性能和效率。

bort Repository for the paper "Optimal Subarchitecture Extraction for BERT" 项目地址: https://gitcode.com/gh_mirrors/bo/bort

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廉欣盼Industrious

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值