---
### 1. 설치 (윈도우 환경, RTX 50)
https://github.com/ggml-org/llama.cpp/releases 에서 2개의 파일을 다운로드 한다.
1 : llama-build_version-bin-win-cuda-x64.zip
***주의 : llama-build_version-bin-win-cpu-x64.zip를 받고 cudart를 넣으면, cpu로 작동함!***
***반드시 cuda로 다운로드!***
2 : cudart-llama-bin-win-cuda-13.1-x64.zip
두 개의 파일을 한 폴더에 압축 풀기 한다. (ex. d:\llama)
---
### 2. Huggingface에서 모델 다운로드 및 최초 실행
모델 다운로드 예시 : [unsloth/gemma-4-E4b-it-GGUF](https://huggingface.co/unsloth/gemma-4-E4B-it-GGUF) 를 다운로드 하는 것으로 예시.
직접 인터넷에서 다운로드 받아서 이동 시키는 방법 또는, 명령어 실행해서 다운로드.
'Files and versions'에서 적절한 모델을 찾는다. (ex. gemma-4-E4B-it-Q4_K_S.gguf)
CMD를 켜고, llama와 cudart를 압축 푼 폴더에서 cd로 이동 후 진행.
```
d:
cd llama
mkdir models
set LLAMA_CACHE=D:\llama
llama-server -hf unsloth/gemma-4-E4B-it-GGUF --hf-file gemma-4-E4B-it-Q4_K_S.gguf
```
비전을 지원하는 파일이면, mmproj-XXXX.gguf (XXXX는 양자화 단계)를 추가로 다운로드 받을 것이다. 이후 http://127.0.0.1:8080 로 접속 가능해진다. (최초 기동)
---
### 3. 실행
\models 에 임의로 정리한 후, 가동한다고 가정.
```
d:
cd llama
# 0. 기본 명령 예시
llama-server --model "D:\llama\models\unsloth_gemma-4-E4B-it-GGUF\gemma-4-E4B-it-Q4_K_S.gguf"
# 1. 최적화 명령 예시
llama-server --model "D:\llama\models\unsloth_gemma-4-E4B-it-GGUF\gemma-4-E4B-it-Q4_K_S.gguf" --alias gemma-4-E4B -fa on -fit on -fitt 512 -c 4096 --reasoning off --mmproj "D:\llama\models\unsloth_gemma-4-E4B-it-GGUF\mmproj-BF16.gguf"
# 2. Windows 줄바꿈 명령 예시
llama-server ^
--model "D:\llama\models\unsloth_gemma-4-E4B-it-GGUF\gemma-4-E4B-it-Q4_K_S.gguf" ^
--alias gemma-4-E4B ^
-fa on ^
-fit on ^
-fitt 512 ^
-c 4096 ^
--reasoning off
--mmproj "D:\llama\models\unsloth_gemma-4-E4B-it-GGUF\mmproj-BF16.gguf"
```
```
# 3. Windows Run.bat
@echo off
cd /d "D:llama\"
llama-server ^
--model "D:\llama\models\unsloth_gemma-4-E4B-it-GGUF\gemma-4-E4B-it-Q4_K_S.gguf" ^
--alias gemma-4-E4B ^
-fa on ^
-fit on ^
-fitt 512 ^
-c 4096 ^
--reasoning off
--mmproj "D:\llama\models\unsloth_gemma-4-E4B-it-GGUF\mmproj-BF16.gguf"
```
---
# 4. web-ui에서 작동 확인
http://127.0.0.1:8080 으로 접속.
```
너는 무슨 모델인지, 누가 만들었는지, 무엇을 할 수 있는지 설명해라.
```
```
저는 **Gemma 4**라는 이름의 대규모 언어 모델(Large Language Model, LLM)입니다.
**누가 만들었나요?**
저는 **Google DeepMind**에서 개발했습니다.
**무엇을 할 수 있나요?**
저는 텍스트를 이해하고 생성하는 등 다양한 언어 관련 작업을 수행할 수 있습니다. 제가 할 수 있는 주요 기능은 다음과 같습니다:
1. **질문에 답변하기:** 사실 정보에 기반하여 질문에 답하고 설명을 제공할 수 있습니다.
2. **텍스트 생성:** 기사, 시, 코드, 이메일 등 다양한 형식의 텍스트를 작성할 수 있습니다.
3. **요약 및 분석:** 긴 문서를 요약하거나 복잡한 텍스트의 핵심 내용을 분석할 수 있습니다.
4. **번역:** 언어 간의 번역을 수행할 수 있습니다.
5. **대화:** 사용자와 자연스러운 대화를 이어갈 수 있습니다.
**추가적으로 저에 대한 정보:**
* 저는 **오픈 가중치(open weights) 모델**입니다.
* 저는 텍스트 기반으로 작동하며, 이미지와 같은 다른 형식의 입력도 처리할 수 있는 Gemma 4 계열의 모델입니다. (다만, 저는 텍스트로만 응답을 생성합니다.)
요약하자면, 저는 Google DeepMind가 만든 다재다능한 언어 모델로서, 여러분의 다양한 텍스트 기반 요구사항을 돕기 위해 존재합니다.
```
---
### ETC. 명령어 정리
`--model`, `-m`
- 불러올 GGUF 모델 파일 지정
`--alias`
- API에서 쓰기 쉽게 모델 이름을 별도로 붙이는 옵션
- 예시 : `--alias gemma-4-E4B
`-fit on`
- 메모리가 부족하면 서버가 자동으로 설정을 조정해 실행되도록 함. 기본값 = on
- 우선적으로 하는 일 : (1) 컨텍스트 길이 축소, (2)일부 텐서를 VRAM에서 RAM으로 이동
`-fitt 512`
- 각 장치(GPU)마다 남겨둘 VRAM 목표치
- 예: `512`면 GPU마다 512MB 정도 여유를 남기도록 시도
- 기본값은 `1024`
- 멀티 GPU면 각 GPU에 각각 적용
`-fitc 65536`
- `-fit`이 컨텍스트 길이를 자동으로 줄일 때, 최소 컨텍스트를 `65536`보다 낮추지 않도록 제한
`-c 10240`
- 컨텍스트 길이 지정. 예시 = 10240 토큰
`-ctk ... -ctv ...`
- KV-cache의 K / V 저장 형식을 지정
`-ctk q8_0 -ctv q8_0`
- K/V를 모두 `q8_0` 타입으로 저장
- 긴 컨텍스트를 적은 VRAM으로 돌릴 때 유리
`-ctk turbo3 -ctv turbo3`
- K/V를 모두 `turbo3` 타입으로 저장
- TurboQuant를 사용하며, `fp16` 대비 약 4.6~5배 압축. (TurboQuant 포크가 필요)
`-ngl all`
- 가능하면 모델 전체를 GPU에 올려서 서빙
`-ngl auto`
- VRAM에 들어가는 만큼 GPU 레이어를 자동 오프로딩
`-ncmoe 20`
- 처음 `n`개 레이어의 MoE를 CPU에 유지
- 예: `20`이면 앞쪽 20개 레이어의 MoE를 CPU에 둠
`-fa on`
- Flash Attention 사용
`--reasoning on/off`
- reasoning 기능 활성화/비활성화
`--mmproj "model_name"`
- 이미지 입력을 사용하기 위한 projector 파일 지정
`--no-mmproj`
- 이미지 입력 없이 텍스트 전용으로 사용 (VRAM 절약)
---
### ETC. 명령어 정리 요약
`--alias`: API용 모델 이름
`-fa on`: Flash Attention 사용
`-fit on`: VRAM/메모리에 맞게 자동 조정
`-fitt`: GPU마다 남길 여유 VRAM
`-fitc`: 자동 축소 시 최소 컨텍스트 길이
`-c`: 컨텍스트 길이
`-ctk`, `-ctv`: KV-cache 저장 형식
`-ngl`: GPU에 올릴 레이어 수
`--reasoning on` : reasoning 활성화
`--reasoning off`: reasoning 비활성화
`--mmproj`: 이미지 입력 활성화
`--no-mmproj`: 이미지 입력 비활성화 (텍스트 전용)
``
* tokenizer_config.json에서 jinja 확인 가능