# 로컬 모델

> 자체 하드웨어에서 서빙되는 모델로 PentAGI를 실행하여 프롬프트, tool output 및 finding이 서버 내에 유지되도록 합니다.

PentAGI는 사용자가 직접 호스팅하는 모델로 완전히 실행할 수 있습니다. 이때 [agent](https://pentagi.com/ko/docs/glossary/#agent)의 prompt, agent가 읽는 [tool](https://pentagi.com/ko/docs/glossary/#tool) 출력, 그리고 agent가 보고하는 [finding](https://pentagi.com/ko/docs/glossary/#finding)은 모두 사용자의 서버에 남으며, 긴 [flow](https://pentagi.com/ko/docs/glossary/#flow)는 토큰 비용 대신 GPU 시간을 소모합니다. 두 가지 유형의 model server가 지원됩니다: 설정이 가장 빠른 Ollama와, 더 높은 처리량을 위한 vLLM 또는 OpenAI 호환 API를 제공하는 기타 server입니다.

## [Ollama](https://pentagi.com/ko/docs/deployment/local-models/#ollama)

`.env`에서 PentAGI를 Ollama server로 지정하세요:

```bash
OLLAMA_SERVER_URL=http://ollama-server:11434
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-qwen332b-fp16-tc.provider.yml
OLLAMA_SERVER_PULL_MODELS_ENABLED=false   # true downloads missing models at startup
OLLAMA_SERVER_LOAD_MODELS_ENABLED=false   # true lists the models the server already has
```

구성 파일은 각 [agent type](https://pentagi.com/ko/docs/glossary/#agent-type)에 모델과 해당 매개변수를 할당합니다. 구성 파일이 없으면 `OLLAMA_SERVER_MODEL`가 기본 모델을 설정합니다. 이미지에는 `/opt/pentagi/conf/`에 준비된 구성 파일이 포함되어 있으며, 그중 `ollama-qwen332b-fp16-tc.provider.yml`와 `ollama-qwq32b-fp16-tc.provider.yml`가 있습니다.

Ollama의 기본 context window는 flow에 필요한 크기보다 훨씬 작습니다. agent는 일반적으로 약 64K 토큰을 사용하며, PentAGI는 110K로 설정되어 있습니다. Ollama는 모델을 생성할 때만 context 크기를 설정하므로, Modelfile에서 변형 버전을 빌드해야 합니다:

```dockerfile
FROM qwen3:32b-fp16
PARAMETER num_ctx 110000
PARAMETER temperature 0.3
PARAMETER top_p 0.8
PARAMETER min_p 0.0
PARAMETER top_k 20
PARAMETER repeat_penalty 1.1
```

```bash
ollama create qwen3:32b-fp16-tc -f Modelfile
```

## [vLLM 및 기타 OpenAI 호환 server](https://pentagi.com/ko/docs/deployment/local-models/#vllm-and-other-openai-compatible-servers)

vLLM, LocalAI 및 기타 OpenAI 호환 API를 갖춘 server는 [custom provider](https://pentagi.com/ko/docs/configuration/llm-providers/#custom-and-openai-compatible-endpoints)로 연결됩니다:

```bash
LLM_SERVER_URL=http://vllm-server:8000/v1
LLM_SERVER_KEY=local                      # any non-empty value when the server has no key
LLM_SERVER_MODEL=Qwen/Qwen3.6-27B-FP8
LLM_SERVER_CONFIG_PATH=/opt/pentagi/conf/vllm-qwen3.6-27b-fp8.provider.yml
```

이미지에는 vLLM용 여러 Qwen 빌드에 대한 구성 파일이 포함되어 있으며, `-no-think` 변형 버전은 reasoning을 비활성화합니다. Agent는 [tool call](https://pentagi.com/ko/docs/glossary/#tool-call)을 통해 작동하므로, 모델에 권장되는 tool-call parser와 chat [template](https://pentagi.com/ko/docs/glossary/#template)을 사용하여 server를 시작해야 합니다. 잘못된 parser를 사용하면 tool-call 인수가 손상되어 flow가 몇 단계 후에 중단됩니다.

## [모델 선택](https://pentagi.com/ko/docs/deployment/local-models/#choosing-a-model)

* 구성 파일에서 `primary_agent`, `pentester` 및 `adviser`에는 가장 강력한 모델을 할당하고, `searcher`, `enricher` 및 요약 작업에는 경량 모델을 사용할 수 있습니다.
* 매개변수가 32B 미만인 모델의 경우 [execution monitoring and task planning](https://pentagi.com/ko/docs/concepts/agents/#safeguards)을 활성화하세요. 이는 토큰과 시간이 2\~3배 더 소모되지만 결과 품질을 대략 두 배로 향상시킵니다.
* 메모리를 계획하세요: 예를 들어 FP16의 QwQ 32B는 약 71GB의 GPU 메모리가 필요합니다.

## [나머지 스택을 로컬로 유지](https://pentagi.com/ko/docs/deployment/local-models/#keep-the-rest-of-the-stack-local)

| 부분                                                 | 설정                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Embeddings                                         | `EMBEDDING_MODEL`의 embedding 모델을 사용하는 `EMBEDDING_PROVIDER=ollama`는 동일한 Ollama server를 사용합니다. 로컬 OpenAI 호환 server는 `EMBEDDING_PROVIDER=openai`, `EMBEDDING_URL`의 주소 및 비어 있지 않은 `EMBEDDING_KEY`와 함께 작동합니다                                                                                                                                                                                                                                                              |
| Web search                                         | Search는 agent의 쿼리를 인터넷으로 전송합니다. DuckDuckGo은 기본적으로 활성화되어 있으며, `DUCKDUCKGO_ENABLED=false`로 비활성화하고 자체 SearXNG와 같이 허용하는 [engines](https://pentagi.com/ko/docs/configuration/search-engines/)만 유지하세요                                                                                                                                                                                                                                                                                            |
| [Knowledge graph](https://pentagi.com/ko/docs/glossary/#knowledge-graph) | 기본적으로 비활성화되어 있습니다. 활성화하면 Graphiti는 OpenAI를 호출하지만, `GRAPHITI_LLM_CLIENT_TYPE=custom`이면 `LLM_SERVER_URL`의 서버를 사용하고, 임베딩도 그 서버에 `EMBEDDING_MODEL`에 지정된 모델로 요청합니다(이 값이 비어 있으면 `text-embedding-3-small`). 해당 서버가 그 모델을 제공하지 않으면 `GRAPHITI_SEPARATE_EMBEDDING=true`로 설정하세요. 그러면 Graphiti는 PentAGI가 사용하는 `EMBEDDING_URL`, `EMBEDDING_KEY`, `EMBEDDING_MODEL` 값을 사용하므로, 이 값들은 OpenAI 호환 서버를 가리켜야 합니다 — [Knowledge graph](https://pentagi.com/ko/docs/concepts/memory/#knowledge-graph-optional) 참조 |
| Observability                                      | 번들된 Langfuse 및 Grafana 스택은 호스트에서 실행됩니다 — [Observability](https://pentagi.com/ko/docs/configuration/observability/) 참조                                                                                                                                                                                                                                                                                                                                                                      |
| Update check                                       | `UPDATE_CHECK_INTERVAL=0`로 비활성화합니다; [Security](https://pentagi.com/ko/docs/configuration/security/#update-check)에는 전송되는 내용이 나열되어 있습니다                                                                                                                                                                                                                                                                                                                                                      |
| Images                                             | Docker는 자체 설정으로 Docker Hub에서 [sandbox](https://pentagi.com/ko/docs/glossary/#sandbox) 이미지를 pull합니다. 폐쇄된 네트워크에서는 Docker daemon을 registry 미러로 지정하세요                                                                                                                                                                                                                                                                                                                                          |