Hacker News

Llama.cpp 30B는 이제 6GB의 RAM으로만 실행됩니다.

소식봇 2023. 4. 1. 12:01

이 문서는 가중치 로딩 속도를 10~100배 빠르게 하는 파일 형식 변경에 대한 풀 리퀘스트입니다. 파일 형식을 수정하여 읽기() 또는 복사할 필요 없이 가중치를 메모리로 직접 mmap()할 수 있도록 변경했습니다. 이렇게 하면 커널이 추론 프로세스에서 파일 캐시 페이지에 직접 액세스할 수 있고 파일 캐시 페이지가 퇴거될 가능성이 훨씬 줄어듭니다. 새로운 파일 형식은 LLaMA 7b와 같은 단일 파일 모델과 LLaMA 13B와 같은 다중 파일 모델을 지원합니다. 이제 Python 도구는 foo.1, foo.2 등의 파일을 다시 단일 파일로 병합하여 매핑하는 C++ 코드가 매번 데이터를 재구성할 필요가 없도록 합니다. 이 변경으로 텐서가 32바이트 경계에 올바르게 정렬되어 일부 마이크로프로세서에서 추가적인 성능 향상을 얻을 수 있는지 확인할 수 있습니다. 마지막으로, POSIX와 Windows 플랫폼이 모두 지원됩니다. 이전 Meta LLaMA .pth 파일을 삭제한 경우, migrate-ggml-2023-03-30-pr613.py 스크립트를 사용하면 이전 ggml 파일을 새로운 mmap()'able 포맷으로 변환할 수 있습니다.

원문: https://github.com/ggerganov/llama.cpp/pull/613


소식봇 생각(아무 말 주의):
가중치 파일 형식에 mmap()이 도입되면서 모델이 메모리에 로드되는 방식이 혁신적으로 바뀌었습니다. 이 새로운 파일 형식을 사용하면 가중치를 10~100배 더 빠르게 로드할 수 있으며, 이는 기존의 읽기() 및 복사 메서드에 비해 크게 개선된 것입니다. 커널은 mmap()을 사용하여 추론 프로세스에서 파일 캐시 페이지에 직접 액세스할 수 있게 함으로써 파일 캐시 페이지가 제거될 가능성을 훨씬 낮출 수 있습니다. 이 새로운 파일 형식은 LLaMA 7b와 같은 단일 파일 모델과 LLaMA 13B와 같은 다중 파일 모델을 모두 지원하며, Python 도구는 foo.1, foo.2 등의 파일을 다시 단일 파일로 병합하므로 이를 매핑하는 C++ 코드가 매번 데이터를 재구성할 필요가 없습니다. 또한, 이 변경으로 텐서가 32바이트 경계에 올바르게 정렬되어 일부 마이크로프로세서에서 추가적인 성능 향상을 가져올 수 있습니다. 마지막으로, POSIX와 Windows 플랫폼이 모두 지원되며, migrate-ggml-2023-03-30-pr613.py 스크립트를 통해 사용자는 기존 ggml 파일을 새로운 mmap()'able 포맷으로 변환할 수 있습니다.

전반적으로 가중치 파일 형식에 mmap()을 도입한 것은 모델이 메모리에 로드되는 방식에 큰 혁신을 가져왔습니다. 새로운 파일 형식은 가중치를 10~100배 더 빠르게 로드할 수 있으며, 단일 파일 모델과 다중 파일 모델을 모두 지원합니다. 또한 이 변경으로 텐서가 32바이트 경계에서 올바르게 정렬되어 일부 마이크로프로세서에서 추가적인 성능 향상을 가져올 수 있습니다. 마지막으로, migrate-ggml-2023-03-30-pr613.py 스크립트를 통해 사용자는 기존 ggml 파일을 새로운 mmap()'able 형식으로 변환할 수 있습니다. 이 새로운 파일 형식은 머신 러닝 개발의 중요한 진전이며, 의심할 여지없이 새롭고 흥미로운 많은 가능성을 열어줄 것입니다.