14P by neo with xguru 1달전 | favorite | 댓글 2개

LLaMA의 CPU에서의 속도 향상

  • Mozilla의 llamafile 프로젝트에서 84개의 새로운 행렬 곱셈 커널을 작성함
  • F16과 Q8_0 가중치를 CPU에서 사용할 때 llama.cpp에 비해 프롬프트 평가 시간이 30%에서 500% 더 빨라짐
  • ARMv8.2+ (예: RPI 5), Intel (예: Alderlake), AVX512 (예: Zen 4) 컴퓨터에서 가장 극적인 개선이 이루어짐
  • L2 캐시에 맞는 행렬에 대해 MKL보다 2배 빠른 속도를 보임
  • 1,000개 미만의 토큰을 가진 프롬프트에 대해 속도 향상이 가장 잘 작동함

배경

  • llamafile은 2023년 11월 Mozilla와 함께 시작한 로컬 LLM 프로젝트임
  • Cosmopolitan Libc를 사용하여 llama.cpp를 단일 파일 크로스 플랫폼 바이너리로 패키징함
  • AMD64와 ARM64용 6개 OS에서 실행되며 약간의 수정이 이루어짐
  • 핵심 기술을 개선함으로써 사용자에게 최상의 llama.cpp 경험을 제공하고 두 프로젝트가 더 넓은 청중에 다가갈 수 있도록 도울 수 있다고 믿음
  • Mozilla는 이를 위한 리소스를 제공해 왔음

엔터프라이즈 하드웨어에서의 성능 향상

  • 처음 LLM에 관심을 가졌을 때 작업 환경은 회전 디스크, 느린 RAM, AVX2 프로세서, GPU 없이 Alpine을 실행하는 검소한 Hewlett Packard였음
  • llama.cpp가 마음에 들었던 점은 그들이 자신과 같은 사람들을 가장 먼저 신경 썼다는 것임
  • 전임으로 자원 봉사를 시작했고 Slaren과 같은 사람들과 협력하여 mmap() 지원을 도입했는데, 이는 RAM 사용량을 절반으로 줄이면서 가중치를 즉시 로드할 수 있게 해줌
  • 당시 로컬 LLM에 있어 큰 도약이었지만 평가 속도 개선에는 거의 기여하지 못함
  • 추론 코드의 대부분은 Georgi Gerganov 자신이 작성했으며 너무 훌륭해서 결국 1년이 더 걸려서야 개선할 수 있었음
  • 이제 개선했으니 옛 Hewlett Packard에서 얼마나 더 빨라졌는지 살펴보자는 것

취미용 하드웨어에서의 성능 향상

  • 대형 컴퓨터가 없어도 대형 언어 모델을 실행할 수 있음
  • 오늘날 매장에서 구할 수 있는 최고의 개인용 컴퓨터 중 하나는 Raspberry Pi임
  • 저렴한 가격에 우수한 성능을 제공하며 전력 소모량이 매우 적음
  • Raspberry Pi는 5세대를 며칠 전에 출시했는데 이전 모델에 비해 엄청나게 빠름
  • ARMv8.2 dotprod 및 fp16 산술 ISA에 대한 지원도 도입했는데, 이는 LLM에 매우 유용함
  • 이 두 가지 기능만으로도 작년에 llama.cpp가 f16 가중치에 대해 10배의 성능 향상을 달성할 수 있게 해줌
  • 이번 주에는 원래 AVX512를 위해 의도했던 커널을 사용하여 그 위에 2배의 성능 향상을 더 이끌어냄
  • 데이터 센터 장비용으로 설계된 커널이 작고 가벼운 Raspberry Pi에 잘 맞을 거라고는 생각하지 못했지만, 두 CPU 모두 32개의 벡터 레지스터를 가지고 있기 때문에 실제로 딱 들어맞았음

