- GGUF 형식은 GGML의 진화된 형태로, 가정용 하드웨어에서 언어 모델을 빠르고 효율적으로 로드하도록 최적화되었습니다.
- 이 기술은 가중치 양자화를 가능하게 하여, 답변의 정확도를 크게 떨어뜨리지 않으면서 VRAM 및 CPU 메모리 사용량을 줄여줍니다.
- 이 소프트웨어는 llama.cpp, Ollama, LM Studio와 같은 다양한 아키텍처 및 인기 있는 도구와 호환됩니다.
로컬 인공지능의 세계를 접해본 적이 있다면, 아마도 확장자가 .로 끝나는 파일들을 본 적이 있을 겁니다. .gguf이 형식을 사용하면 llama.cpp, Ollama, LM Studio 또는 Jan과 같은 도구를 사용하여 가정용 컴퓨터에서 언어 모델을 배포하고 실행할 수 있습니다.
이 방식이 인기 있는 이유는 모델의 가중치, 아키텍처 및 모델 로드에 필요한 다양한 메타데이터를 하나 이상의 파일로 통합하기 때문입니다. 또한 양자화된 모델을 지원합니다. 공간을 덜 차지하고 메모리도 덜 필요로 합니다. FP16이나 FP32로 작성된 원본 버전보다 더 나은 성능을 보여줍니다.
이 덕분에 원래 전문가용 GPU가 필요했던 모델도 노트북이나 일반 데스크톱 컴퓨터에서 실행할 수 있게 되었습니다. 하지만 모든 모델이 모든 기기와 호환되는 것은 아닙니다. 적절한 크기, 양자화 방식, 컨텍스트 길이를 선택해야 합니다.
저장된 드라이브의 속도 또한 중요한 역할을 합니다. GGUF는 메모리 매핑과 같은 기술을 통해 효율적인 로딩을 촉진하도록 설계되었지만, 디스크 속도가 느리면 부팅에 영향을 미칠 수 있습니다. 부팅 시간이 너무 오래 걸리는 경우, 다음 사항을 확인해 보는 것이 좋습니다. AI 모델 로딩 시 SSD가 병목 현상을 일으키고 있습니다..
GGUF 형식은 무엇이며 어떤 용도로 사용됩니까?

GGUF는 GGML 및 이 프로젝트 기반 엔진을 사용한 추론을 위한 모델을 저장하기 위해 개발된 바이너리 형식입니다. 그 이름은 다음에서 유래되었습니다. GGML 유니버설 파일 GGML, GGMF, GGJT와 같은 이전 형식의 후속 형식으로 만들어졌습니다.
주요 목적은 형식을 제공하는 것입니다. 확장 가능하고, 배포가 용이하며, 적재가 빠릅니다.GGUF 파일에는 모델 텐서와 함께 아키텍처, 어휘, 토크나이저, 컨텍스트 및 모델을 올바르게 해석하는 데 필요한 기타 매개변수에 대한 정보가 포함될 수 있습니다.
주요 특징은 다음과 같습니다.
- 모델 가중치 및 메타데이터 저장.
- 다양한 양자화 수준 및 방식과의 호환성.
- 메모리 매핑을 통한 효율적인 로딩 또는
mmap. - 전체 형식을 재설계하지 않고 메타데이터를 확장할 수 있는 가능성.
- 추론을 위해 준비된 모델의 간단한 배포.
- llama.cpp에서 지원하는 다양한 아키텍처와의 호환성.
GGUF는 인공지능을 직접 실행하는 프로그램이 아닙니다. 그것은... 모델이 저장되는 컨테이너이를 사용하려면 llama.cpp와 같은 호환 엔진이나 이 생태계를 기반으로 구축된 애플리케이션이 필요합니다.
GGML에서 GGUF로의 진화
GGUF의 등장을 이해하려면, 특히 CPU와 자원이 제한된 장치에서 머신러닝 계산을 효율적으로 수행하기 위해 게오르기 게르가노프가 개발한 라이브러리인 GGML로 거슬러 올라가야 합니다.
프로젝트 초기의 형식은 새로운 아키텍처, 양자화 방식, 매개변수가 등장함에 따라 진화했습니다. 문제는 일부 변경 사항으로 인해 호환성 문제가 발생하고 애플리케이션이 서로 다른 구조를 해석해야 할 수도 있다는 점이었습니다.
GGUF는 메타데이터에 대해 보다 명확한 키-값 쌍 구조를 도입했습니다. 이를 통해 새로운 정보를 추가할 때 해당 정보가 필요하지 않은 애플리케이션의 기능을 방해하지 않고도 추가할 수 있습니다. 그 결과는 다음과 같습니다. 더욱 유연하고 진화할 준비가 된 컨테이너.
또 다른 장점은 모델을 인식하고 불러오는 데 필요한 정보를 가중치와 함께 전송할 수 있다는 것입니다. 이는 외부 구성 누락, 잘못된 어휘 또는 다운로드한 모델과 일치하지 않는 매개변수로 인해 발생하는 문제를 줄여줍니다.
그렇지만 호환성이 영원히 보장되는 것은 아닙니다. 새로운 아키텍처가 등장하면 사용되는 엔진은 해당 아키텍처를 지원해야 합니다. 따라서 최근의 GGUF 파일이 이전 버전의 llama.cpp, Ollama 또는 LM Studio에서 작동하지 않을 수 있습니다.
GGUF 모델의 양자화는 어떻게 작동합니까?

