通过调用苹果的原生库提高Thinc在苹果设备上的性能
项目描述
thinc-apple-ops
通过调用苹果的原生库,使spaCy和Thinc在macOS上运行速度提高8倍。
⏳ 安装
请确保您已安装Xcode,然后使用pip
进行安装
pip install thinc-apple-ops
🏫 动机
矩阵乘法是机器学习中的主要操作之一。由于矩阵乘法计算量大,使用快速的矩阵乘法实现可以显著加快训练和预测速度。
大多数线性代数库都提供标准化的BLAS gemm
函数形式的矩阵乘法。幕后的工作是由一系列针对特定架构精心调优的矩阵乘法内核完成的。矩阵乘法内核使用特定于架构的SIMD指令来实现数据级别的并行性,并考虑诸如缓存大小和指令延迟等因素。Thinc使用BLIS线性代数库,该库为大多数x86_64和一些ARM CPU提供了优化的矩阵乘法内核。
近年来,如Mac中使用的Apple Silicon CPU,例如M系列,与传统x86_64和ARM CPU不同,因为它们有一个名为AMX的独立矩阵协处理器。由于AMX文档不充分,因此不清楚苹果M CPU有多少个AMX单元。可以肯定的是,M1的(单个)性能集群有一个AMX单元,并且有经验证据表明M1 Pro/Max的两个性能集群都有一个AMX单元。
尽管AMX单元使用一组未记录的指令,但可以通过Apple的Accelerate线性代数库来使用这些单元。由于Accelerate实现了BLAS接口,它可以作为Thinc使用的BLIS库的替代品。这就是thinc-apple-ops
包的作用所在。thinc-apple-ops
扩展了默认的Thinc ops,因此使用Accelerate的gemm
矩阵乘法代替BLIS的gemm
实现。结果,Thinc中的矩阵乘法是在快速的AMX单元上执行的。
⏱ 基准测试
如以下基准测试所示,使用thinc-apple-ops
在Apple Silicon Mac上预测和训练速度有显著提升。
预测
这个第一个基准测试比较了带有和不带有thinc-apple-ops
的M1上de_core_news_lg
spaCy模型的预测速度。还提供了Intel Mac Mini和AMD Ryzen 5900X的结果进行比较。结果以每秒单词数表示。在这个预测基准测试中,使用thinc-apple-ops
将性能提高了4.3倍。
CPU | BLIS | thinc-apple-ops | 包功率(瓦特) |
---|---|---|---|
Mac Mini(M1) | 6492 | 27676 | 5 |
MacBook Air Core i5 2020 | 9790 | 10983 | 9 |
Mac Mini Core i7 Late 2018 | 16364 | 14858 | 31 |
AMD Ryzen 5900X | 22568 | N/A | 52 |
训练
在第二个基准测试中,我们比较了de_core_news_lg
spaCy模型(无NER)的训练速度。结果以每秒训练迭代数表示。使用thinc-apple-ops
将训练时间提高了3.0倍。
CPU | BLIS | thinc-apple-ops | 包功率(瓦特) |
---|---|---|---|
Mac Mini M1 2020 | 3.34 | 10.07 | 5 |
MacBook Air Core i5 2020 | 3.10 | 3.27 | 10 |
Mac Mini Core i7 Late 2018 | 4.71 | 4.93 | 32 |
AMD Ryzen 5900X | 6.53 | N/A | 53 |
项目详情
thinc_apple_ops-1.0.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 97238eb6693e758bfdcf1ac8e92c064bbe893ab74a6a3a4237c5bdf17318e502 |
|
MD5 | aee5aa5df47b706f3e9d26a8d8f6e113 |
|
BLAKE2b-256 | 0d4415fa7fd8c4f3011f29393a1aed7616b3991fb7562ef044a31a818c25558f |
thinc_apple_ops-1.0.0-cp312-cp312-macosx_11_0_arm64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1594f897f7dd03212d5b1ae1e4054be02526da530201a09c32d7bb557d274902 |
|
MD5 | 5c972cfa9e91d8caa000c144879fc9b9 |
|
BLAKE2b-256 | c95dcacc702a8c7d6b5f19181819104b3d7d534598551d75a08d1c99ae96c869 |
哈希值 用于 thinc_apple_ops-1.0.0-cp312-cp312-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b2a9d2d3e8b86c9ce4750affc1b6c7350ef92fff3d33249302aeafee20f3e09e |
|
MD5 | 270e345418ec5a64b87a33b3280711d7 |
|
BLAKE2b-256 | 9c08c223217366308b794105b3269a5de183e898d0eb7d316143c33ca0d44d13 |
哈希值 用于 thinc_apple_ops-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 257aa6fcaac764fc72285bf1fb93d1986ed9de17192c2c7090a785ee999188f8 |
|
MD5 | 9ccb935f936887aeb8a3464a60ce4410 |
|
BLAKE2b-256 | f3831717527eaebed4b71fd7e260deb7c8e2c33b35b9ac75a6bda6a1e7158e1b |
哈希值 用于 thinc_apple_ops-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 24083c6f74869a3b92bb398f610271687e269c290deda124075b3577a0873445 |
|
MD5 | 2c1d827e3684894e8d3092142c733054 |
|
BLAKE2b-256 | a2c5fe79f5aff1731a80104c7366023b71b42948a6da3dad7383cbe779bdb6db |
哈希值 用于 thinc_apple_ops-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2f641448bfcefc5c5204484a62baac7c040741fa8d8ecb86574a0357f390e373 |
|
MD5 | f9213daf4c9e612b20b90c01cbd3c8c9 |
|
BLAKE2b-256 | f41cb2727569fadd5299c11f3eecc8d2016cbb433b7b7d12da345295b2794693 |
哈希值 用于 thinc_apple_ops-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cef314b216ace57dddf403caabd12b8af9d5519b7c679b8a24871c28c7588845 |
|
MD5 | 3a6329979bf203fb41fd9af5ef4a96cb |
|
BLAKE2b-256 | 84b50e006fd7a0bf0a0a153ddf3134a47854e731af231bc865413188ec5c84a3 |
哈希值 用于 thinc_apple_ops-1.0.0-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 25d16b4518642b394cc7c4cf6a6477720f35fb22e6d91dca633bff4102c59763 |
|
MD5 | 9c9eab2e4b241e1f034a9a08264e411f |
|
BLAKE2b-256 | e0a638816c30c865584ebd4ac80c21ae72d4f24518d726e755e3ff803ec47f89 |
哈希值 用于 thinc_apple_ops-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cd04a7cd379a629498f964f5c589150a885ce834228dc060967806ee32196fab |
|
MD5 | 98b887f266382800ba365552e459d589 |
|
BLAKE2b-256 | 93ec8f2aa7e1171343e456145fe47596d053b61d55cdadd3f04b46c99133d34b |