Bongsu

M1 텐서플로(Tensorflow) GPU 가속 및 파이참(Pycharm) 본문

파이참

M1 텐서플로(Tensorflow) GPU 가속 및 파이참(Pycharm)

bmsoo 2023. 7. 7. 14:49

안녕하세요. 이번 포스팅은 제가 반나절 동안 애먹으며 설정했던 M1 tensorflow 설치 및 파이참 연동에 대해 설명하겠습니다.

 

일단 저 같은 경우는 Tensorflow를 이용하여 GPU 가속을 하고 싶음 + Conda 가상 환경과 파이참 연동을 마주하며 문제가 슬슬 생기기 시작하더라구요....

 

제가 겪었던 오류 코드를 쭉 써드리자면

 

1.  tensorflow with ml compute acceleration is only available on macos 11.0 and later.

 

2.  i tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] could not identify numa node of platform gpu id 0, defaulting to 0. your kernel may not have been built with numa support.

 

3.  f tensorflow/c/c_api_experimental.cc:739] non-ok-status: tensorflow::registerpluggabledeviceplugin(lib_handle->lib_handle) status: failed_precondition: 'host_callback' field in sp_streamexecutor must be set.

 

4.  process finished with exit code 138 (interrupted by signal 10: sigbus)

 

 

정도 였는데요 뜰때 마다 진짜 구글링해서 스택오버플로우나 애플 개발자 포럼에 들어가서 오류를 찾던 중 해결법을 발견해서 공유를 좀 드리고자 합니다!

 

각 오류에 대해서 설명을 자세하게 하는 것은 생략하고 개략적으로만 말씀을 드리겠습니다.

 

일단은 이러한 오류가 발생하는 이유는 첫째로 miniforge 가 있을 것 같습니다. 저도 처음에는 miniforge를 설치하지 않아 첫번째 고비가 왔는데 해당 부분은

 

$ brew install miniforge

 

를 통해 엔터를 통해 약관을 읽으시고 동의하시면 성공적으로 설치하실 수 있으실 겁니다.

 

여기서 문제가 발생하셨던 분들은 아래 순서를 따라 와주시면 충분히 해결이 가능하시리라 생각됩니다.

 

두번째 오류의 고비는 대부분 2,3,4번 오류를 마주하실 텐데 이와 같은 원인은 

tensorflow-deps / tensorflow-macos / tensorflow-metal 의 버전 문제였습니다. 각 dependencies 문제로 모듈이 제대로 호출되지 않아 발생하는 문제입니다.

 

아마 해당 오류에 조예가 깊으신(?)분들은

 

https://developer.apple.com/metal/tensorflow-plugin/

을 따라 가상환경도 설정하시고 tensorflow-deps / tensorflow-macos / tensorflow-metal 를 설치하셔서 파이참에 Conda Interpreter 설정을 하셨으리라 예상됩니다.

 

이제 파이참에서 예시 코드를 넣고 model을 만들고자 실행하는데 아마 저러한 오류들이 나와서 속이 답답 그 자체 였으리라 생각됩니다.

 

 

문제를 해결해보도록 하겠습니다!

 

 

https://developer.apple.com/forums/thread/710048

 

저는 이 분의 도움을 받아 글을 작성하고자 합니다.

 

일단 여기까지 오신분들은 conda install tensorflow 를 실행 하면 안된다는 거 충분히 알고계시리라 생각됩니다 :)

 

일단은 가상 환경 부터 새로 만든다는 가정하에 출발하도록 하겠습니다.

 

$ conda create --name tf python=3.8

# 가상환경 활성화 
$ conda activate tf

# 터미널에 (base)가 아닌 (tf)로 뜬다면 가상환경 설정 완료

 

 

가상환경 설정 이후 tensorflow-deps를 설치하겠습니다. 

 

$ conda install -c apple tensorflow-deps

 

 

여기서 가장 중요한 부분이 시작됩니다!! 저희가 설치할 tensorflow-macos 와 tensorflow-metal의 버전은 위에 도움의 말대로

 

tensorflow-macos ==2.10

tensorflow-metal == 0.6.0

 

입니다!!   

여기서 metal 이 GPU 가속을 지원해주게 됩니다. (단, metal 의 경우 공식문서에서 Requirements는 MacOS +12.0 이후 입니다.)

 

이제 위에 친구들을 설치해주도록 하겠습니다. 

 

# tensorflow-macos == 2.10 설치
$ python -m pip install tensorflow-macos==2.10

 

# tensorflow-metal == 0.6.0 설치
$ python -m pip install tensorflow-metal==0.6.0

 

설치가 끝났습니다.

 

자 이제 파이참에서 인터프리터를 설정을 해서 가상 환경을 구축하면 됩니다.

이 부분을 잘 모르시는 분들은 제 이전 글을 참고해시면 될 것 같습니다.

 

2023.07.07 - [분류 전체보기] - 파이참(Pycharm)에 아나콘다(Anaconda) 가상환경 연동

 

이제 예제 코드를 돌려보겠습니다.

아래 코드는 https://developer.apple.com/metal/tensorflow-plugin/

"4. Verify"  부분에 있으니 참고하시면 될 것 같습니다.

https://developer.apple.com/metal/tensorflow-plugin/

 

그렇게 위 코드를 실행해주면

 

 

오류 없이 실행 되는 모습을 보실 수 있습니다 :)

'파이참' 카테고리의 다른 글

파이참(Pycharm)에 아나콘다(Anaconda) 가상환경 연동  (0) 2023.07.07