올해 4월 Google DeepMind가 Gemma 4를 Apache 2.0 라이선스로 공개했을 때 개발자 커뮤니티의 반응이 빠르게 달아올랐습니다. 단순히 “성능 좋은 오픈소스 모델”이 생긴 것을 넘어, 합리적인 소비자 하드웨어에서 코딩 에이전트 수준의 성능을 기대할 수 있는 첫 번째 현실적인 선택지가 등장했다는 감각 때문입니다.
Gemma 4는 E2B, E4B, 26B A4B, 31B의 네 가지 모델로 구성됩니다. 이름에서 눈치챌 수 있듯 ‘유효 파라미터 수(Effective Parameters)’를 기준으로 나뉩니다. 가중치 전체 크기가 아닌 추론 시 실제로 활성화되는 연산량을 기준으로 삼은 것인데, 이 설계가 모델마다 속도와 품질의 균형점을 어디에 놓을지를 결정합니다. 모든 모델은 텍스트와 이미지를 함께 처리하는 멀티모달 구조를 갖추고 있으며, 내부 아키텍처에는 슬라이딩 윈도우 어텐션과 전역 어텐션을 교차 적용하는 하이브리드 메커니즘이 들어가 긴 컨텍스트를 다룰 때 메모리 효율을 높입니다.
네 가지 모델, 어디가 다른가
| 모델 | 유효 파라미터 | 아키텍처 | 컨텍스트 | LiveCodeBench | MMLU Pro |
|---|---|---|---|---|---|
| E2B | 2.3B (전체 5.1B) | Dense | 128K | — | — |
| E4B | 4.5B (전체 8B) | Dense | 128K | 52.0 | 69.4 |
| 26B A4B | 3.8B 활성 / 25.2B 전체 | MoE | 256K | 77.1 | 82.6 |
| 31B | 30.7B | Dense | 256K | 80.0 | 85.2 |
E2B와 E4B는 모바일·엣지 환경을 겨냥한 경량 모델입니다. E4B는 전체 가중치가 8B임에도 추론 시 절반 수준만 활성화되어 진입 장벽이 낮고, 처음 Gemma 4를 시험해 보기에 적합합니다.
주목할 것은 26B A4B입니다. MoE(Mixture of Experts) 구조 덕분에 25.2B 전체 파라미터 중 토큰당 실제 활성화되는 것은 3.8B에 불과합니다. 26B짜리 모델이 추론 시 4B 수준의 연산량만 소비한다는 뜻으로, 큰 모델의 품질과 작은 모델의 속도를 함께 잡은 구성입니다. 256K 컨텍스트에 LiveCodeBench 77.1점을 기록하며, 로컬 코딩 에이전트 용도로 가장 현실적인 고성능 선택지입니다.
31B는 Dense 아키텍처 최상위 모델로 수치상 최고 성능을 보여주지만, Q4 양자화 기준으로도 24GB VRAM이 필요해 소비자급 싱글 GPU 환경에서는 부담스럽습니다.
내 환경에서 무엇을 띄울 수 있나
양자화 기준(Q4_K_M)으로 정리하면, E4B는 약 3GB VRAM으로 RTX 3060 이상이면 무난합니다. 26B A4B는 권장 VRAM이 18GB로, RTX 4090이나 RTX 6000 Ada, 혹은 M2 Max·M3 Max 이상의 맥이라면 안정적으로 실행할 수 있습니다. 31B는 Q4 기준 24GB, FP16으로는 62GB에 달하므로 M3 Ultra나 전문가용 GPU가 아니면 접근이 어렵습니다.
RAM 측면에서는 VRAM에 올리지 못한 레이어가 시스템 RAM으로 넘어오기 때문에 일반적으로 VRAM의 1.5배 정도 시스템 RAM을 확보하는 편이 안정적입니다.
애플 실리콘 맥 사용자에게는 별도의 VRAM 논의가 필요 없습니다. Unified Memory 구조 덕분에 M2 Max(96GB)나 M3 Max(128GB) 정도라면 26B A4B를 MLX 포맷으로 상당히 쾌적하게 실행할 수 있습니다. LM Studio는 macOS에서 MLX 백엔드를 자동으로 활용하기 때문에 별도 설정 없이 Apple Silicon 최적화된 추론 속도를 얻을 수 있습니다.
이미지 출처: Unsplash
LM Studio로 5분 만에 실행하기
lmstudio.ai에서 macOS·Windows·Linux용 설치 파일을 받아 실행합니다. 앱을 열고 Mac에서는 Cmd+Shift+M, Windows에서는 Ctrl+Shift+M을 누르면 모델 다운로더가 열립니다. 검색창에 gemma-4를 입력하면 양자화 옵션 목록이 표시됩니다.
처음 시작한다면 gemma-4-4b-it-Q4_K_M이 무난한 선택입니다. 디스크 용량 약 3GB, 대부분의 최근 PC와 맥에서 실행 가능합니다. 26B A4B를 목표로 한다면 gemma-4-26b-a4b-it-Q4_K_M을 찾으면 됩니다.
다운로드가 완료되면 모델을 로드하고 Developer 탭으로 이동합니다. ‘Start Server’를 누르거나 터미널에서 아래 명령어를 실행하면 OpenAI 호환 API 서버가 `http://localhost:1234/v1`에 활성화됩니다.
lms server start
이 상태에서 모델을 로드해 두면 Pi나 Zed 같은 외부 도구가 OpenAI API를 사용하듯 로컬 Gemma 4를 바라볼 수 있습니다.
Pi로 터미널 코딩 에이전트 만들기
Pi(pi-coding-agent)는 Mario Zechner가 만든 미니멀한 터미널 코딩 에이전트입니다. read·write·edit·bash 네 가지 도구만 에이전트에게 쥐어주는 단순한 구조 덕분에 시스템 프롬프트가 1,000 토큰 이하로 유지됩니다. MCP 통합이나 서브 에이전트, 권한 팝업, 백그라운드 bash 같은 기능을 의도적으로 코어에서 배제했습니다. 복잡한 오케스트레이션이 없으니 로컬 모델에 가해지는 부담이 작고, 그만큼 응답 일관성도 높아집니다. 필요한 기능은 스킬이나 확장(Extension)으로 직접 붙이는 방식입니다.
먼저 Pi를 설치합니다.
npm install -g @mariozechner/pi-coding-agent
그다음 LM Studio와 연결하기 위해 ~/.pi/agent/models.json 파일을 아래와 같이 작성합니다.
{
"providers": {
"lmstudio": {
"baseUrl": "http://localhost:1234/v1",
"api": "openai-completions",
"apiKey": "local",
"compat": {
"supportsDeveloperRole": false,
"supportsReasoningEffort": false,
"supportsUsageInStreaming": false
},
"models": [
{
"id": "lmstudio-community/gemma-4-26b-a4b-it-mlx",
"name": "Gemma 4 26B A4B (MLX)",
"input": ["text", "image"],
"contextWindow": 131072,
"maxTokens": 8192
}
]
}
}
}
id 값은 LM Studio에 로드된 모델의 실제 식별자와 일치해야 합니다. LM Studio Developer 탭에서 확인할 수 있습니다. Apple Silicon 맥이라면 GGUF 대신 MLX 변형(gemma-4-26b-a4b-it-mlx)을 선택하는 것이 추론 속도가 확연히 빠릅니다. compat 블록은 로컬 모델이 지원하지 않는 기능을 Pi가 호출하지 않도록 명시적으로 끄는 설정입니다. Pi를 실행하기 전에 LM Studio 서버가 제대로 올라왔는지 아래 명령어로 먼저 확인해 두면 좋습니다.
curl http://localhost:1234/v1/models
설정이 끝나면 터미널에서 pi를 실행하고 /model 명령어로 로컬 모델로 전환합니다. 세션 도중 컨텍스트가 쌓이면 /compact로 이전 대화를 요약해 공간을 확보할 수 있고, 특정 시점으로 돌아가고 싶을 때는 /fork로 분기점을 만들 수 있습니다. Pi는 세션을 선형 로그가 아닌 트리 구조의 JSONL 파일로 저장하기 때문에 /tree로 과거 분기점을 탐색하거나 /clone으로 현재 분기를 통째로 복제하는 것도 가능합니다.
코딩 에이전트 용도로는 26B A4B에 128K 컨텍스트를 할당하는 구성이 실용적입니다. 단일 파일 수정에는 16K면 충분하지만, 여러 파일에 걸친 리팩토링 세션이라면 128K를 잡아두는 것이 중간에 컨텍스트가 잘리는 상황을 막습니다. LM Studio의 Context Length 슬라이더에서 직접 조정하면 됩니다.
한 가지 주의할 점이 있습니다. Pi는 기본적으로 bash 명령을 별도 확인 없이 곧바로 실행합니다. 이른바 YOLO 모드인데, 클라우드 프론티어 모델과 달리 로컬 모델은 환각(hallucination) 가능성이 상대적으로 높아 예기치 않은 명령이 실행될 수 있습니다. 중요한 작업 전에는 @gotgenes/pi-permission-system을 설치하는 것이 좋습니다. 위험한 명령 실행 직전 사용자 확인을 요구하는 안전망으로, 실제 경험 기반으로 다듬어진 서드파티 확장입니다.
pi install npm:@gotgenes/pi-permission-system
Pi의 능력을 확장하는 또 다른 방법은 스킬(Skills)입니다. 커뮤니티가 공유하는 마크다운 기반 지침 모음으로, PDF·DOCX 파일을 로컬에서 파싱하는 liteparse나 모델의 답변을 비판적으로 검토하도록 유도하는 grill-me 같은 것들이 있습니다.
git clone https://github.com/badlogic/pi-skills ~/.pi/agent/skills/pi-skills
실용적인 팁도 하나. 프로젝트 루트에 AGENTS.md 파일을 만들어 두면 Pi가 세션 시작 시 자동으로 읽어 프로젝트 컨벤션과 주의사항을 사전에 학습합니다. 코드 스타일, 디렉토리 구조, 금지 명령어 같은 내용을 적어두면 매번 컨텍스트를 설명하는 수고를 덜 수 있습니다.
Pi의 npm 패키지 생태계는 생각보다 폭이 넓습니다. 용도별로 묶어보면 다음과 같습니다.
웹·리서치 쪽에서는 pi-web-access가 핵심입니다. 웹 검색, URL 가져오기, PDF 추출, YouTube 영상 이해, GitHub 저장소 클론을 한 번에 처리하며 별도 API 키 없이도 Chromium 기반 브라우저만 있으면 동작합니다. pi-subagents는 여기서 한 발 더 나아가 Pi가 독립적인 서브 에이전트를 생성하고, 병렬 또는 순차 실행 방식을 스스로 판단하게 합니다.
UI 측에서는 pi-powerline-footer가 터미널 하단에 파워라인 스타일 상태바를 추가합니다. 컨텍스트 사용량이 70%에서 노란색, 90%를 넘으면 빨간색으로 바뀌어 컨택스트가 가득 차기 전에 /compact를 칠 타이밍을 직관적으로 알 수 있습니다. pi-btw는 /btw 슬래시 명령어를 추가해, 메인 대화 흐름을 오염시키지 않고 모델에게 짧은 일회성 질문을 던질 때 유용합니다.
기억과 컨텍스트 관리에는 pi-hermes-memory가 있습니다. 세션 간 교정 사항, 선호도, 반복 패턴을 학습해 다음 세션 시작 시 자동으로 주입합니다. context-mode는 컨텍스트 윈도우 운용 방식을 세밀하게 제어하는 모드를 제공합니다.
코드 품질 측면에서는 세 가지가 함께 작동합니다. pi-lens는 에이전트가 파일을 편집하기 전 반드시 먼저 읽었는지 검증하는 read-before-edit 정책을 강제합니다. pi-simplify는 최근 변경된 코드를 명확성·일관성·유지보수성 관점에서 검토합니다. @catdaemon/pi-code-intelligence는 LSP(Language Server Protocol) 기반의 코드 인텔리전스를 제공해 에이전트가 프로젝트 구조를 더 정확하게 파악하도록 돕습니다.
마지막으로 @ifi/pi-plan은 복잡한 작업을 시작하기 전 단계별 계획을 수립하게 합니다. 구현에 바로 뛰어드는 대신 계획을 먼저 확인받는 구조를 만들 수 있어, 긴 리팩토링 세션에서 방향이 엉뚱하게 흘러가는 상황을 막는 데 효과적입니다.
이 외에도 pi.dev/packages에 가면 커뮤니티가 올린 2,600개 이상의 패키지를 이름·설명·작성자로 검색하거나 타입(Extension·Skill·Theme·Prompt)별로 필터링할 수 있습니다. 월간 다운로드 기준으로 정렬하면 pi-mcp-adapter(MCP 프로토콜 연동), pi-lens(실시간 코드 피드백, 월 15.6K), context-mode(컨텍스트 98% 절약, 월 73.6K) 같은 인기 패키지가 상단에 뜹니다. 마음에 드는 패키지를 찾으면 pi install npm:<패키지명> 한 줄로 바로 설치됩니다.
Zed에서 인라인 어시스턴트로 활용하기
Zed는 Rust로 작성된 고속 에디터로, LM Studio를 기본 AI 공급자(provider)로 지원합니다. Zed를 열고 Cmd+,에서 settings.json을 열어 다음 블록을 추가합니다.
{
"agent": {
"default_model": {
"provider": "lmstudio",
"model": "google/gemma-4-26b-a4b"
},
"inline_assistant_model": {
"provider": "lmstudio",
"model": "google/gemma-4-26b-a4b"
},
"commit_message_model": {
"provider": "lmstudio",
"model": "google/gemma-4-26b-a4b"
}
}
}
model 값은 LM Studio에 로드된 모델 ID와 동일하게 맞춰야 합니다. LM Studio 서버가 실행 중인 상태에서 Zed를 재시작하면 에디터 오른쪽 Agent 패널에 로컬 모델이 선택된 것을 확인할 수 있습니다.
Zed의 인라인 어시스턴트는 코드 블록을 선택한 뒤 Cmd+Enter로 호출합니다. 선택 영역에 대한 리팩토링, 설명, 테스트 생성 등을 즉석에서 수행합니다. 코드가 외부 서버로 나가지 않아 사내 코드를 클라우드 AI에 올리기 꺼려지는 환경이나 API 키 관리가 번거로운 개인 개발자에게 실질적인 이점이 됩니다.
한 가지 현실적인 주의사항은 속도입니다. 26B A4B를 Q4_K_M 양자화로 돌려도 RTX 4090이나 M3 Max 수준의 하드웨어가 아니면 응답 속도가 클라우드 API 대비 체감상 느립니다. 짧은 인라인 수정에는 무난하지만, 긴 파일 전체를 분석하거나 에이전트가 여러 파일을 순회하는 작업에서는 어느 정도 기다림을 감수해야 합니다.
Gemma 4가 Apache 2.0으로 공개되고 상업적 수정·배포까지 허용된 것은 Google이 AI의 무게중심을 클라우드 독점에서 온디바이스와 로컬 방향으로도 분산시키겠다는 신호로 읽힙니다. 하드웨어 성능이 계속 올라가고 양자화 기법이 정교해질수록 로컬 AI 에이전트의 실용성 문턱은 빠르게 낮아질 것입니다. 지금 당장 클라우드 API만큼 쾌적하지 않더라도, 이 생태계를 미리 손에 익혀두는 건 충분히 투자할 만한 시간입니다.
출처
- Gemma 4 모델 카드 (Google AI for Developers)
- Run Gemma with LM Studio (Google AI for Developers)
- Gemma 4: Byte for byte, the most capable open models (Google Blog)
- How to run a local coding agent with Gemma 4 and Pi (Patrick Loeber)
- Gemma 4 + Pi Coding Agent (feat. LM Studio) — PyTorch KR
- Use Local LLMs With Zed Dev Editor (rockyourcode)
- LLM Providers — Zed Docs