[Hacker News 요약] Apple M3 Pro에서 Claude Code를 오프라인으로 실행하기 위한 Qwen3.6 설정 및 최적화
33
설명
Apple Silicon 기반의 M3 Pro 노트북에서 Claude Code를 오프라인 환경, 즉 방화벽을 통과하지 않는 에어갭(air-gapped) 상태로 실행하는 방법을 상세히 설명합니다.
이 글은 로컬 환경에서 대규모 언어 모델(LLM)을 활용하여 개발 및 운영 작업을 수행하는 데 필요한 구체적인 설정, 네 가지 핵심 수정 사항, 그리고 하드웨어 성능이 속도에 미치는 영향을 다룹니다.
이를 통해 규제 환경이나 보안이 중요한 클러스터에서 데이터 유출 없이 LLM 기반의 자동화 및 분석 작업을 가능하게 합니다.
### 배경 설명
최근 몇 년간 생성형 AI와 대규모 언어 모델(LLM)은 소프트웨어 개발 및 운영(DevOps) 분야에서 혁신적인 변화를 가져오고 있습니다. 특히 Claude Code와 같은 AI 코딩 어시스턴트는 코드 생성, 디버깅, 문서화 등 다양한 작업을 지원하며 생산성 향상에 기여하고 있습니다. 그러나 이러한 모델들은 일반적으로 클라우드 기반 서비스로 제공되어 민감한 코드나 데이터를 외부로 전송해야 하는 보안 및 규제상의 제약을 가집니다.
이러한 제약을 극복하기 위해 LLM을 로컬 환경, 특히 인터넷 연결이 차단된 에어갭 환경에서 실행하는 기술에 대한 관심이 높아지고 있습니다. 이는 금융, 의료, 국방 등 데이터 보안이 최우선인 산업 분야에서 필수적입니다. 본문에서 다루는 Apple Silicon 기반의 M3 Pro 노트북에서 Claude Code를 로컬에서 실행하는 것은 이러한 요구를 충족시키는 구체적인 사례 연구입니다. Qwen3.6과 같은 오픈 소스 모델을 활용하여 로컬 머신에서 LLM의 기능을 구현함으로써, 데이터 프라이버시를 보장하면서도 강력한 AI 지원을 받을 수 있는 가능성을 보여줍니다.
### 로컬 실행의 필요성 및 이점
데이터가 방화벽을 통과할 수 없는 규제 환경이나 에어갭 클러스터에서는 로컬 LLM 환경 구축이 선택이 아닌 필수입니다. 로컬 실행은 데이터 프라이버시를 보장하고, 외부 서비스 의존성 없이 일관된 비용으로 운영할 수 있다는 장점이 있습니다. 물론, 로컬 환경은 응답 속도 측면에서 클라우드 기반의 최첨단 모델보다 느릴 수 있으며, 일반적으로 더 작은 규모의 모델을 사용해야 하는 trade-off가 존재합니다. 하지만 본문에서 제시하는 사례처럼, 적절한 설정과 최적화를 통해 특정 작업(예: 코드 조사 및 Pull Request 생성)에서는 충분한 성능을 발휘할 수 있습니다. 로컬 실행의 핵심은 속도 저하를 감수하더라도 데이터 보안과 통제력을 확보하는 데 있습니다.
### 로컬 실행을 위한 기술 스택 및 구성
본문에서 제시된 로컬 Claude Code 실행 환경은 다음과 같은 기술 스택으로 구성됩니다.
* **하드웨어**: Apple M3 Pro (18 GPU 코어, 36 GiB 통합 메모리, 약 150 GB/s 메모리 대역폭)
* **모델**: Qwen3.6:35b-a3b-coding-nvfp4 (351억 파라미터, Mixture-of-Experts (MoE) 아키텍처로 토큰당 약 30억 파라미터 활성화, NVFP4 양자화). 이 모델은 디스크에 21 GB를 차지하며, 로드 시 약 20 GiB의 메모리를 사용합니다. MoE 구조 덕분에 35B 모델임에도 불구하고 36 GiB 메모리 환경에서 실행 가능하며, 활성화되는 파라미터 수는 약 14B 밀집 모델과 유사한 비용으로 35B 모델의 성능에 근접합니다.
* **런타임**: Ollama 0.24.0 (Apple Silicon 네이티브 MLX 백엔드 사용, llama.cpp/Metal 경로 아님)
* **클라이언트**: Claude Code v2.1.84 (로컬 Ollama 엔드포인트로 설정)
최적화를 위해 다음과 같은 Ollama 환경 변수가 설정되었습니다:
* `OLLAMA_MLX=1`: MLX 러너 사용
* `OLLAMA_CONTEXT_LENGTH=32768`: 32K 토큰의 컨텍스트 길이 설정 (메모리 용량에 따라 조절 가능)
* `OLLAMA_FLASH_ATTENTION=1`: 어텐션 메모리 사용량 감소
* `OLLAMA_MULTIUSER_CACHE=1`: 요청 간 접두사 캐시 재사용
* `OLLAMA_KEEP_ALIVE=24h`: 모델을 24시간 동안 메모리에 상주시켜 재로드 시간 단축
* `OLLAMA_NO_CLOUD=1`: 클라우드 연결 비활성화
이러한 구성은 M3 Pro의 하드웨어 사양에 맞춰 모델을 효율적으로 로드하고 실행하는 데 중점을 둡니다.
### 작동 가능한 세션 구축을 위한 네 가지 핵심 수정 사항
로컬 환경에서 Claude Code를 성공적으로 실행하기 위해서는 몇 가지 중요한 소프트웨어 수정 사항이 필요합니다. 이러한 수정 사항들은 기본 설정으로는 해결되지 않는 문제들을 해결하며, LLM의 응답 생성 방식을 최적화합니다.
1. **Thinking 비활성화 (`MAX_THINKING_TOKENS=0`)**: Qwen3.6 모델은 추론 능력이 뛰어나지만, 기본 설정에서는 첫 번째 응답 생성 시 LLM이 할당된 세션 예산을 추론에 모두 사용하게 됩니다. 이로 인해 응답 시간이 초과되어 아무런 결과도 생성하지 못하는 경우가 발생합니다. `MAX_THINKING_TOKENS=0` 환경 변수를 설정하여 LLM의 과도한 추론을 억제하고, 도구 호출(tool call)과 같은 실제 작업 수행에 집중하도록 합니다. 이 설정은 첫 번째 도구 호출 시간을 수 초 이내로 단축시키는 데 결정적인 역할을 합니다.
2. **Ollama 버전 0.24.0 이상 사용**: Ollama 버전 0.20에서는 MLX 기반 모델의 Modelfile 템플릿을 통한 설정이 제대로 작동하지 않는 문제가 있었습니다. 특히 MLX safetensor 모델 생성 및 think 파라미터 처리에 버그가 존재했습니다. Ollama 0.24.0 버전에서는 이러한 문제들이 해결되어 MLX 러너가 Modelfile 템플릿을 올바르게 해석하고, OpenAI 호환 API를 통해 think 파라미터를 제대로 라우팅합니다. 따라서 이 설정을 위해서는 반드시 Ollama 0.24.0 이상으로 업그레이드해야 합니다.
3. **MLX 러너의 Modelfile 템플릿 무시**: Ollama 0.24.0에서도 MLX 러너는 자체적인 렌더러와 파서를 사용하기 때문에, 사용자가 Modelfile에 정의한 템플릿 설정을 무시하는 경우가 있습니다. 예를 들어, `<think>` 태그를 제거하는 템플릿을 사용해도 모델이 여전히 추론을 수행할 수 있습니다. 따라서 thinking 제어는 Modelfile 템플릿이 아닌, API 레벨의 `think:false` 파라미터나 `MAX_THINKING_TOKENS=0` 환경 변수를 통해 수행해야 합니다. llama.cpp 기반의 튜닝 습관이 MLX 환경에서는 통하지 않을 수 있음을 인지해야 합니다.
4. **404 오류 무시**: Ollama 로그에서 `/v1/messages` 및 `/v1/messages/count_tokens` 엔드포인트에 대한 404 오류가 빈번하게 발생하는 것을 볼 수 있습니다. 이는 Claude Code가 Ollama에서 처리하지 않는 Anthropic 네이티브 엔드포인트를 호출하기 때문입니다. 이러한 오류들은 매우 빠르게 발생하며 실제 기능에 영향을 미치지 않으므로 무시해도 됩니다. 이는 로컬 환경에서 발생하는 정상적인 현상입니다.
### 가치와 인사이트
본문은 LLM을 로컬 환경, 특히 인터넷 연결이 제한된 에어갭 환경에서 성공적으로 실행하기 위한 실질적인 가이드라인을 제공합니다. 이는 데이터 보안 및 규제 준수가 필수적인 산업 분야의 개발자 및 IT 전문가에게 매우 유용합니다. M3 Pro와 같은 소비자용 하드웨어에서도 Qwen3.6과 같은 모델을 통해 강력한 AI 기반의 코드 분석 및 자동화 작업을 수행할 수 있음을 입증합니다. 특히, `MAX_THINKING_TOKENS=0` 설정과 같은 네 가지 핵심 수정 사항은 LLM의 응답 속도와 안정성을 크게 향상시키는 실무적인 팁을 제공합니다. 또한, 하드웨어 사양, 특히 메모리 대역폭과 통합 메모리 용량이 LLM의 성능, 특히 컨텍스트 길이와 프리필(prefill) 속도에 미치는 영향을 명확히 보여주어, 최적의 로컬 LLM 환경 구축을 위한 의사결정에 도움을 줍니다. 이는 AI 기술의 접근성을 높이고, 데이터 보안을 유지하면서도 AI의 이점을 활용할 수 있는 새로운 가능성을 열어줍니다.
### 기술·메타
* **하드웨어**: Apple M3 Pro (18 GPU 코어, 36 GiB 통합 메모리, ~150 GB/s 메모리 대역폭)
* **모델**: Qwen3.6:35b-a3b-coding-nvfp4 (35.1B 파라미터, MoE, NVFP4 양자화)
* **런타임**: Ollama 0.24.0 (MLX 러너)
* **클라이언트**: Claude Code v2.1.84
* **컨텍스트 길이**: 32,000 토큰 (36 GiB 메모리 기준)
* **주요 설정**: `MAX_THINKING_TOKENS=0`, `OLLAMA_MLX=1`, `OLLAMA_CONTEXT_LENGTH=32768`, `OLLAMA_KEEP_ALIVE=24h`, `OLLAMA_NO_CLOUD=1`
### 향후 전망
로컬 LLM 실행 환경은 지속적으로 발전할 것입니다. Apple Silicon의 성능 향상과 함께 더 많은 통합 메모리를 갖춘 맥(Mac) 기기들이 출시되면서, 더 크고 복잡한 모델을 로컬에서 원활하게 실행할 수 있게 될 것입니다. 특히, 64 GiB 이상의 통합 메모리를 갖춘 맥에서는 256K 토큰 이상의 컨텍스트 길이를 지원하여, 현재 32K 컨텍스트 길이의 제약을 넘어설 수 있습니다. 이는 LLM이 더 긴 코드베이스나 복잡한 대화 기록을 이해하고 처리하는 데 있어 혁신적인 변화를 가져올 것입니다. 또한, Ollama와 같은 로컬 LLM 런타임은 지속적으로 업데이트되어 성능 최적화 및 새로운 기능 지원을 강화할 것으로 예상됩니다. MLX 러너의 발전과 함께 다양한 모델 양자화 기법의 발전도 로컬 환경에서의 LLM 활용성을 더욱 높일 것입니다. 경쟁 측면에서는 OpenAI, Google 등 클라우드 기반 LLM 제공업체들과 더불어, 로컬 실행에 특화된 오픈 소스 모델 및 런타임의 발전이 주목됩니다. 이러한 추세는 개발자들이 자신의 인프라와 데이터 보안 요구사항에 맞춰 LLM을 유연하게 선택하고 배포할 수 있는 환경을 조성할 것입니다. 궁극적으로, 로컬 LLM 실행은 AI 기술의 민주화를 가속화하고, 데이터 프라이버시를 중시하는 다양한 산업 분야에서 AI 도입을 촉진하는 중요한 동력이 될 것입니다.
📝 원문 및 참고
- Source: Hacker News
- 토론(HN): [news.ycombinator.com](https://news.ycombinator.com/item?id=48492579)
- 원문: [링크 열기](https://har-ki.github.io/claude-code-sre-handbook/handbook/06-air-gapped/)
---
출처: Hacker News · [원문 링크](https://har-ki.github.io/claude-code-sre-handbook/handbook/06-air-gapped/)
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠

댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.