Low-Bit LLM을 위한 상용 DRAM에서 구현된 매트릭스-벡터 곱셈
(arxiv.org)- MVDRAM은 수정되지 않은 DRAM을 사용하여 저비트 LLM 추론을 위한 GeMV 연산을 가속화하는 시스템임
- DRAM을 GeMV 엔진으로 활용하여 높은 처리량을 제공함
- 기존 PUD 접근 방식의 입력 사전 배열 및 출력 비트 전환 비용을 제거함
- 실험 결과, 저비트 LLM에서 프로세서 기반 구현보다 뛰어난 성능을 보임
- AI 하드웨어의 새로운 가능성을 제시함
MVDRAM: 수정되지 않은 DRAM을 활용한 저비트 LLM 가속
- GeMV 연산은 대형 언어 모델(LLM) 추론에서 중요한 지연 병목 현상으로 남아 있음
- **Processing-Using-DRAM (PUD)**는 DRAM을 GeMV 엔진으로 재활용할 수 있는 잠재력을 가짐
- 그러나 PUD를 LLM 추론 파이프라인에 적용하면 상당한 오버헤드가 발생함
MVDRAM의 혁신적인 접근
- MVDRAM은 데이터 공유 패턴과 수학적 선형성을 활용하여 프로세서와 DRAM을 조율함
- 기존 PUD 접근 방식의 비용을 제거하여 GeMV 연산을 가속화함
실험 결과
- 네 개의 DDR4 DRAM 모듈을 사용한 실험에서 MVDRAM은 저비트(4비트 이하) LLM에서 프로세서 기반 구현보다 뛰어난 성능을 보임
- 최대 7.29배의 속도 향상과 30.5배의 에너지 효율성을 달성함
LLM 추론의 전반적인 개선
- 2비트 및 4비트 양자화 저비트 모델에서 각각 2.18배 및 1.31배의 처리량 개선을 보임
- 에너지 효율성도 각각 3.04배 및 2.35배 향상됨
AI 하드웨어의 새로운 가능성
- MVDRAM은 표준 DRAM을 LLM 가속기로 활용할 수 있는 가능성을 입증함
- AI 하드웨어의 새로운 지평을 열 수 있는 잠재력을 가짐
댓글과 토론
Hacker News 의견들
-
배경 자료로는 in-DRAM compute의 초기 제안 중 하나인 https://users.ece.cmu.edu/~omutlu/pub/in-DRAM-bulk-AND-OR-ie..., 기성 부품으로 한 첫 시연 https://parallel.princeton.edu/papers/micro19-gao.pdf, 구현 도구인 DRAM Bender https://github.com/CMU-SAFARI/DRAM-Bender, 그리고 최근 처리-in-DRAM 정리 논문 https://arxiv.org/abs/2412.19275가 있음
- DRAM 내부 처리는 오래된 아이디어이고, 90년대에도 DRAM 뱅크를 SIMD 기계로 바꾸려는 여러 논문이 있었음
지금 아이디어만큼 영리하거나 발전된 형태는 아니었지만, 결국 이 논문들은 오래된 발상의 최신판에 가까움
- DRAM 내부 처리는 오래된 아이디어이고, 90년대에도 DRAM 뱅크를 SIMD 기계로 바꾸려는 여러 논문이 있었음
-
참고문헌 1번과 3번의 저자 목록이 말도 안 되게 긴 게 눈에 띔
2016년 글 https://news.ycombinator.com/item?id=12469270도 들어 있을 줄 알았고, 2019년 글 https://news.ycombinator.com/item?id=22712811은 실제로 보임
물론 DRAM의 이런 규격 밖 동작, 특히 복사 능력은 악명 높은 버그 https://news.ycombinator.com/item?id=5314959와도 관련 있음
여러 사람이 독립적으로 이런 현상을 보고 “쓸모 있는 동작일지도 모르겠다”고 생각한 듯함- 언젠가는 우리 부서 전체, 델리 직원, 오후 2시에 공원에 있던 사람들까지 전부 기여자로 올려볼 생각임
- 이건 서식 오류처럼 보임
이렇게 저자 목록이 거대하면 보통 첫 이름만 쓰고 나머지는 “et al.”로 처리함
-
“제조사가 지정한 타이밍 매개변수를 의도적으로 위반하는 DRAM 명령을 내려 최대 65,536개의 비트 연산을 병렬로 얻는다”라니, DRAM 트레이닝용 바이너리 블롭에게 한 방 먹이는 느낌임
-
이건 정말 머리가 휘어질 정도로 이상하고, 동시에 멋지게 창의적임
세부 밑바닥까지 파고드는 일이 보상받을 때가 있음. 훌륭함- 이런 동작은 행/열 주소를 다중화한 초기 DRAM부터 존재했음
1973년 Mostek MK4096도 아마 가능했을 텐데, 누군가 알아내기까지 반세기쯤 걸린 셈임
- 이런 동작은 행/열 주소를 다중화한 초기 DRAM부터 존재했음
-
DRAM 자체에서 행렬 연산을 한다는 건가? 미쳤지만 흥미로움
- 맞고, 놀랍게도 타이밍 매개변수를 의도적으로 위반해서 표준 RAM에서도 이걸 해냄
DRAM 이용 처리(PUD)는 DRAM의 고유한 아날로그 동작 특성을 활용해 메모리 배열 내부에서 고도로 병렬적인 비트 직렬 계산을 가능하게 함
기존 연구는 상용 기성 DRAM도 하드웨어 수정 없이 타이밍 매개변수를 의도적으로 위반하면 PUD 기능을 달성할 수 있음을 보여줬음
핵심 연산은 RowCopy와 majority-of-X(MAJX) 두 가지임. RowCopy는 비트라인 프리차지가 끝나기 전에 PRE 뒤에 곧바로 ACT 명령을 내서 같은 하위 배열 안의 다른 행으로 데이터를 옮기며, 한 행의 모든 셀에 동시에 영향을 주므로 프로세서가 중재하는 데이터 이동보다 약 100배 빠름
MAJX는 같은 비트라인을 공유하는 X개 셀을 동시에 활성화해 다수결을 수행하며, 상용 DRAM에서는 지연 없이 ACT, PRE, ACT를 빠르게 연속 발행해 구현함. 이로써 2~32개 행을 동시에 활성화할 수 있고, 65,536개 열을 가진 하위 배열 병렬성을 활용하는 PUD의 기본 계산 단위가 됨 - 어떤 것에서든 LLM 추론을 돌리는 게 다음 “Doom이 돌아간다”가 될 듯함
- 맞고, 놀랍게도 타이밍 매개변수를 의도적으로 위반해서 표준 RAM에서도 이걸 해냄
-
하드웨어 세계에서도 제조사가 언젠가 고칠 수 있는 버그를 이용하는 위험이 있나?
소프트웨어에서는 어떤 기능을 만들거나 다른 버그를 고치려고 플랫폼 버그에 기대는 건 나쁜 생각임
15년 뒤 그 버그가 고쳐질 수 있고, 그러면 시스템이 폭발하는데 아무도 이유를 모를 수 있음
최근에도 비슷한 논의가 있었던 것 같은데, 아마 어떤 C 함수의 정의되지 않은 동작 관련이었던 듯함- 저지연 고빈도매매에서는 특히 네트워크 카드에서 이런 일이 생김
특정 네트워크 카드에 버그가 있거나 기능 조합이 흥미롭게 동작해서 거래 회사에 유리해지는 경우가 있음
이런 버그나 기능은 버그 제거, 혹은 더 큰 시장에서는 필요 없다고 판단되는 이유로 사라지기도 함. 그래서 회사들이 특정 모델의 남은 물량을 전부 사들이려 하기도 함 - 이런 건 보통 상호운용성 테스트 범주에 들어가지만, 대개 하드웨어가 아니라 펌웨어로 완화함
최악의 경우 15년 전 사라진 유명 공급사의 하드웨어와도 동작하게 만들어야 함. 큰 고객들이 그 장비를 15년 동안 문제없이 써왔고, 새 장비를 꽂았을 때 안 되면 당신 하드웨어를 문제로 볼 것이기 때문임
통신 장비에서는 특히 중요해서, 규격을 따르지 않은 공급사들을 위한 온갖 특수 처리가 들어감. 그리고 다른 사람의 시스템을 망가뜨리지 않도록 그런 특수 처리를 펌웨어에 계속 남겨야 함
구형 장비, 이미 사라진 회사의 장비, 현재 경쟁사 장비가 벽 전체를 채우고 로봇 팔이 케이블을 꽂아대는 모습을 상상하면 일부 하드웨어 검증 연구소가 어떤지 감이 옴
메인보드 제조사 펌웨어도 특정 CPU, 칩셋 등을 위한 특수 처리로 가득함 - C/C++의 정의되지 않은 동작은 아주 오래전부터 논의돼 왔음
최적화 컴파일러와 결합했을 때의 영향이 더 넓은 대중에게 알려진 건 2010년쯤, 어쩌면 2013년쯤으로 보이며 이제 12년이 넘었음
이 논문은 버그에 의존하자는 내용이라기보다, DRAM으로 무엇이 가능할지 보여주고 그 기능을 표준화하길 바라는 쪽에 가까움
- 저지연 고빈도매매에서는 특히 네트워크 카드에서 이런 일이 생김
-
일반 행렬-벡터 곱셈(GeMV)이라니, 수학을 잘하는 편은 아님
3D 수학 수업에서 쿼터니언을 배울 때 그래픽 개발에서 행렬 계산의 역사를 잠깐 다뤘음. 그 수업은 처음에 떨어졌으니 정말 수학형 인간은 아님
이해하기로는 쿼터니언이 행렬만큼 거의 정확하면서 계산 복잡도는 훨씬 낮아서 인기를 얻은 것 같음
행렬 대신 쿼터니언으로 LLM을 만든 시도가 있나? 아니면 쿼터니언 최적화는 실시간 그래픽에서 더 유용한 건가?- 행렬은 선형 함수를 표현하는 방식임. 예컨대 덧셈과 스칼라 곱과 잘 맞는 함수임
그중 특정 부분집합은 3차원 공간의 회전을 설명하는 데 쓸 수 있고, 쿼터니언은 논쟁의 여지는 있지만 이걸 더 잘할 수 있음
하지만 쿼터니언으로 임의의 선형 함수를 설명할 수는 없어서 LLM에는 맞지 않아 보임 - 쿼터니언은 고정된 4차원만 가짐
신경망에는 훨씬 더 많은 차원이 필요함 - 여러 개념을 섞고 있는 것 같음. 쿼터니언은 복소수와 같은 범주에 있음
행렬로 표현할 수 있고, 실수가 아니라 쿼터니언을 원소로 쓰는 행렬에는 QDNN 같은 괜찮은 활용도 아마 있을 것임
내 경험상 LLM 같은 대규모 구조에서는 물리학이나 3D 그래픽처럼 더 정교한 스칼라 타입으로 표현할 진짜 이점이 없는 한, 더 단순한 형태가 성공하기 쉬움 - 컴퓨터 그래픽에서 쿼터니언의 주요 이점은 짐벌 락이 생기지 않는 방식으로 회전을 표현하는 데 있다고 이해했음
그 밖에도 그런 회전 표현은 차원을 추가할수록 쿼터니언이 그다지 잘 확장되지 않음
복소수는 2차원 공간의 복소 표현이고, 쿼터니언은 3차원 공간의 복소 표현이며, 4차원으로 가려면 8개 원소를 가진 옥토니언이 필요함
- 행렬은 선형 함수를 표현하는 방식임. 예컨대 덧셈과 스칼라 곱과 잘 맞는 함수임
-
1997년의 원래 Intelligent RAM(IRAM) 자료를 인용하지 않은 건 조금 비과학적으로 보임
https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=iram...- 더 이른 자료도 있을 가능성이 크다고 봄
다만 IRAM은 메모리 칩에 ALU를 더하는 메모리 근처 계산에 가까워 보이고, 메모리 내부 계산은 메모리 배열 자체를 쓰는 쪽임
공정하게 말하면, 엄청난 벡터 길이를 쓰는 딥러닝이 등장하기 전에는 메모리 내부 계산의 매력이 훨씬 덜했음. 그래서 사람들은 연산을 더 세밀하게 제어할 수 있는 방식을 만들려 했던 듯함
- 더 이른 자료도 있을 가능성이 크다고 봄
-
행렬 곱셈과 어쩌면 다른 연산들도 전통적인 CPU에서 DRAM으로 옮겨가고, 일부러 하드웨어 지원까지 붙는 걸 기대할 수 있을까?
이런 처리 위치 이동이 Samsung 같은 회사에 이점을 줄까? NVIDIA 같은 회사는 어디에 서게 될까?- 질문이 좀 재미있는 게, Apple이 다음 세대 iPhone에 LPDDR6-PIM을 쓸 예정임
https://www.patentlyapple.com/2024/12/apple-plans-to-transit...
- 질문이 좀 재미있는 게, Apple이 다음 세대 iPhone에 LPDDR6-PIM을 쓸 예정임
-
재미있는 해킹임. 논문을 읽지는 않았지만 이런 연산은 열적으로 불안정할 것 같음
그러면 LLM 추론 결과가 주변 온도에 따라 달라질 수도 있겠음 :-)- 맞지만 영향은 조금뿐임
자세한 내용은 논문을 읽거나 “temperature”로 검색해 보면 됨
- 맞지만 영향은 조금뿐임