-
딥러닝 하드웨어 담론 (1)machine learning 2024. 11. 15. 19:48
1. Mac-mini cluster for llm inference?
오랜만에 페이스북에 들어갔다 연구자/엔지니어들이 모여 있는 딥러닝 관련 모임인 tensorflow-kr 채널에서 흥미로운 주제를 발견했습니다. 저도 가난한 엔지니어 중 한 명인 터라, 자세하게 들여다보게 되었습니다.

저와 직접적인 친분은 없으시지만 여러 해 전부터 활발한 활동을 하셔서 내적 친밀감(?)이 있으신 분들입니다. apple사의 m 시리즈 칩들은 기본적으로 metal api를 통해 하드웨어 연산가속을 지원합니다. 딥러닝의 컴퓨팅의 근간이 되는 병렬프로그래밍의 매우 큰 줄기인 cuda operation 또한 같은 맥락의 기술이므로 M-Chip 등장 이후의 맥 제품들은 일종의 "꽤 저렴한 가격에 꽤 크게 얻을 수 있는 gpu vram"으로 보여진다고도 할 수 있습니다.
이러한 주장을 쉽게 이해해보기 위해 2024년 11월 기준 최신 mac mini 제품과 nvidia a100 80gb의 제품사양을 간단하게 비교해보겠습니다.
- Apple Mac-Mini M4: 한화 약 ₩2,090,000
- 12코어 CPU / 16코어 GPU, 24GB Memory
- GPU 메모리 대역폭 120GB/s
- VRAM 1GB 당 약 8.7만원
- Nvidia A100 80GB 1EA: 한화 약 ₩15,000,000
- Tensor Float 32(TF32) 156TFLOPS | 312TFLOPS*
- FP16 Tensor 코어 312TFLOPS | 624TFLOPS*
- 인터커넥트: NVIDIA® NVLink® 2개의 GPU를 위한 브리지: 600GB/s ** PCIe Gen4: 64GB/s
- INT8 Tensor 코어 624TOPS | 1,248TOPS*
- BFLOAT16 Tensor 코어 312TFLOPS | 624TFLOPS*
- GPU 메모리 대역폭 1,935GB/s
- VRAM 1GB당 약 19만원
애플 맥시리즈 제품이 당연히 nvidia의 주력제품과 동일한 성능일 수는 없겠지만 그런 부분을 어느정도 포기하고 상대적으로 저렴한 가격에 다량의 vram을 확보하여 frontier 모델을 운영하려는 의도로 생각할 수 있을 것 같습니다.
저도 엔지니어로써 이해가 가는 고민인 것이, 현업에서 사용하는 llm은 대부분 10B 이하의 소형모델이고 이정도의 모델은 개인 사용자의 맥북이나 gpu에서도 충분히 동작하는 사이즈이기 때문입니다. 따라서 10B 이상의 reasoning과 복잡한 task 수행이 가능한 모델은 업무적으로나, 현업종사자들 개인적으로나 적절한(대부분은 무거운) 댓가 없이는 접근하기 힘들다고 할 수 있습니다.
물론 openai, claude, gemini와 같은 유료, api product를 이용하는 방법도 있지만 chatgpt처럼 대화ux 용도로 제한되어지거나, 각 회사의 운영정책에 따라 알 수 없는 이유로 제한을 당하는 경우들이 자주 발생합니다(ai가 오픈소스여야 할 이유)
따라서 머신러닝 업계에 종사하고 있는 분들이라면 "chatgpt급 frontier 모델을 사용료를 내지 않고 운영할 수 있는가"가 큰 화두라고 생각할 수 있을 것 같습니다.
그리고 개인적으로 이에 대해 내린 결론은 "현재로써는 불가능하다" 라고 생각할 수 있겠습니다.
2. Why isn't it suitable?
물론 이론적으로는 넉넉한 vram을 가진 n개의 m-chip mac mini를 이어붙여 클러스터를 만들면 그 안에 모델을 분산로드하더라도 추론용도로 사용할 수는 있을 것 같습니다. 다만 우리가 기대하는 frontier 모델과 같은 빠른 응답속도를 만드는데에는 몇 가지 걸림돌이 존재합니다.
bandwidth

