전체 글

[Hermes]Mac Hermes Ollama LLM 연결

2026. 9. 30. 15:19
반응형

배경

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 설정을 아래의 번호 순서대로 우선순위를 갖는 설정값으로 설정이 되어 사용이 된다.

  1. Ollama API에 요청시 Context Length 값
  2. Ollama 의 Model 설정에 잡힌 Context Length 값
  3. Ollama가 실행되는 환경변수값(OLLAMA_CONTEXT_LENGTH)
  4. 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

Recent posts