기본 콘텐츠로 건너뛰기

라벨이 셔틀콕인 게시물 표시

[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 ...

[FastAPI] uvicorn, hypercorn에서 worker 여러개 띄우기 (feat. 배드민턴 셔틀콕 추천)

안녕하세요. 클스 입니다. 오늘은 FastAPI에 여러개 worker를 실행하는 것을 해보려고 합니다. 많은 요청을 처리하기 위해서 worker를 해주면 좋습니다. worker의 계산은   2 x number_of_cores +1 이 적절하다고 합니다. 좀더 정확하게 산출해보려면 아래와 같이 계산하면 됩니다. number_of_workers = number_of_cores x num_of_threads_per_core + 1 MacOS의 터미널에서 $ sysctl -n hw.packages ==> MacOS에 장착된 cpu socket 수 $ sysctl hw.physicalcpu hw.logicalcpu ==> cpu의 core 수, 총 thread 수    num_of_threads_per_core(core당 thread 수) = hw.logicalcpu / hw.physicalcpu $ sysctl -n hw.ncpu 혹은 ==> core 수 $ sysctl -n machdep.cpu.thread_count ==> core 수 uvicorn과 hypercorn으로 실행하는데 --reload 옵션이 있으면 --workers는 무시되고 1개만 뜹니다. 그리고 reload process가 1개 실행 됩니다. 참고로 FastAPI 공식 문서 에서는 worker를 띄울때는 uvicorn 보다는 gunicorn을 사용하는게 좋다고 합니다. 그래서 저는 hypercorn을 많이 사용합니다. # uvicorn ```sh $ APP_ENV=dev uvicorn app:app --host "0.0.0.0" --port "8001" --reload $ APP_ENV=dev uvicorn app:app --host "0.0.0.0" --port "8001" --workers 4 ``` # hypercorn ```sh $ APP_ENV=dev hypercorn app:app --...