양자화는 모델의 가중치를 더 적은 비트로 표현하는 것을 의미합니다. 원래 모델은 매개변수의 상당 부분을 FP16 또는 BF16으로 저장할 수 있지만, 양자화된 버전은 많은 텐서에 대해 8, 6, 5, 4, 3 또는 심지어 2비트 표현을 사용합니다.
정밀도를 낮추면 파일 크기와 추론에 필요한 메모리가 모두 줄어듭니다. 또한 하드웨어가 해당 유형의 양자화를 효율적으로 처리할 경우 속도가 향상될 수도 있습니다. 그 대가로, 모델의 정확도 일부가 손실됩니다..
GGUF는 컴퓨터 사양에 따라 양자화를 자동으로 조정하지 않습니다. 일반적으로 동일한 모델에 대해 여러 파일이 존재하며, 사용자의 RAM 또는 VRAM에 가장 적합한 파일을 다운로드해야 합니다.
다음은 가장 일반적인 몇 가지 옵션입니다.
- Q4_K_M: 일반적으로 크기, 메모리 사용량 및 품질 면에서 균형이 잘 잡혀 있습니다. 처음 시작하기에 적절한 선택입니다.
- Q5_K_M: 이 버전은 Q4_K_M보다 약간 더 높은 충실도를 유지하지만, 파일 크기가 커지고 메모리 사용량이 증가합니다.
- Q6_K: 장비에 충분한 메모리가 있다면 고품질을 제공하며, 모델을 크게 낮출 필요가 없습니다.
- Q8_0: 메모리 절약 효과는 다소 떨어지지만, 더 정밀한 버전과 거의 비슷한 품질을 유지합니다.
- IQ4_XS: 이 기술은 합리적인 품질을 유지하면서 다른 4비트 대안보다 크기를 줄이는 것을 목표로 합니다.
- IQ3와 IQ2: 소비량은 크게 줄어들지만, 품질 저하는 더욱 두드러지게 나타날 수 있습니다.
보편적으로 가장 좋은 양자화 방식은 없습니다. 결과는 아키텍처, 모델 크기, 작업 및 하드웨어에 따라 달라집니다. 3비트로 양자화된 큰 모델은 Q8_0으로 양자화된 훨씬 작은 모델보다 성능이 뛰어날 수 있지만, 동일한 모델을 4비트 또는 5비트로 양자화했을 때보다 응답이 불안정할 수도 있습니다.
따라서 2비트 또는 3비트 버전을 항상 배제하는 것은 아닙니다. 모델을 불러올 수 없는 상황에서는 이러한 버전이 유용할 수 있습니다. 하지만 정확도가 가장 중요한 작업에서는 일반적으로 2비트 또는 3비트 버전을 사용하는 것이 더 바람직합니다. Q4_K_M, Q5_K_M 또는 그 이상의 수준을 유지하세요..
GGUF 모델에는 얼마나 많은 메모리가 필요합니까?
파일 크기는 초기 참조점을 제공하지만 필요한 모든 메모리를 나타내는 것은 아닙니다. 추론 과정에서 키-값 캐시, 컨텍스트, 계산 버퍼 및 기타 엔진 구성 요소를 위한 공간도 확보해야 합니다.
예를 들어, 8GB 크기의 GGUF 파일이 8GB의 VRAM을 가진 GPU에서 반드시 정상적으로 실행되는 것은 아닙니다. 프로그램에는 추가 메모리가 필요하며, 메모리가 부족할 경우 모델의 일부를 GPU와 RAM에 분산시키거나 CPU를 사용하여 실행해야 합니다.
모델이 컴퓨터에서 제대로 작동할지 여부를 계산하려면 다음 사항을 고려해야 합니다.
- GGUF 파일의 크기.
- 사용 가능한 RAM 및 VRAM.
- 구성된 컨텍스트 길이입니다.
- KV 캐시의 크기 및 양자화.
- GPU에서 처리될 레이어들입니다.
- 동시에 열려 있는 애플리케이션들입니다.
일반적으로 파일 크기보다 약간 여유를 두는 것이 좋습니다. 모델이 GPU에 완전히 들어가지 않는 경우 llama.cpp 및 기타 도구를 사용하여 파일 크기를 조정할 수 있습니다. 그래픽 카드에 레이어의 일부만 다운로드합니다. 나머지는 CPU를 사용하여 처리합니다.
GGUF와 GPTQ, AWQ 및 기타 포맷 비교
GGUF는 양자화된 모델을 배포하는 유일한 방법이 아닙니다. GPTQ, AWQ, EXL2, bitsandbytes와 같은 다양한 방법과 형식이 있으며, 각각 다른 엔진, 가속기 및 사용 사례를 가지고 있습니다.
GGUF의 주요 강점 중 하나는 다양한 분야에서 활동할 수 있는 능력입니다. CPU, GPU 또는 하이브리드 구성이러한 특징 덕분에 가정용 컴퓨터, VRAM 용량이 작은 시스템, ARM 기반 장치, 통합 메모리를 사용하는 시스템에서 특히 유용합니다.
GPTQ, AWQ, EXL2는 일반적으로 특정 GPU와 특수 엔진을 사용한 실행에 최적화되어 있습니다. 이러한 프로토콜은 일부 시스템에서 뛰어난 성능을 제공할 수 있지만, 프로세서, 메인 메모리, 그래픽 카드 간의 리소스 할당에 있어 항상 동일한 유연성을 제공하는 것은 아닙니다.
어떤 방식을 선택할지는 사용하려는 애플리케이션에 따라 다릅니다. llama.cpp, Ollama 또는 LM Studio를 사용하는 경우 GGUF가 일반적으로 가장 실용적인 옵션입니다. 강력한 NVIDIA GPU를 보유하고 특수 엔진을 사용하는 경우에는 특정 구성에서 다른 방식이 더 나은 결과를 제공할 수 있습니다.
GGUF 파일 사용에 권장되는 도구

