--- ### 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 확인 가능