데이터분석

M1 맥북 텐서플로우, 파이토치 2.0, 머신러닝/딥러닝 작업

uncoolpark 2023. 11. 23. 00:49

안녕하세요, 저는 m1 맥북 에어, m1 Max 맥북 프로, Colab t4를 데이터 분석, 머신러닝 용도로 사용하고 있습니다. 

 

M3 칩 기반 맥북의 국내 출시가 코 앞으로 다가오면서 많은 분들이 맥북 구입을 고려하고 계실텐데요.

 

애플 실리콘 그러니까 M1칩 출시이후로 국내에서도 판매 비중이 많이 늘었다고 하더라고요. 

 

저 또한 처음 데이터 분석에 입문했던게 M1맥북에어와 함께였어서 애플 실리콘의 출시와 텐서플로우, 파이토치 등 머신러닝/딥러닝에 사용되는 프레임워크들이 이제는 정말 m 칩 기반 맥북에서도 정말 잘 작동하고, 충분히 nvidia gpu가 장착된 윈도우 노트북과 비교할만하다고 생각합니다. 

 

레딧을 보다가 잘 정리된 댓글이 있어서 번역하여 남겨봅니다. 

 

https://www.reddit.com/r/MachineLearning/comments/17ky0g6/macbook_pro_m3_for_llms_and_pytorch_d/?rdt=41398

 

From the MachineLearning community on Reddit

Explore this post and more from the MachineLearning community

www.reddit.com

 

질문자는 M3 맥북을 LLM 및 파이토치 용도로 구매하기를 고려하고 있습니다. 

 

특히, 

- 긴 배터리 타임 

- 16인치 화면 

- 듀얼 외장 모니터 지원

- 도커 이미지를 쓰는 소프트웨어 작업 

을 포함시켜서 M3 pro 36gb ram 모델을 구매하려고 합니다.

 

이에 달린 댓글은 다음과 같습니다. 

 

난 H-index 18 (논문 인용/발표 비율) ML 사이언티스트이면서 맥과 엔비디아 gpu 모두 써봤음.

 

현재 M1 Max 6000 Ada Lovelace (4090 전문가용 버전) 라이젠 9 5950x 장착된 워크스테이션을 사용중임.

 

애플 실리콘이 처음 나왔을 때는 호환성에 있어서 많은 문제가 있었지만 현재는 파이토치와 텐서플로우 애플 실리콘 (M칩에서) 매우 작동함.

 

연구실은 A100 서버들도 있음.

 

요즘 주로 mps (metal performance shader: m칩에 들어간 gpu 프레임워크) 통해 파이토치를 돌리고 딱히 이슈는 없음.

 

개인적인 spatial-temporal 혹은 비전 관련 테스트에서 M1 Max 6000 ada 거의 절반 정도로 빠름 ㄷㄷ. (M1 Max GPU 35와트를 쓰는 생각하면 엄청난 겁니다. ; 6000 ada 300와트까지 사용).

 

M1 Pro, 16기가 맥도 있는데, 님이 고려하고 있는 모델과 비교하는 것도 ㄱㅊ을 거.

 

M1 Max 절반 정도로 느린 속도로 같은 코드를 돌리고요, GPU코어나 GPU 렌더 용량을 조절하는 같음.

 

M3 Max 업귿레이드 하는 것도 고려중이고, M3 Max M1 Max보다 혹은 M2 Ultra 비슷할 정도로 metal 성능이 나오는 같고요, 이건 ML에서 Ada 비교할만한 수준.

 

 

또한, 우리는 전력 사용량을 powermetrics 도구를 통해 체크 하는데, 모델을 학습시킬 GPU 사용되지만, 애플 뉴럴 엔진은 학습 동안 0와트를 씀. 생각엔 ANE 어도비나 다빈치의 AI 기능처럼 프로덕션 단계의 앱들을 추론할 때만 사용되는 듯?

 

