[Hermes]Mac Hermes Ollama LLM 연결
배경
OpenClaw 로 인한 AI Agent 붐이 불었을 때 당시 메모리 값이 오르고 있어서 추론용 AI 머신으로 가성비라는 M4 Mac Mini Pro 를 2026년 1월말에 구매를 했었다. 당시 OpenClaw는 GPT API 와 연동을 하면 쉽게 사용이 가능했다. 그러나 이렇게 Cloud API 로 AI Agent 를 사용하게 되면, 굳이 Mac Mini 를 구매할 이유가 없던 터라. 여러 시도를 했지만, 기대보다 낮은 Tokens/s 로 한동안 활용을 제대로 못하고 있었다.
Hermes와 MLX 등장
그러던 중 Apple 실리콘에 최적화가 된 MLX 를 Ollama 에서 지원을 하기 시작했다(2026년 3월 31일부터 공식). 그 결과 엔비디아 GPU 못지 않게 빠른 추론연산이 빨라 졌다. 게다가 후발주자인 Hermes 가 등장하면서 OpenClaw 보다 더 쉽게 설정하는 것이 가능해졌다. 물론 여전히 로컴 LLM 기반 AI Agent 를 쉽게 구축할 수 잇는 건 아닌 것 같다.
그리고 Mac 의 Ollama 를 homebrew 로 설치 했을 경우 공식 Ollama 에서 없는 mlx 관련 버그가 보고 되었다. 이는 homebrew 에서 패키징 하는 과정에서 누락되고나 설정 문제로 발생한 것으로 알려져 있다. 2026년 9월말에도 해결이 안되서 mlx 를 제대로 사용하고 싶다면 공식적인 방법으로 설치해서 사용해야 한다.
Hermes Ollama 문제 증상
Hermes Ollama 의 로컬 LLM에 연결해서 사용하다 보면 처음에는 잘 작동을 하다가 좀 복잡한 동작을 하거나 오랫동안 대화를 하다 보면 무한으로 작업중인 상태로 보이게 되는 경우가 있다. 조사한 결과 Context Length 를 압축(정리)하고 다시 작업을 이어가는 과정에서 발생하는 문제이다.
Context window/size/length 설정
LLM은 태생적으로 맥락을 기억할 수 있는 Context Window 크기 제약이 있다. LLM을 호출하여 사용하는 프로그램에서는 이러한 설정 값을 보통 Context size 혹은 Context Length 로 표현을 한다. 문제는 Hermes 에서는 이 설정과 관련된 버그가 있다. 물론 시간이 지나면 해결이 될 것으로 보인다.
Ollama Context Length 관리 규칙
Ollama 에서는 Context Length 설정을 아래의 번호 순서대로 우선순위를 갖는 설정값으로 설정이 되어 사용이 된다.
- Ollama API에 요청시 Context Length 값
- Ollama 의 Model 설정에 잡힌 Context Length 값
- Ollama가 실행되는 환경변수값(OLLAMA_CONTEXT_LENGTH)
- Ollama 자체 default 값(4096 or 2048)
즉 1번에 대한 설정값이 없다면, 2번, 2번에 설정된 값이 없다면 3번 이런식으로 Context Length 값이 설정된다. 아무것도 건들인 적 없다면, default 값으로 잡히게 된다. 원래는 hermes 도 엄밀하게는 Ollama API에 요청하기 때문에 요청시 Context Length 를 지정하면 될 듯한다. 이 부분에서 문제가 있는 것으로 보인다. 이는 Hermes 가 Ollama만을 사용하기 위해서 만들어 진 것이 아니다 보니 발생된 문제가 아닌가 싶다.
Hermes Context Length 관리 규칙
Hermes 는 기본적으로 사용자가 Context Length 를 직접 설정하지 않으면 자동으로 Context Length 를 결정을 한다. 근데, 이상 태에서 동작하는 경우 앞서 언급한 무한 대기 현상이 발생되서 사용자가 직접 Context Length 를 설정할 수 있다. 다만, Hermes 의 설정만 바꾼다고 해서 해결이 되지 않았고 Ollama 와 같이 설정을 바궈야 적용이 되었었다.
Hermes 와 Ollama Context Length 설정
앞서 말한 것처럼 ollama 와 hermes 둘다 context length 크기를 조절 해야 한다. herems 는 최소한 64k 정도의 크기가 되어야 사용이 가능하다.
여기서는 예시로 gemma4:31b-mlx를 들도록 하겠다. 우선 ollama 가 설치되어 있다면, 모델을 다운로드 받아 놓자.
ollama pull gemma4:31b-mlx
이후 적절한 폴더로 이동한 다음에 modelfile 파일을 생성하고 아래와 같이 작성한다.
# gemma4:31b-mlx-hermes.modelfile
FROM gemma4:31b-mlx
PARAMETER num_ctx 65536
여기서 PARAMETER num_ctx 65536가 커스텀된 Context Length 값이다. 이후 ollama로 설정값이 커스텀된 모델을 생성한다.
ollama create gemma4:31b-mlx-hermes -f gemma4:31b-mlx-hermes.modelfile
만약 Context Length 값을 바꾸고 싶다면, 앞에서 생성한 modelfile 을 수정한다음에 동일한 이름으로 생서하면 설정이 덮어 씌워진다.
Hermes 의 경우 ~/.hermes/config.yaml파일을 수정하면, hermes 에 연결된 채팅 앱(여기서는 discord) 에서 똑같이 표시된다. 나는 custom_providers 항목으로 설정을 해두었기 때문에 해당 위치에서 아래와 같이 설정하였다.
# ~/.hermes/config.yaml
# ...
custom_providers:
- name: ollama
base_url: http://localhost:11434/v1
key_env: HERMES_CUSTOM_LOCALHOST_API_KEY
model: gemma4:31b-mlx-hermes
models:
gemma4:31b-mlx-hermes:
context_length: 64000
# ...
Apple 실리콘 Mac 은 GPU 와 CPU가 통합 메모리를 사용하기 때문에 자신이 사용하는 메모리의 크기를 생각하면서 2배수 단위로 늘려가면서 조절해서 사용하면 된다. 아래의 표처럼 설정을 늘려가면 된다.
| Hermes | Ollama |
|---|---|
| 64000 | 65536 |
| 128000 | 131072 |
| 256000 | 262144 |
나는 Hermes 와 Ollama 가 같은 Mac 에서 동작하는 것도 있고, 종종 다른 프로그램도 사용하기 때문에 128k 가 되도록 설정하고 사용하고 있다.
설정을 완료하면, discord 경우 /restart, /new, /model 순으로 입력하여 설정된 모델로 바꾸고 복잡한 작업을 시키면서 자동으로 /status 로 확인하면서 context length 가 정리 되는지 확인해보면 된다. 혹은 강제로 몇 번 대화를 한 뒤에 직접 /compact 로 정리 작업을 시켰을 때 무한대기가 되는지 확인을 하면 된다. 만약 무한 대기 상태가 된다면, `/stop` 으로 강제로 작업을 멈추고 Context Length 값을 조절해보자. 다만, 앞에서 언급한 것 처럼 64k 보다 작아지면, 사용을 못하니 이 경우에는 깔끔하게 로컬 LLM 으로 Hermes 를 사용하는 것은 깔끔하게 포기 하도록 하자.
'Tools' 카테고리의 다른 글
| tailscale vpn (1) | 2026.08.28 |
|---|---|
| github 복수계정 ssh-key사용 (0) | 2023.04.25 |
| [PyCharm]기본 키 맵 해제 (0) | 2020.12.20 |
| CMake 익히기 : 기초문법 (2) (0) | 2018.02.21 |
| CMake 익히기 : 기초문법 (1) (0) | 2018.02.19 |