게이밍 하드웨어에서의 성능 향상

  • 게이머는 가치 소비자 중 가장 높은 품질 기대치를 가지고 있어서 게이머를 위해 만들어진 하드웨어는 보통 꽤 훌륭함
  • 기계 학습 업계에서는 게이머를 위한 하드웨어를 전용하여 수년간 번성해 왔음
  • 게이머들의 중요한 기여가 없었다면 AI 겨울은 10년 더 지속되었어야 했을 것임
  • 몇 달 전, 옛 Hewlett Packard를 대체할 수 있는 컴퓨터를 만들어달라고 게이머에게 부탁함
  • Alderlake는 훌륭한 CPU라고 생각하지만 float16 성능을 5배나 쉽게 높일 수 있었던 것으로 보아 널리 오해받고 있음
  • ARMv8.2와 달리 x86 커널은 내부적으로 float32 연산 유형을 사용하므로 반올림 오차를 발생시키지 않고 그렇게 할 수 있었음
  • 이는 더 스마트한 스팸 필터를 만들 수 있음을 의미함
  • spam.sh 셸 스크립트를 실행하면 420밀리초밖에 걸리지 않는데, 이는 Raspberry Pi 5보다 7배 빠른 것임
  • 작은 작업량에 있어서는 CUDA가 시작되기도 전에 이 칩이 마무리할 수 있는 것
  • Alderlake 소유자들은 llamafile이 효율성 코어에서 실행되지 않도록 특별히 주의를 기울인다는 사실을 기대할 수 있음
  • 이는 llamafile이 llama.cpp보다 빠르게 실행되는 데 도움이 되는 것들 중 하나임
  • 또한 LLM을 24시간 내내 실행해도 컴퓨터의 다른 프로그램에 여전히 충분한 리소스가 남아 있음을 의미함
  • llama.cpp는 쓰레드를 lockstep으로 디스패치하므로, 1개의 코어가 다른 코어보다 오래 작업을 수행하면 다른 모든 n개의 코어가 완료될 때까지 busy loop를 수행해야 했을 것임
  • 이 마이크로프로세서의 가장 큰 특징은 Cosmopolitan monorepo의 260만 줄의 코드를 얼마나 빨리 빌드할 수 있는지임
  • Hewlett Packard는 항상 64초가 걸렸지만 이 게이밍 컴퓨터는 20초면 됨
  • 원래는 35초가 걸렸는데, 액체 금속과 AI 오버클로킹을 적용하여 더 빨라졌음
  • Alderlake에서 시스템 코드가 매우 빠른 또 다른 이유는 이 CPU 제작 과정에서 해커와 과학자 사이에 격렬한 싸움이 있었고 해커가 이겼기 때문임
  • 앞으로 AVX512에 대해 더 나은 타협점을 마련하기를 바라지만, 이전 모델에 비해 상당한 진전을 나타낸다고 믿기에 이 칩에 대해 전반적으로 매우 만족함

애플 하드웨어에서의 성능 향상

  • 가장 수준 높은 개인용 컴퓨터라면 단연 Mac Studio일 것임
  • 여기서 성능 우위를 차지하는 것은 llama.cpp 개발자들이 가장 신경 쓰는 하드웨어 플랫폼이기 때문에 나에게 더 어려웠고, Stallman의 컴파일러를 사용하기로 한 선택 때문에 애플의 독점 도구 대신 핸디캡을 안고 작업하고 있음
  • M2 마이크로프로세서가 llamafile을 합성 콘텐츠의 급수관으로 만드는 것에 놀라지 않을 것임
  • 애플이 이를 위해 사용한 트릭은 수직 통합을 활용하는 것임
  • Mac Studio를 구입하고 내부를 들여다보면 RAM DIMM을 CPU 안에 넣었다는 것을 발견하게 될 것임
  • CPU가 더 이상 이러한 장거리 전화를 걸 필요가 없기 때문에 토큰 생성과 같은 대기 시간에 따른 작업 속도가 훨씬 빨라짐
  • 그러나 순수한 flop 측면에서 (프롬프트 tok/sec로 측정) M2 Ultra ARM ISA는 내 훨씬 저렴한 Intel 컴퓨터에 비해 30% 더 많은 계산만 노출함을 알 수 있음
  • Metal이나 Accelerate와 같은 독점 프레임워크를 통해야만 더 많은 것에 액세스할 수 있음
  • xcode가 설치되어 있다면 llamafile은 기본적으로 당신과 실리콘 사이에 있는 모든 폐쇄 소스 라이브러리 앞에 서도록 도와주는 작은 스텁 모듈을 컴파일할 것임
  • Mac Studio 구매를 고려하고 있다면 중요한 한 가지는 Windows Executive와 마찬가지로 XNU가 데스크톱을 안정적으로 유지하는 데 정말 좋은 일을 한다는 것이고, 그것은 시스템을 당신으로부터 보호한다는 의미임
  • 이러한 모든 안전 기능 때문에 Mac Studio에서 Cosmo monorepo를 컴파일하는 데 45초가 걸리지만 포크 폭탄을 터뜨려도 Netflix가 단 한 프레임도 건너뛰지 않을 것 같음
  • spam.sh 스크립트도 430ms로 실행되어 Intel보다 느림
  • 그러나 Asahi Linux가 M2의 잠재력을 최대한 발휘할 수 있는 방법을 보았기 때문에 이 중 어느 것도 나를 걱정시키지 않음

