跳转到主要内容

通过调用苹果的原生库提高Thinc在苹果设备上的性能

项目描述

thinc-apple-ops

通过调用苹果的原生库,使spaCyThinc在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 (63.2 kB 查看哈希)

上传时间

构建版本

thinc_apple_ops-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (157.7 kB 查看哈希)

上传时间 CPython 3.12 macOS 11.0+ ARM64

thinc_apple_ops-1.0.0-cp312-cp312-macosx_10_9_x86_64.whl (163.0 kB 查看哈希)

上传时间 CPython 3.12 macOS 10.9+ x86-64

thinc_apple_ops-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (156.6 kB 查看哈希)

上传时间 CPython 3.11 macOS 11.0+ ARM64

thinc_apple_ops-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl (161.5 kB 查看哈希)

上传时间 CPython 3.11 macOS 10.9+ x86-64

thinc_apple_ops-1.0.0-cp310-cp310-macosx_11_0_arm64.whl (156.9 kB 查看哈希)

上传时间 CPython 3.10 macOS 11.0+ ARM64

thinc_apple_ops-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl (161.9 kB 查看哈希)

上传时间 CPython 3.10 macOS 10.9+ x86-64

thinc_apple_ops-1.0.0-cp39-cp39-macosx_11_0_arm64.whl (157.5 kB 查看哈希)

上传时间 CPython 3.9 macOS 11.0+ ARM64

thinc_apple_ops-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl (162.5 kB 查看哈希)

上传时间 CPython 3.9 macOS 10.9+ x86-64

由以下支持