GN⁺: LLaMa.cpp가 어떻게 가능할까?
(finbarr.ca)- LLaMa 추론 코드를 순수 C++로 재작성한 LLaMA.cpp 덕분에 Pixel5, M2 맥북프로, Raspberry Pi 등 다양한 하드웨어에서 실행 가능
- 대형 모델이 일반적으로 비싼 GPU를 필요로 하는데, 이것이 어떻게 가능할까?
- GPU는 그들의 큰 메모리 대역폭과 계산 능력 때문에 딥러닝에 유리하지만, 메모리 대역폭이 종종 추론의 병목이 됨
- 실제 계산을 위해서는 HBM 메모리(RAM)에서 온칩 메모리로 옯겨야 하기 때문
- LLaMa 가중치를 위한 램 사용량에 있어서 Quantization(양자화)가 중요함
- 정밀도를 낮추면 모델을 메모리에 저장하는 데 필요한 메모리 양을 획기적으로 줄일 수 있음
- 양자화를 통해 모델을 저장하는 데 필요한 메모리 양을 줄여 표준 데이터센터 GPU 및 고급 소비자 GPU에 메모리에 맞출 수 있게 함
- 메모리 대역폭은 트랜스포머의 샘플링과 관련된 거의 모든 작업에서 제한 요인임
- 양자화 등과 같은 방법으로 메모리 요구사항을 줄이게 되면 훨씬 쉽게 서빙이 가능
- 이게 distllation 이나 "더 작은 모델들을 더 길게 훈련"하는 또 다른 이유임
로컬머신에서 LlamaCpp 로 llama2를 불러와 임베딩 테스트를 해봤습니다.
HN의 첫번째 댓글이 유용하네요
"궁금해하시는 분들을 위해 말씀드리자면, 모델을 정량화할 때 비용이 발생합니다.
https://oobabooga.github.io/blog/posts/perplexities/기본적으로 정확도가 약간 떨어지고 이상한 답변이 나올 수 있으며 예상을 벗어나거나 환각을 일으킬 가능성이 높아집니다. 하지만 매개변수가 많을수록 품질 손실은 줄어듭니다. 따라서 모델 크기가 매우 큰 경우 그 차이는 무시할 수 있을 정도입니다. 또한 이것은 추론에 드는 비용일 뿐입니다. 훈련은 완전히 다른 문제이며 훨씬 더 많은 파워가 필요합니다.
그럼에도 불구하고 우리는 하나의 서버 랙에서 GPT3 수준의 성능을 보고 있습니다. 불과 1년 전만 해도 이러한 AI는 말 그대로 마법과도 같았고 대규모 데이터센터에서만 실행할 수 있었던 것을 생각하면 대단한 성과입니다. 대역폭과 메모리 크기는 아마도 제 무식한 생각으로는 원시 컴퓨팅보다 늘리기가 더 쉬울 것이므로 곧 실제로 "스마트"한 장치를 갖게 될지도 모릅니다."
Hacker News 의견
- 모델을 양자화하는 비용에 대한 기사, 이로 인한 정확도 손실 및 비정상적인 반응 가능성. 그러나 모델의 매개변수가 많을수록 이 손실은 덜 중요해짐.
- GPT3의 뛰어난 성능을 강조하는 기사, 이제 단일 서버 랙에서 작동 가능, 이는 작년 대규모 데이터 센터가 필요했던 AI에 비해 큰 개선.
- 토큰 생성이 직렬이며 대역폭에 제한되지만, 프롬프트 삽입은 그렇지 않고 512+의 배치에서 실행 가능하다는 내용을 지적하는 텍스트.
- Llama.cpp는 이제 복잡도에 크게 영향을 미치지 않는 ~4비트 양자화를 가짐. Q6_K는 FP16과 거의 같은 복잡도를 가지지만 훨씬 작음.
- Llama.cpp의 진정한 마법은 모델 분할로, 작은 이산 GPU가 프롬프트 삽입과 모델 추론의 일부를 완전히 오프로드할 수 있게 함. 이것은 생성적 AI 영역에서 독특함.
- GPU 백엔드(OpenCL, Metal, CUDA, 곧 ROCm 및 Vulkan)는 Llama.cpp를 실행하는 데 선호되는 방법. 이들 없이는 데스크톱에서 70B를, 또는 16GB RAM이 있는 노트북에서 33B를 실행하는 것은 불가능.
- Go, Python, 그 외 런타임과의 확장성이 용이함으로써 프로젝트가 칭찬받음. 이를 이용해 Go로 여러 모델을 끌어오고 실행하며, REST API에서 제공하는 도구가 만들어짐.
- AVX2가 있는 현대 CPU에서 추론을 실행하는 것은 GPU보다 느리지만, 단일 긴 연속적인 RAM 영역을 가질 수 있다는 이점을 제공. 그러나 4비트로 양자화하고 x86_64 CPU에서 fp32 이외의 것으로 추론을 실행하는 옵션이 없다는 것은 큰 단점.
- 기사에서는 단일 Pi4 8gig에서 13B 데이터셋, 세 개의 pi4 노드에서 65B 데이터셋의 성공적인 복제를 언급, 이 기법의 접근성을 보여줌.
- 기사는 대기 시간 숫자를 논할 때 단위를 대충 다루는 것에 대해 비판받음.
- 기사는 대부분의 작업 부하가 메모리에 제한되어 있을 때 칩 제조업체가 칩에 많은 기능 단위를 포함하는 이유에 대해 질문을 제기함.
- 기사는 Hacker News 외부에서 흔히 찾을 수 없는 독특한 내용에 대해 칭찬받음.
- 텍스트는 메모리 제한 토큰 생성의 트랜스포머 디코더에서의 한계를 논하고, 미래의 하드웨어 친화적 모델을 기대함.
- 기사는 특수 하드웨어가 중요한 메모리 대역폭 병목 현상을 고려하여 왜 그런 방식으로 설계되었는지, 그리고 소프트웨어 패러다임 변화가 이 균형을 바꿀 수 있을지에 대해 의문을 제기함.