오늘은 scikit-learn-intelex를 설명해 볼 것이다.
부트캠프 강의를 수강하던 도중에 강사님이 지나가면서 슬쩍 말해주셔서 찾아봤는데, 한글로 되어 있는 설명이 하나도 없었다.
그래서 아직 실험해보진않아서 우선 가이드만 작성하고 나중에 써보고 후기를 추가하려고 한다.
우선 아래 공식github도 있으며, 공식 doc도 있으니, 자세한 것은 여기서 살펴보면 된다.
1. Scikit-learn-intelex란?
intel cpu를 사용하는 pc에서 사용할 수 있는데, Scikit-learn api 및 알고리즘을 매우 빠른 속도로 돌아가게 만들어주는 가속기라고 한다. 아래 사진의 수치값들이 원본 scikit-learn대비 속도 향상률이라고 한다.
또한 기존 코드를 변경할 것 없이 간단하게 사용할 수 있다.
사용법이 매우 간단해서 놀랐는데, 단순하게 아래 코드 2줄만 적고 기존하던대로 사용하면 된다.
pip install scikit-learn-intelex
from sklearnex import patch_sklearn
patch_sklearn()
cpu에서 지원되는 알고리즘들이 나와있는데, 몇가지 제한사항들이 있긴 하나 거의 지장이 없다.
아래 모델별 파라미터 제한사항들이 나와있는데, 공식 doc에도 적혀있으니 확인해 보길 바란다.
그리고 아래 링크에 다양한 캐글대회에서 사용된 예시들 링크를 포함하고 있다.
그리고 가이드에 대표로 설명되어 있는 캐글의 Introduction to scikit-learn-intelelx 를 보면 다양한 실험결과 등을 볼 수 있다.
실제로 사용해본 결과 아래를 보면 알 수 있듯이 Randomforest 모델로 테스트를 해봤는데 엄청나게 빠른 속도를 보였다!!!
2024.01.17 추가
평소와 같이 skleanex를 이용하여 다양한 모델을 실험 중이었는데, 갑자기 이상한 버그가 발생했다.
원인이 sklearnex 인지는 꿈에도 상상 못했기 때문에 원인을 찾는데 엄청난 시간이 걸렸다.
우선 버그 발생 상황은, `train-test-split`을 이용하여 train 셋과 valid 셋을 분리하고 모델을 평가하던 도중 X_train과 y_train 그리고 X_valid와 y_valid가 인덱스가 맞지 않는 말도 안 되는 일이 벌어졌다. 지금껏 한 번도 검토해보지 않았고 생각하지도 않았는데 서로 다른 값을 이용해 학습이 진행되고 있던 것이다.
단순 버그일까 싶어서 새로운 가상환경에서도 해보고, 커널을 다시 시작해서도 해봤지만 계속하여 오류가 발생했고 원인을 찾기 위해 reset_index 등 인덱스 관련된 것은 모두 실행했지만 계속 오류가 났다.
-> google을 뒤적거리던중 github issue에 올라와있는 한 글을 발견했고 그게 나를 살렸다.
바로 sklearnex 때문이라는 어떤 유저의 말이 있었다. 이게 매번 발생하는 것은 아닌 것 같고, 뭐 작성자 말로는 하드웨어에 따라 다르다고 하는데 공식답변이 없어서 잘 모르겠다.. 하지만 sklearnex를 지우고 나니 바로 해결돼버렸다......
감사합니다..
결론: `train_test_split`썼는데 인덱스 관련해서 오류가 발생했고, `sklearnex` 때문이었다. 지우면 해결!
이것 말고도 intel에서 제공하는 머신러닝, 딥러닝을 위한 다양한 패치들이 존재하는 것 같다.
'알쓸신잡' 카테고리의 다른 글
Github 2FA 이중인증 등록하기 (1) | 2023.12.07 |
---|---|
딥러닝 NVIDIA GPU / cuda 사용하기 (1) | 2023.11.27 |
git repository 안에 repository 관리 (1) | 2023.11.23 |
[Github README 꾸미기] (0) | 2023.11.23 |
Git pull request 및 협업 (1) | 2023.11.20 |