gpu 연산은 단순히 병렬연산뿐 아니라 수없이 많은 데이터 copy-paste 작업 또한 같이 일어납니다. llm의 model weight를 gpu memory에 load하고, feed-forward를 통해 추론값을 생성해내는 작업은 하드웨어적으로 매우 복잡한 절차를 걸치지만 아주 간단하게 생략해본다면 다음과 같은 순서로 정의할 수 있습니다.
- storage → ram 전송
- 저장장치(ssd/hdd)에 있는 모델 가중치 파일을 시스템 ram으로 먼저 로드
- ram → gpu memory 전송
- PCIe 버스를 통해 시스템 ram의 가중치 데이터를 gpu vram으로 전송
- cuda 메모리 할당 및 데이터 이동 발생
- gpu 연산 준비
- 입력 텍스트를 토큰화하고 임베딩으로 변환
- tensor 형태로 gpu 메모리에 배치
- gpu 추론 연산
- cuda 코어들이 병렬적으로 행렬 연산 수행
- attention, feed-forward 등 모델 아키텍처에 따른 연산 실행
만약 처음의 의도대로 맥미니 클러스터를 구성하게 된다면 모델을 sharding하여 로드해야하고, gpu간 통신이 필요하게 되어 병목이 발생하게 됩니다.
nvidia a100의 경우 이미 메모리 대역폭이 비교할 수 없이 크고(1935gb>120gb), gpu 간 통신도 nvlink라는 도구를 통해 잘 최적화(1200gb/s) 되어 있으므로 큰 차이가 있습니다. 맥클러스터 구성 시, 현존하는 맥 데이터버스 케이블 중 가장 빠른 thunderbolt-5의 대역폭은 80gb이므로 추론을 위한 gpu 통신에 큰 도움이 되지 못한다는 사실을 알 수 있습니다.
하드웨어/명령어 최적화
최적화의 차이도 중요합니다. a100은 tf32, bf16, fp16, int8 등 다양한 정밀도를 지원하며, 특히 llm 추론에 주로 사용되는 int8/fp16에서 뛰어난 성능을 보입니다. 반면 m4 chip은 npu에 최적화되어 있지만, llm 특화 가속 기능이나 정밀도 옵션이 상대적으로 제한적입니다.
이러한 명령어 set 지원의 커버리지는 하단에 별도로 기재한 metal api와 cuda capability의 문서를 참고하여 확인할 수 있습니다.
3. 결론
한편, 유틸성과 vram 단순수치에 대한 가성비, 운영에 필요한 전력 등에서는 맥 클러스터가 유리한 부분들이 존재할 수 있습니다. 그러나 아직까지는 llm의 효율성보다는 성능에 더 엄격한 요구사항이 적용되므로 trade-off 할만큼의 가치가 있는 시도인지는 미지수라고 할 수 있겠습니다.
참고자료
- A100 80G Spec: https://www.krinfra.co.kr/product/product_40.asp
- Apple M4 Spec: https://www.apple.com/kr/newsroom/2024/10/apple-introduces-m4-pro-and-m4-max/
- Metal API Supplement Document: https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf
- CUDA Capability 8.0 (applied on A100) Document: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#compute-capabilities
- llm inference benchmark: https://github.com/XiongjieDai/GPU-Benchmarks-on-LLM-Inference
'machine learning' 카테고리의 다른 글
딥러닝 하드웨어 담론 (3) (0) 2024.11.24 딥러닝 하드웨어 담론 (2) (0) 2024.11.16 Personalized LLMs: 개인화된 LLM 만들기 (0) 2024.11.11 LIMA: Less Is More for Alignment 리뷰 (0) 2024.11.02 ai가 오픈소스여할 이유 (2) 2024.10.20 - Apple Mac-Mini M4: 한화 약 ₩2,090,000