기본 콘텐츠로 건너뛰기

[2023-10-13] mac intel, M1, M2에 tensorflow GPU 사용하도록 설치

[2023-10-13] mac intel, M1, M2에 tensorflow GPU 사용하도록 설치 (feat. 셔틀콕 D3)


안녕하세요. 클스 입니다.

2023년 10월 초에 구글에서 tensorflow 2.14 버전을 출시했습니다.

apple mac intel 칩이 장착된 2020년 이전 생산된 맥북들이 많습니다.
저도 2019년 맥 프로를 사용하고 있습니다.
워낙 nvidia가 cuda를 기반으로 머신러닝을 잘하는데, 안타깝게도 맥은 radeon 을 사용합니다.
2012년까지는 애플도 nvidia를 사용했다가, 발열로 인한 리콜을 한다음 radeon으로 변경한듯 싶습니다.

그 후로 머신러닝이 중요해지면서 GPU를 사용해야 하는 장비에는 nvidia 를 필수로 장착합니다.

아쉽게도 맥은 사용이 불가했었고, 일부 사람들이 맥에 장착된 radeon의 gpu를 사용할 수 있게 하려고
노력했습니다.

그 결과 지금은 metal 플러그인을 통해 지원이 가능해졌습니다.

그런데 버전 호환에 조합이 잘 필요하더군요~

그리고 nvidia의 독주를 막기위해 여러 회사의 gpu에서 동일하게 코딩이 가능하도록 언어를 개발하는
회사도 있습니다. 언어는 mojo 라고 합니다. 아래 유투브 링크 걸어 두었어요~

환경

- mac intel, mac m1, m2
- python 3.11.5 

호환성


1. Intel MacOS 에 tensorflow gpu 사용하기


   - tensorflow 2.12 버전만 tensorflow-macos가 지원한다.

   $ pip install tensorflow-macos 
     tensorflow 2.12 버전이 설치된다.
   $ pip install tensorflow-metal  

(py311) [~/projects/tf]$ pip install tensorflow-metal
Collecting tensorflow-metal
  Obtaining dependency information for tensorflow-metal from https://files.pythonhosted.org/packages/52/56/8373f5751011304a346f07e5423e69f809b626989d2541ae9e816ae7ced2/tensorflow_metal-1.1.0-cp311-cp311-macosx_12_0_arm64.whl.metadata
  Downloading tensorflow_metal-1.1.0-cp311-cp311-macosx_12_0_arm64.whl.metadata (1.2 kB)
Requirement already satisfied: wheel~=0.35 in /Users/keulstar/.pyenv/versions/3.11.5/envs/py311/lib/python3.11/site-packages (from tensorflow-metal) (0.41.2)
Requirement already satisfied: six>=1.15.0 in /Users/keulstar/.pyenv/versions/3.11.5/envs/py311/lib/python3.11/site-packages (from tensorflow-metal) (1.16.0)
Downloading tensorflow_metal-1.1.0-cp311-cp311-macosx_12_0_arm64.whl (1.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 18.3 MB/s eta 0:00:00
Installing collected packages: tensorflow-metal
Successfully installed tensorflow-metal-1.1.0

   $ pip freeze | grep tensorflow
   
      tensorflow==2.12.0
      tensorflow-estimator==2.12.0
      tensorflow-io-gcs-filesystem==0.34.0
      tensorflow-macos==2.12.0
      tensorflow-metal==1.1.0

2. M1,M2 MacOs에 tensorflow gpu 사용하기

  
   - tensorflow 2.12 이후 버전에서 tensorflow-macos가 지원한다.
      tensorflow 2.14 버전이 기본으로 된다. intel 에서는 tensorflow-macos==2.14.0 을 설치하면
      지원하지 않는다고 설치가 안된다.

   $ pip freeze | grep tensorflow
      tensorflow==2.14.0
      tensorflow-estimator==2.14.0
      tensorflow-io-gcs-filesystem==0.34.0
      tensorflow-macos==2.14.0
      tensorflow-metal==1.1.0


소스 및 실행 결과

tf1.py 소스를 작성한다.

import tensorflow as tf

cifar = tf.keras.datasets.cifar100
(x_train, y_train), (x_test, y_test) = cifar.load_data()
model = tf.keras.applications.ResNet50(
include_top=True,
weights=None,
input_shape=(32, 32, 3),
classes=100,)

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5, batch_size=64)


