RyanKor / 2021-google-ml-bootcamp

Google Machine Learning Bootcamp 2021
13 stars 0 forks source link

[TF Env Set in M1 Error] python 3.8.0 환경에서 scipy가 M1 맥에서 설치가 안되는 상황 & python 3.9.7에서 Tensroflow가 M1 맥에서 설치가 안되는 상황에 대한 대처 #25

Closed RyanKor closed 3 years ago

RyanKor commented 3 years ago

어제 저녁 -> 오늘 오전까지 윈도우의 CPU를 사용해서 딥러닝 훈련을 시켜봤고, epoch이 15번 밖에 안되고 배치 사이즈도 250 밖에 안되는데 해당 코드를 돌릴 때마다 3시간의 시간이 소요되는 말도 안되는 상황을 겪으면서 이건 도저히 시험을 볼 수 있는 환경이 아니다 싶어 결국 다시 M1 맥북으로 돌아와 환경 설정을 하는 것을 진행하게 되었다.

총 소요 시간은 8시간 남짓이고 시도한 것은 다음과 같다.

1. python 3.8.0 환경에서 다음과 같은 환경을 세팅

tensorflow==2.4.0rc
tensorflow-datasets==4.3.0
Pillow==8.2.0
pandas==1.2.4
numpy==1.19.5
scipy==1.7.0

발생한 에러 : scipy를 제외하고 모두 설치되었으나 scipy가 파이썬 3.8 버전에서 M1 맥북을 지원하지 않는 게 가장 큰 문제였다.

로제타2처럼 번역기를 사용해서 설치하는 것도 찾아봤으나 도저히 자료가 없었고, 결국 돌아온 것은 scipy는 아직 3.8 버전에서 M1 Apple Sillicon을 지원하지 않는다는 글들 뿐이었다.

여기서 문득 떠오른 게, "아니, 어차피 정확하게 텐서플로우에서 요구하는 환경만 쓰는 건 절대 아닐꺼고 파이썬 언어 버전을 높이면 설치가 되는 거 아닌가?" 싶어서 찾아보니 M1 맥에 공식적으로 scipy가 지원하기 시작하는 파이썬 버전은 3.9부터라는 것을 알게 되었다.


2. python3.9.7 환경에서 다음과 같은 환경을 세팅

tensorflow==2.5.0
tensorflow-datasets==4.3.0
Pillow==8.2.0
pandas==1.2.4
numpy==1.19.5
scipy==1.7.0

발생한 에러 : 파이썬 3.9 버전을 설치하고 파이참에서 해당 파이썬 버전으로 가상 환경을 다시 조성한 다음에 위 모듈들을 설치하니, 하나도 에러 없이 설치가 되었다.

그런데 설치만 성공했지, 정상적으로 작동한다고는 말 안했다.

텐서플로우 코드 예제를 돌려보니, illegal hardware instruction tensorflow라는 에러를 목격하게 되었다.

찾아보니 인텔 칩이 아닌 반도체 칩에서 작동 안한다는 뜻이다.

즉, 텐서플로우에서 자체적으로 번역기를 사용해서 M1 실리콘 칩을 인식해야하는 상황인 것이다.

그래서 결국 1번째 시도에서 진행했던 tensorflow 2.4.0rc를 설치하고자 했는데,,, 호환되는 버전이 3.8 이다.

scipy를 얻고, tensorflow를 버린 것이다.

이건 도저히 해결이 안되겠다 싶어서 노트북을 누구한테 빌려야되나 싶었는데, 모든 걸 포기한 상황에서 유튜브에 시험 후기를 보는데 하단의 링크를 발견하게 되었다.

(이건 신이 나를 도운 게 틀림 없다)


3. 실제 시험 환경에 대한 영상

텐서플로우 시험을 보는 과정을 담은 유튜브 영상

이 영상을 보면 텐서플로우 시험 응시부터 시험 결과물 제출까지 모든 게 다뤄지고 있다.

보면 .h5 파일을 생성해서 제출하는 방식이다.

심지어 살짝살짝 시험 문제도 보이는데 코세라에서 배운 시험 문항과 거의 동일하다.

즉, .h5 파일을 제출하고 이 모델 파일을 플러그인에서 평가하는 것이지 모듈이 모두 필요한 것은 아닌 것으로 보인다.

다시 말해, 가상 머신에서 GPU를 돌려서 모델 생성 후, .h5 파일로 저장해서 그 코드만 제출해도 된다는 뜻이다.


총평 : 이걸로 오늘 하루의 33% (8시간)를 날렸다.

덕분에 딥러닝 필수 모듈들 중에 M1 맥에서 작동하는 것과 작동 안하는 것에대해 깊이 분석해 볼 시간을 가진 것 같은데, 말이 좋아서 깊은 분석이지 나쁜 말로는 삽질 기가 막히게 한거다.

금요일 시험치를 예정인데 미리 해보길 잘했다.

아, 진짜 구글 측에서 설명 좀 잘 해놓지, 괜히 로컬에서 안해도 되는 고생만 엄청한 느낌이다.