4个版本 (2个重大更新)
0.3.1 | 2020年7月13日 |
---|---|
0.3.0 | 2020年6月18日 |
0.2.0 | 2020年5月13日 |
0.1.0 | 2020年4月17日 |
#1763 in 算法
每月下载量31次
25KB
362 行
aleph-alpha-tokenizer
我们阿莱夫阿法非常喜欢huggingface的tokenizers crate。为这个优秀的库点赞。唯一的一个缺点是:接口针对绑定进行了优化,而不是为了在Rust中工作。
所以我们从中得到了启发,并试图改进一些东西。首先,我们想看看在实现相同的Model
trait的同时,我们能使其变得多快。我们的实现基于非常好的fst crate。然后,我们添加了自己的接口,以发挥Rust的优势(主要是避免不必要的分配,重复使用数据,泛型)。
我们对改进后的性能非常满意。在我们的测试中,我们发现我们的分词器对任何给定的数据都能基本线性执行,而huggingface的wordpiece
分词器在较长的多词时表现最差,表现最差。以下是一些基准测试的单核运行时间(单位:微秒)
# | AlephAlphaTokenizer | ~ 作为模型 | wordpiece |
---|---|---|---|
0 | 749.950 | 1274.923 | 2025.289 |
1 | 1010.120 | 1511.214 | 1900.441 |
2 | 1775.973 | 2648.909 | 2995.574 |
3 | 2263.436 | 3598.771 | 12978.049 |
4 | 2262.490 | 3403.918 | 4864.752 |
5 | 2808.373 | 4456.960 | 18623.648 |
6 | 2783.996 | 4015.472 | 5362.356 |
7 | 3160.517 | 5048.136 | 9946.745 |
8 | 3016.781 | 4742.037 | 8066.818 |
9 | 3497.266 | 5626.896 | 8662.281 |
10 | 4446.626 | 6679.859 | 10584.524 |
(在启用所有缓解措施的情况下,在运行Fedora内核5.6.15-300.fc32.x86_64的Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz上测量)
如您所见,使用我们的分词器作为模型比huggingface的wordpiece分词器快至少13%,通常更多。使用Rustic接口,我们可以省去很多分配和内存复制,所以至少快60%。
要重新运行基准测试,请调用cargo bench --all-features
。否则,只会测试AlephAlphaTokenizer
。
许可协议
本软件包根据MIT或Apache许可证版本2进行许可,由您自行决定。
依赖项
~2–10MB
~76K SLoC