$ python tf1.py

리소스 모니터로 GPU 사용률을 확인한다. 처음에는 CPU가 많이 사용되다가, 데이터 로딩을 마치고
학습에 들어가면 GPU를 사용한다. 대략 CPU를 사용하는 것보다는 최소 20배 빠른듯 하다






참고로 제 경우는 맥 스투디오 울트라 최고 사양에서 3090과 비슷하다고는 하는데,
실제 돌려보니 80% 정도 성능 처럼 보입니다.

이만 클스 였습니다.




셔틀콕 추천드려요. 대한민국 배드민턴 동호회 공식 셔틀콕 입니다.

배드민턴 셔틀콕 에이스 D3 콕 ACE 1박스 25타 300개입 거위 깃털 2단 코르크 동호인용 경기용 대회용 배드민턴공 공인구 배린이 방과후, 1개  

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다


즐턴 하세요~

감사합니다.

댓글

이 블로그의 인기 게시물

[quaser.dev][2014-09-14] 윈도우즈(10, 64bit)에 개발환경 설정하기

[quaser.dev][2014-09-14] 윈도우즈(10, 64bit)에 개발환경 설정하기

[2024-10-19] iPhone, iPad에서 ChatGPT로 PDF 생성시 한글 깨짐 해결 방법

iPhone, iPad에서 ChatGPT로 PDF 생성 시 한글 깨짐 해결 방법

[2025-04-16(수)] OpenAI gpt-4.1 시리즈 발표, Anthropic Claude에 대한 생각

OpenAI gpt-4.1 시리즈 발표, Anthropic Claude에 대한 생각 안녕하세요. 클스 입니다. 4/15일자로 openai가 gpt-4.1 시리즈를 발표 했습니다. 현재는 api로만 사용가능합니다. 점차 웹/앱 사용자에게 오픈 될거라 생각 됩니다. 비용상 문제로 4.1-mini, nano를 사용해서 chatbot을 만들어 보고 있습니다. 4o 시리즈 보다는 확실히 빠르고, 답변의 정확도는 올라간 것 같습니다. 앤트로픽 클로드와 비교를 많이 하는데, 업무 시스템 혹은 AI 솔루션을 개발하는 입장에서는 어떤 생태계를 제공하는가가 주요한 결정 입니다. AI관련 인력을 충분히 보유한 회사의 경우는 어떤걸 사용해도 좋을 결과를 가지겠지만 일반적인 챗봇 개발 절차를 보면 다음과 같이 볼 수 있습니다. 1. 문서를 준비한다. 대부분 pdf, text, markdown 2. 문서를 파싱해서 vectordb에 올린다.     - 별도 벡터디비 구성 필요. 어떤 db를 선택할지 고민 필요     - 어떤 Parser를 사용할지, 텍스트 오버래핑은 얼마가 적당한지 고민 필요        (회사의 문서가 워낙 많고, 다양하면 하나하나 테스트 해서 좋은걸 선택하는 것이 어렵다)     - 유사도 측정은 어떤 알고리즘을 써야할지 고민 필요     - llamaindex도 고민해야 함. 3. RAG flow를 만든다.     - langchain을 쓸지, 각 AI 벤더에서 제공하는 sdk를 쓸지 고민 필요       (대부분 락인이 되지 않으려면 langchain을 사용하면 좋지만, 벤더에 특화면 기능 적용이 늦음) 4. 챗봇 UI 앱을 만든다.     - 답변이 text 로 구성되다 보니. 그래프, 이미지등 복합적인 컨텐츠를 재배치 하여 표현하기 상당히 어렵네요. (이건 제가 실력이 모자라서 .. 패스) ...