SiLU와 SoftMax를 2배 빠르게 만드는 새로운 지수 함수, 정확도 완전 유지
(github.com/ggerganov)GGML: CPU용 SiLU 및 Softmax 재작성
주요 변경 사항
- 
벡터화된
expf()함수 도입:- 기존의 
GGML에서 사용하던short[65536]조회 테이블보다 더 정확하게 Softmax와 SiLU를 계산할 수 있게 됨. - 
aarch64와sse2+를 지원하며, 최악의 경우 반올림 오류가 2 ULP임. - 
avx2와avx512구현도 작성되었으나,sse2+fma에 비해 코드 복잡성 대비 큰 이점이 없어 사용하지 않음. 
 - 기존의 
 - 
주요 반응:
- 여러 기여자들이 이 변경 사항에 대해 긍정적인 반응을 보임.
 - 
AMD Ryzen 9 5950X와M2 Ultra에서SOFT_MAX가 약 1.5배 더 빠름. 
 
코드 변경 사항
- 
주요 변경 사항 요약:
- 주석 처리된 
#define제거. - 중복된 5줄을 
ggml_vec_soft_max_f32()로 추출. - 
GGML_SILU_FP16관련 함수 제거. - 
ggml_v_expf()추가. - 
ggml_v_silu()추가. - 
ggml_vec_silu_f32()를SSE2또는__ARM_NEON플래그에 따라 조정하는 전처리기 문으로 조정. 
 - 주석 처리된 
 
성능 개선
- 
벤치마크 결과:
- 
AMD Ryzen 9 5950X와M2 Ultra에서SOFT_MAX가 약 1.5배 더 빠름. - 
AVX2를 포함하면 이점이 1.5배에서 1.9배로 증가. - 
znver4에서avx512를 포함하면 2.1배로 증가. 
 - 
 
추가 의견
- 
기여자 의견:
- 
AVX512를 사용할 때vscalefps를 사용하면 오버플로우와 언더플로우를 적절히 처리할 수 있으며, 체크 및 블렌드를 제거할 수 있음. - 
Skylake-AVX512/Cascadelake에서 성능 향상을 확인함. 
 - 
 
GN⁺의 의견
- 
성능 개선: 이 변경 사항은 CPU에서의 성능을 크게 향상시킬 수 있으며, 특히 
AVX2와AVX512를 사용하는 최신 하드웨어에서 더 큰 이점을 제공함. - 
코드 복잡성: 
AVX2와AVX512구현이SSE2+fma에 비해 큰 이점을 제공하지 않기 때문에 코드 복잡성을 줄이는 것이 중요함. - 하드웨어 호환성: 다양한 하드웨어에서의 성능을 최적화하기 위해 다양한 SIMD 명령어 세트를 지원하는 것이 중요함.
 - 벤치마크: 성능 개선을 확인하기 위해 다양한 하드웨어에서의 벤치마크 테스트가 필요함.
 - 최신 기술 적용: 최신 SIMD 명령어 세트를 활용하여 성능을 극대화하는 것이 중요함.
 
Hacker News 의견
해커뉴스 댓글 모음 요약
- 
20년 전 Hughes 레이더 신호 프로세서 이야기
- Hughes 레이더 신호 프로세서에서 e^x 계산을 최적화한 경험 공유.
 - 32비트 단어의 각 8비트 값에 대해 256개의 e^x 테이블을 사용하여 최종 값을 곱셈으로 계산.
 - 이전보다 5배 빠르게 동작했음.
 - 이 기계는 이제는 구식이지만 당시에는 매우 빠른 처리 속도를 자랑했음.
 
 - 
LLM 추론 속도에 대한 silu와 softmax 개선의 영향
- LLM 추론 속도에 미치는 영향이 크지 않을 것이라는 의견.
 - 대부분의 시간은 행렬 곱셈에 소비됨.
 
 - 
코드 최적화에 대한 감탄
- 복잡한 최적화 작업에 대한 놀라움과 감탄.
 - 기여자가 jart라는 것을 알고 나서 이해하게 됨.
 
 - 
LUT 크기에 대한 의문
- 65536 크기의 LUT가 L1 캐시 전체 크기와 같아 비효율적일 수 있다는 의견.
 - 그러나 확률적 조정으로 인해 잘 작동할 수도 있음.
 
 - 
CPU에서의 llama.cpp와 ggml 비교
- ggml이 tensorflow lite, onnxruntime 등과 비교해 어떤지 궁금해하는 의견.
 
 - 
CUDA 장치에서의 성능 비교
- gguf/llama.cpp가 비배치 추론에서 더 나은지, 아니면 exllamav2+flashattention이 여전히 우세한지에 대한 질문.
 
 - 
LUT 벡터화 가능성
- LUT를 벡터화할 수 있다는 의견.
 - 관련 자료 링크 제공.
 
 - 
빠른 tanh 계산
- 빠른 tanh 계산에 대한 링크 제공.
 
 - 
CPU에서의 llama 성능
- 최적화에도 불구하고 CPU에서 많은 파라미터를 가진 llama가 너무 느릴 수 있다는 의견.