RAM: 같은 GPU 가용 메모리에서 맥은 전문가용 엔비디아 그래픽 카드보다 비용 효율적이며 맥은 엔비디아보다 많은 메모리를 활용할 수 있어. 2 동안 사용한 M1 Max 64gb 갖고 있고 당시에 살때 어떤 PCIe 그래픽 카드의 램도 근처에도 못갔음, 가장 근접했던 모델은 A6000 Ampere 48gb 모델이고 이건 맥북보다 훨씬 비쌌음. 근데 다른 프로그램을 돌리지 않을 때도 Os CPU에서 돌아가는 데이터로더들이 5-8gb 사용한다는 알고 있어야 함.

 

맥북에 파이토치를 설치하는 코드 줄이면 되고 cudnn 이나 cuda 버전과 씨름할 필요 없이 애플은 mps 관한 모든 걸 다 업데이트 해놓음.

 

가끔씩 같은 코드를 cuda mps에서 돌려보는데, cuda 비교해서 가지 사소한 문제들을 확인함.

  1. 만약 다른 사람의 코드를 복붙할 코드가 cuda 위해 하드 코딩 되었다면 그걸 지우는데 시간을 할애해야 함. 하지만 cuda 코드는 프레임워크 수준 api이며 (tf torch) 하드웨어 엑셀러레이터 역할일 뿐임.
  2. 같은 코드 상에서 mps 이상하게 loss 보여서 cuda 그대로 복붙할 수가 없었고 가끔 loss 값이 mps에서보다 많은 에폭-변동을 먹음. 아주 가끔 mps nan loss였는데 이건 있었고 같은 코드에서 다시는 발생하지 않았음. 그렇지만, 난 매우 깊은 수준의 ML 작업중이고 자주 loss 함수를 커스텀하거나 자체 학습 루프를 만들기도 함. 내 생각에는 현재 mps float32 지원하고 cuda 기본적으로 float64라서 그런 같음.
  3. Mps/cuda 상관 없이 일반적인 데이터사이언스에서 중요한 수천개의 작은 파일로 수백개 짜리 데이터 셋을  zip/unzip 하고 싶다면, 윈도우 pc (16코어 라이젠9!) 맥북을 배터리로 돌릴 때보다 10 이상 걸림. 이해할 없지만 팩트.

 

LLM 내 영역은 아니지만 Bert같은 기초적인 것들은 아래의 포스팅을 한 번 보샘. cuda에서는 엄청난 메모리를 쓰는데 36gb 맥에서는 딱히 문제가 없을 거 ㅇㅇ.

 

하지만 최신 LLM meta Llama 같은 것들은 모델 자체만으로 13gb 쓰는 작은 버전들에 대해서는 모름

 

맥을 팔려고 하는게 아니고, 위에서 말한 성능들과 님의 예산을 바탕으로 PC 시스템을 고려할 수도 있음. 있는 GPU 6000 Ada 비교해서 성능 스케일러를 확인해봐야 함. M3 pro 16코어 GPU M1 Max 비교해서 - 확실하게 확인한 아니지만 70~80% 정도 성능을 같은데? 벤치마크를 보면. 그러니까 만약 6000 Ada 35%보다 나은 GPU라면 M3 pro 비해서 학습 시간이 빠를 거임.

 

 

어쨌든 맥북은 다른 PC들보다 앞서 있긴 합니다 ( PC게이머이기도 하니까 편향된 의견은 아님). 16인치 컴퓨터에서 GPU 풀로 쓰는 모델 학습 과정 동안 그냥 대기중인 윈도우 노트북 보다 조용함 ㅋㅋ. - 거리정도에 있는 팬보다 숨소리가 잘들림. 디스플레이 또한 완벽하고. 배터리는 엄청나게 오래. 밤새 학습을 돌려놓을 원치 않은 자동 업데이트를 일도 없음. 하지만 맥에는 아직 게임들이  많이 없음. (아직) 그리고 ARM 아키텍처에 대해서 괜히 불안해 할 필욘 없음. 요즘 ML 사이언티스트들이 사용하는 것들 중에 애플실리콘에서 네이티브로 돌아가는 없으니까. 

 

 

구글 코랩 t4와 맥북프로 m1 max 파이토치 2.0 성능 비교