티스토리 뷰
M1(Apple Silicon) MAC, Anaconda 환경에서 lightGBM OSError:오류, Kernel 죽는 문제
데구르르 2022. 11. 13. 15:09머신러닝 강의 실습을 위해 별생각 없이 pip install lightgbm 을 치고난 후 이 모든 삽질이 시작되었다.
설치까진 뭐 어떤 식으로든 다 되는데, from lightgbm import LGBMRegressor 로 불러오면 오류가 발생하기 시작했다.
OSError: dlopen 으로 시작되는 장문의 에러 메시지에 대해 최초 설치가 잘못되었다고 생각했는데, 알고보니 전혀 다른 이유에서 발생한 에러여서 정리해본다.
일단 현재 설치된 anaconda 환경의 python에 대해 터미널을 열어 아래와 같이 입력해 체크한다.
python -c 'import platform;print(platform.platform())'
macOS-13.0.1-arm64-arm-64bit 와 같은 메세지가 아닌 x64 등의 메세지가 포함되어있다면 일단 anaconda를 삭제하자.
anaconda 삭제를 위한 터미널에서의 명령어는 아래의 순서로 입력하면 된다.
1. anaconda 삭제 프로그램 설치
conda install anaconda-clean
2. anaconda 삭제 프로그램 실행
anaconda-clean --yes
3. anaconda 설치 폴더 삭제
rm -rf ~/anaconda3
마지막으로 .PATH~/.bash_profile 에서 아래 줄의 명령어를 주석처리 한다.
PATH="/home/linuxsagar/anaconda3/bin:$PATH
만약 터미널에서 .bash_profile을 찾을 줄 모른다면, /Users/사용자명/ 에서 shift+cmd+. 을 누르면 숨긴파일이 보이는데 그 중에 있으니 찾아서 직접 수정해도 되고, 딱히 보이지 않거나 생성되지 않았다면 무시하고 넘어가도 된다.
이후 anaconda를 재설치하면 되는데, 아래 링크에서 64-Bit (M1) Installer 를 다운받아 재설치 한다.
https://www.anaconda.com/products/distribution#Downloads
내 경우는 작년 말 AI빅데이터 전공 특수대학원 진학을 준비하며 설치하다보니, 네이티브 arm 이 아닌 INTEL Mac용이 설치되었고, 이로인해 anaconda가 로제타로 돌게 되며, 네이티브 arm으로 돌고 싶었던 lightGBM과의 충돌로 발생한 오류였다.
이후 설치가 완료되면 앞에서 삽질하며 알게된 총 4가지 방법의 lightGBM 설치 방법을 황용해 다시 설치하면 된다.
기억나지 않는다면 아래 링크를 참고하자.
https://lightgbm.readthedocs.io/en/v3.3.2/Installation-Guide.html#macos
큰 산을 넘었고 이제 끝이라 생각했다.
그런데 lightGBM을 불러오자 Kernel이 죽는다. 다시 실행하니 다시 죽는다.
찾아본 해결책은 jupyter notebook이 사용할 수 있는 메모리를 강제로 늘려주는 것과 같은 방법이 있었는데,
다 쓸모 없는 짓이었고, 결국 직접 확인했는데... lightGBM이 원래 쓰고 싶었던 sklearn 의 버전은 1.1.3이었던 것 같다.
하지만 보수적인 개꼰대 anaconda가 제공하는 버전은 1.1.2 였고, 마침 미리 깔려있기도 하니 lightgbm설치시 함께 설치되는 버전에 대해 거부해버린 덕에 발생했던 오류였던 것으로 수차례의 삽질에 의해 확인할 수 있었다.
아래와 같은 순서로 삭제 후 재설치 했다.
!pip uninstall lightgbm #lightGBM 삭제
!pip uninstall scikit-learn #sklearn 삭제
!pip install lightgbm #lightGBM 재설치, 설치시 sklearn 1.1.3도 함께 설치됨
이제 오류없이 돌아간다. lightGBM