llama.cpp의 모든 매개변수를 직접 관리할 필요는 없습니다. 모델 다운로드, 불러오기, 구성 과정을 간소화해주는 애플리케이션들이 있습니다.
LM 스튜디오
LM 스튜디오 이 도구는 Hugging Face에서 사용 가능한 모델을 검색하고, 다양한 양자화 버전을 다운로드하고, 로컬에서 모델과 상호 작용할 수 있는 그래픽 인터페이스를 제공합니다. 또한 OpenAI API와 호환되는 엔드포인트를 사용하여 서버를 시작할 수도 있습니다.
이 애플리케이션을 사용하면 사용할 컨텍스트 양, GPU로 전송할 레이어 수 및 기타 엔진 매개변수를 선택할 수 있습니다. 응답 시간이 지나치게 오래 걸리는 경우 다양한 조정을 적용할 수 있습니다. LM Studio 실행 속도가 느릴 때 성능을 개선하세요.
올라마
올라마 이 프로그램은 간단한 명령어를 사용하여 모델을 다운로드, 구성 및 실행하도록 설계되었습니다. llama.cpp 생태계의 구성 요소를 사용하며, 자체 라이브러리뿐만 아니라 다른 소스의 GGUF 파일도 함께 사용할 수 있습니다.
모델 파일을 사용하면 기본 모델, 시스템 메시지, 템플릿 및 온도나 컨텍스트와 같은 매개변수를 구성할 수 있습니다. 사용자 지정 파일을 사용하려면 가이드를 참조하세요. 모델 파일을 사용하여 GGUF 모델을 로드합니다..
라마.cpp
라마.cpp GGUF 작업을 위한 기준 엔진입니다. 터미널 도구, 다양한 OpenAI API 엔드포인트와 호환되는 HTTP 서버, 그리고 CPU, GPU 및 메모리 사용량을 최적화하는 다양한 옵션을 제공합니다.
시스템 및 설치된 빌드에 따라 CUDA, Metal, Vulkan, SYCL, HIP와 같은 가속 기술을 사용할 수 있습니다. 또한 모델의 레이어를 여러 장치에 분산하여 실행할 수 있습니다.
얀과 GPT4All
다음과 같은 응용 프로그램 얀과 GPT4All 또한 호환되는 모델을 다운로드하거나 가져와 그래픽 인터페이스를 통해 사용할 수 있습니다. 로컬 실행을 희생하지 않고 간단한 사용 경험을 원하는 사용자에게는 흥미로운 대안입니다.
메타데이터, 토크나이저 및 분할 모델
GGUF 파일에는 양자화된 가중치만 포함되는 것이 아닙니다. 아키텍처, 레이어 수, 컨텍스트 크기, 어휘, 특수 토큰 및 대화 템플릿에 대한 정보도 저장할 수 있습니다.
이 메타데이터를 통해 엔진은 모델을 해석하는 방법을 식별할 수 있습니다. 그러나 잘못된 템플릿이나 오래된 버전의 프로그램은 파일을 로드할 때 예기치 않은 응답, 반복 또는 오류를 발생시킬 수 있습니다.
GGUF는 단일 파일로 배포를 용이하게 하도록 설계되었지만, 대형 모델은 여러 부분으로 나누어 게시할 수도 있습니다. 이 경우, 예를 들어 다음과 같이 부분 번호를 나타내는 이름이 표시됩니다.
modelo-Q4_K_M-00001-of-00003.gguf
modelo-Q4_K_M-00002-of-00003.gguf
modelo-Q4_K_M-00003-of-00003.gguf
모든 조각들을 다운로드하고, 파일 이름을 그대로 유지한 채 같은 폴더에 저장해야 합니다. 그렇지 않으면 엔진이 모델을 제대로 재구성할 수 없습니다.
GGUF, LoRA 및 조정 모델
LoRA와 같은 기술을 사용하여 튜닝된 모델은 GGUF 생태계 내에서 사용할 수 있도록 변환하거나 배포할 수 있습니다. llama.cpp를 사용하면 추론 중에 특정 LoRA 어댑터를 적용할 수 있으며, 양자화하기 전에 기본 모델과 병합하는 도구도 있습니다.
하지만 몇 가지 개념을 구분하는 것이 중요합니다. LoRA와 QLoRA는 모델 학습 또는 튜닝과 관련된 방법입니다.반면 GGUF는 주로 저장 및 실행에 초점을 맞춘 형식입니다.
QLoRA는 양자화된 표현을 사용하여 모델을 미세 조정함으로써 학습 중 메모리 사용량을 줄일 수 있도록 합니다. 이 과정이 완료되면, 지원되는 아키텍처에 따라 결과를 병합, 변환 및 양자화하여 호환 가능한 GGUF 파일을 생성할 수 있습니다.
마찬가지로 LangChain과 같은 프레임워크와의 연결은 GGUF에서 직접 이루어지지 않습니다. 통합은 llama.cpp, Ollama 또는 LM Studio와 같은 엔진 및 서버를 통해 이루어지며, 이러한 엔진 및 서버는 API 또는 호환 가능한 라이브러리를 통해 모델을 노출합니다.
올바른 GGUF 파일을 선택하는 방법
Hugging Face와 같은 저장소에서는 동일한 모델의 여러 버전을 흔히 볼 수 있습니다. 올바른 모델을 선택하려면 먼저 해당 모델의 아키텍처가 사용하려는 애플리케이션 버전과 호환되는지 확인해야 합니다.
다음으로, 다음 항목들을 확인하세요:
- 매개변수 개수: 14B 모델은 7B 또는 8B 모델보다 훨씬 더 많은 메모리가 필요합니다.
- 양자화: Q4_K_M은 대부분의 팀에게 좋은 출발점이 될 수 있습니다.
- 파일 크기: 사용 가능한 RAM 또는 RAM과 VRAM의 조합에 맞아야 합니다.
- 모델 유형: 기본 버전, 사용 설명서 버전, 채팅 버전, 비전 버전 또는 특수 버전인지 확인하십시오.
- 인정된 맥락: 메모리 용량이 제한적일 경우 최대값을 자동으로 설정하지 마십시오.
- 대화 템플릿: 잘못된 답변을 피하려면 권장되는 방법을 사용하십시오.
- 발췌문: 모델이 여러 파일로 분할되어 있는지 확인하십시오.
어떤 버전을 사용해야 할지 확실하지 않다면 Q4_K_M부터 시작해 보세요. 모델에 메모리 여유 공간이 있다면 Q5_K_M 또는 Q6_K를 사용하여 품질을 조금 더 높일 수 있습니다. 그래도 로드되지 않으면 양자화 수준을 낮추거나, 컨텍스트 크기를 줄이거나, GPU로 오프로드하는 레이어 수를 줄여보세요.
GGUF는 로컬 인공지능을 훨씬 더 쉽게 이용할 수 있도록 도왔습니다. GGUF는 다음과 같은 요소들을 결합하여 이러한 목표를 달성했습니다. 메타데이터, 양자화, 효율적인 로딩 및 다양한 하드웨어 유형과의 호환성 이 기술 덕분에 몇 년 전만 해도 상당한 인프라가 필요했던 모델들을 실행할 수 있게 되었습니다.
이 형식은 컴퓨터의 한계를 없애거나 모든 모델이 정확하게 작동함을 보장하지는 않습니다. 하지만 적절한 아키텍처와 양자화 방식을 선택하면 외부 서비스에 지속적으로 의존하지 않고도 마법사, 프로그래밍 도구 및 특수 모델을 실험해 볼 수 있습니다.
나는 그의 "괴짜" 관심을 직업으로 바꾼 기술 열광자입니다. 나는 10년 넘게 최첨단 기술을 사용하고 순수한 호기심으로 온갖 프로그램을 만지작거리며 살아왔습니다. 이제 저는 컴퓨터 기술과 비디오 게임을 전공했습니다. 왜냐하면 저는 5년 넘게 기술 및 비디오 게임에 관한 다양한 웹사이트에 글을 쓰고 모든 사람이 이해할 수 있는 언어로 필요한 정보를 제공하려는 기사를 작성해 왔기 때문입니다.
질문이 있으시면 제가 알고 있는 지식은 Windows 운영 체제는 물론 휴대폰용 Android까지 다양합니다. 그리고 저는 여러분을 위한 헌신을 하고 있습니다. 저는 항상 몇 분씩만 시간을 내어 이 인터넷 세계에서 여러분이 가질 수 있는 모든 질문을 해결하도록 도와드릴 의향이 있습니다.