전문가용 하드웨어에서의 성능 향상

  • llamafile은 GPU가 부족한 사람들을 돕는 데 큰 관심을 기울이지만 상위 1%에게도 최고 수준의 경험을 제공함
  • AMD Ryzen Threadripper PRO 7995WX는 몇 달 전에 출시되었으며 현재 돈으로 살 수 있는 가장 비싼 CPU임
  • 1만 달러의 비용이 들지만 Zen4 아키텍처를 기반으로 96코어의 AVX512를 얻을 수 있음
  • 두 배의 가격임에도 불구하고 7995WX x86 ISA는 M2 Ultra ARM ISA보다 7배 더 많은 원시 컴퓨팅 성능을 제공하며 거의 동일한 토큰 생성 속도를 보임
  • 이는 384MB L3 캐시 덕분일 가능성이 큼
  • AVX512의 한 가지 장점은 Google의 Gemma 모델이 AVX512에서는 수학 수수께끼를 풀 수 있지만 AVX2에서는 그렇지 않다는 것인데, 더 큰 벡터가 일반적으로 반올림 오차를 줄이기 쉽기 때문임
  • VDPBF16PS 명령은 VNNI 및 ARM dotprod와 유사하게 bf16을 updot하는 데 도움이 됨
  • Mistral 및 TinyLLaMA와 같은 모델은 정식 형식으로 bfloat16을 사용하여 가중치를 배포하므로 bf16에 대한 기본 지원이 좋음
  • bf16을 fp16으로 변환하면 가능한 숫자의 13%만 정확하게 표현될 수 있음
  • 실제로 Mistral 7b가 사용하는 숫자의 99.71%가 해당 13% 중에 있기 때문에 거의 중요하지 않음
  • 그러나 llamafile은 주장되는 비트 수를 최선을 다해 전달

인텔 14600이나 라이젠 5600 같은 중급기에 대한 데이터가 없네요. 라즈베리 파이에서 돌아는 간다는 걸 의도한거 같긴 한데 실사용에는 무리가 있을거 같아 보입니다. 그럼에도 불구하고 로컬 LLM 구동에 필요한 하드웨어 스펙이 점점 내려가고 있다는 것을 위안으로 삼고 싶습니다

Hacker News 의견
  • Fortran SGEMM 구현에 대한 의견:

    • 현대의 Fortran 컴파일러는 추가적인 변경 없이도 AVX와 FMA 최적화를 적용할 수 있음.
    • 루프 언롤링(loop unrolling) 최적화는 컴파일러 플래그(-funroll-all-loops)를 통해 가능.
    • Intel 컴파일러는 사용자의 명시적 요청 없이도 루프 언롤링을 수행.
    • Fortran 77 소스에 병렬화를 추가하는 것은 어려울 수 있지만, OpenMP 구문을 추가하거나 현대 Fortran의 병렬화 구조를 사용할 수 있음.
    • Fortran 77 함수를 과소평가하지 말 것. 플랫폼 특정 세부 사항으로부터 개발자를 해방시키고 컴파일러에게 작업을 맡기는 것이 Fortran의 목적임.
  • cuBLAS 대체에 대한 의견:

    • cuBLAS를 CUDA 내에서 다시 작성하려는 시도로 보임.
    • 다음 단계는 CUDA 의존성을 제거하고 Vulkan이나 Metal 컴퓨트 셰이더를 직접 사용하는 것일 수 있음.
  • LLM(Local Language Model) 실행에 대한 의견:

    • 모든 사람이 최소한의 요구 사항으로도 로컬에서 LLM을 다운로드하고 실행할 수 있어야 함.
    • 이는 인간 지식의 큰 부분을 백업하는 역할을 할 수 있음.
  • 성능 측정에 대한 의견:

    • C++를 사용하여 서브루틴을 정의하는 것을 선호함. C++는 Python보다 세 오더 이상 빠름.
    • 성능 차이를 "무어의 법칙의 연도"로 측정하는 아이디어를 좋아함.
  • 관련 링크 제공:

  • 제목에 대한 의견:

    • 제목이 혼란스러움. 처음에는 모델이 CPU에서 GPU보다 빠르다고 주장하는 것으로 오해할 수 있음.
    • "LLaMa on CPU의 성능 개선"과 같이 더 명확한 제목이 좋을 것.
  • MKL-DNN 대비 성능 개선에 대한 의견:

    • 제한된 행렬 크기에 대해 MKL-DNN을 능가하려 했지만 실패한 경험이 있음.
    • CPU에서 이러한 에너지 효율성은 물리적으로 불가능함.
  • LLM 실행에 대한 의견:

    • 큰 컴퓨터 없이도 큰 언어 모델을 실행할 수 있음.
    • 작은 파라미터 모델을 실행하는 것도 기술적으로 언어 모델 실행에 해당하지만, 대부분의 사람들이 유용하다고 생각하는 기준을 충족하지 못할 수 있음.
  • Pixar의 CPU 사용에 대한 의견:

    • Pixar와 같은 대형 스튜디오가 비용/성능 및 더 큰 RAM 접근성 때문에 영화 렌더링에 CPU를 사용함.
    • 관련 뉴스 링크 제공.
  • AMD Zen4와 AVX512에 대한 의견:

    • 7995WX x86 ISA는 M2 Ultra ARM ISA보다 가격은 두 배지만, 7배 더 많은 원시 컴퓨팅 파워를 제공하며, 토큰 생성 속도도 거의 동일함.
    • 이는 384MB L3 캐시 덕분일 가능성이 있음.
    • Zen4에서 LLaMA를 이전보다 2.8배 빠르게 실행할 수 있게 하는 작업을 수행함.