Scikit learn intelex
Intel(R) Extension for Scikit-learn
Intel (R) Extension for Scikit-learn 是一个免费的人工智能加速器软件,旨在为现有的 Scikit-learn 代码提供超过 10-100 倍的加速。这个加速是通过向量指令、AI 硬件特定的内存优化、线程和针对所有即将推出的 Intel (R) 平台的优化来实现的
- https://github.com/intel/scikit-learn-intelex
- https://intel.github.io/scikit-learn-intelex/2024.6/quick-start.html
需要的 CPU x86 指令集
- SSE2
- SSE4.2
- AVX2
- AVX512
使用
检查 CPU 是否支持
#!/bin/bash
# 定义一个函数来检查特定的 CPU 标志
check_flag() {
flag=$1
echo "====================="
search_cpu_res=$(lscpu | tr ' ' '\n' | grep "$flag")
if [ "$(echo "${search_cpu_res}" |grep -c "${flag}")" -eq 0 ]; then
echo "CPU does not support $flag"
else
echo "CPU supports $flag"
echo -e "CPU Flags: \n${search_cpu_res}"
fi
echo "====================="
}
# 检查 SSE2
check_flag "sse2"
# 检查 SSE4.2
check_flag "sse4_2"
# 检查 AVX2
check_flag "avx2"
# 检查 AVX512
check_flag "avx512"
安装
CPU 运行
import numpy as np
from sklearnex import patch_sklearn
patch_sklearn()
from sklearn.cluster import DBSCAN
X = np.array([[1., 2.], [2., 2.], [2., 3.],
[8., 7.], [8., 8.], [25., 80.]], dtype=np.float32)
clustering = DBSCAN(eps=3, min_samples=2).fit(X)
或者
运行速度对比
import time
import numpy as np
from sklearn.cluster import DBSCAN
start = time.time()
X = np.array([[1., 2.], [2., 2.], [2., 3.],
[8., 7.], [8., 8.], [25., 80.]], dtype=np.float32)
clustering = DBSCAN(eps=3, min_samples=2).fit(X)
end = time.time()
print('运行时间为:{}秒'.format(end-start))
print('运行时间为:{}毫秒'.format((end-start) * 1000))
分别运行
# 使用 Intel(R) Extension for Scikit-learn
python -m sklearnex my_application.py
# 普通运行
python my_application.py
运行结果