개념 관점
오픈웨이트 vs 오픈소스 구분, 2026년 주요 코딩 LLM 계열(Qwen3-Coder, DeepSeek-V4, GLM-5.1, MiniMax-M2.7, DeepSeek-Coder-V2-Lite)의 위치를 설명한다.
개념 관점
오픈웨이트 vs 오픈소스 구분, 2026년 주요 코딩 LLM 계열(Qwen3-Coder, DeepSeek-V4, GLM-5.1, MiniMax-M2.7, DeepSeek-Coder-V2-Lite)의 위치를 설명한다.
설계 관점
상용 API, 클라우드 에이전트, 로컬 추론 3가지 옵션을 데이터 경계·비용·운영 난이도 기준으로 비교하고 의사결정 트리로 매핑한다.
구현 관점
vllm serve 명령으로 단일/멀티 GPU/MIG 환경에 OpenAI 호환 서버를 띄우고, 모델 어댑터를 통해 alias·tool parser·token accounting을 통일한다.
운영 관점
동일 task를 상용 모델과 로컬 모델에 같은 하네스로 반복 실행해 throughput·지연시간·실패율·예상 비용을 정량 비교한다.
2026년의 핵심 변화는 오픈웨이트 모델이 실제 에이전트 하네스 안에서 상용 모델과 비교 가능한 후보가 되었다는 점이다. 모델 자체의 코딩 성능뿐 아니라 tool calling, long context, 추론 서버 호환성, 라이선스, 운영비가 함께 비교 대상이 되었다.
| 모델 | 공개 단위 | 파라미터 | 컨텍스트 | 강점 | 운영 메모 |
|---|---|---|---|---|---|
| Qwen3-Coder-Next | Apache 2.0 | 80B MoE, 3B 활성 | 256K | agentic coding, tool calling, local development | 대형 이전 세대보다 경량화된 coding-agent 후보 |
| DeepSeek-V4-Pro / Flash | 공개 모델 카드 | 1.6T/284B MoE | 1M | long-context reasoning, coding, agentic task | Pro는 품질, Flash는 효율 지향 |
| GLM-5.1 | 공개 가중치 | 공개 GLM 계열 | long-context agent work | agentic engineering, coding, tool use | GLM 계열 비교 기준 |
| MiniMax-M2.7 | 공개 모델 카드 | 230B급 MoE 계열 | 장문 agentic workflow | coding, search, office work, long-horizon agents | MiniMax 계열 agentic 후보 |
| DeepSeek-Coder-V2-Lite | DeepSeek | 16B/236B 계열 | 128K | 단일 GPU 실습, 코드 수정/완성 | 교육용 Lab에 적합. 고성능 기준선으로는 부적합 |
모델 카드는 벤치마크 표보다 운영 제약을 먼저 읽어야 한다. 수업에서는 다음 순서로 후보를 평가한다.
| 확인 순서 | 질문 | 탈락 신호 |
|---|---|---|
| License | 수업/연구/상용 PoC에 쓸 수 있는가? | 재배포·서비스 사용 조건이 불명확함 |
| Serving support | vLLM, SGLang, Transformers 중 무엇을 공식 지원하는가? | 공식 예제가 없고 community patch만 존재함 |
| Tool format | tool call, JSON mode, reasoning output을 어떻게 표현하는가? | parser를 매번 ad hoc으로 고쳐야 함 |
| Context policy | 최대 context와 권장 운영 context가 다른가? | 1M context를 표기하지만 실제 GPU 예산이 없음 |
| Failure behavior | OOM, invalid JSON, refusal, timeout이 어떻게 나타나는가? | 실패가 구조화되지 않아 retry 판단이 어려움 |
위 표는 강의 기준 시점의 후보 목록이다. 실제 캡스톤에서는 모델 이름보다 같은 task packet을 같은 harness로 실행한 재현 결과가 선택 근거가 된다.
Qwen3-Coder-Next는 80B total / 3B active MoE 모델이며, 256K context와 agentic coding/tool calling을 전면에 둔다. 대형 이전 세대보다 경량화된 coding-agent 후보로, 수업에서는 Qwen 계열 비교 기준으로 사용한다.
운영 관점에서 Qwen3-Coder의 의미는 단순한 코딩 성능에 그치지 않는다. 긴 저장소 컨텍스트, 함수 호출 포맷, vLLM/SGLang 배포 지원이 결합되어 로컬 또는 기관 서버에서 agentic coding harness를 구성할 수 있는 후보가 되었다.
DeepSeek-V4-Pro와 DeepSeek-V4-Flash는 DeepSeek V4 계열 모델 카드 기준의 비교 후보다. 1.6T/284B MoE와 1M context를 제시하며, V4-Pro는 품질과 장문 reasoning, V4-Flash는 효율과 throughput 후보로 구분한다.
| 계열 | 강의 내 사용 |
|---|---|
| DeepSeek-Coder-V2-Lite | 실습 서버에서 구동하기 쉬운 교육용 모델 |
| DeepSeek-V4-Pro | DeepSeek 계열 고성능 비교 기준 |
| DeepSeek-V4-Flash | 비용/처리량 비교 기준 |
| DeepSeek 이전 세대 | long-context 기준선 비교용 |
GLM-5.1은 공개 GLM 계열 후보로, agentic engineering과 coding workflow를 비교할 때 확인할 모델이다. 실무 교훈은 동일하다. 모델 교체는 단순한 model= 값 변경만으로 충분하지 않으며, 하네스가 모델별 tool/reasoning parser와 serving 옵션을 알아야 한다.
MiniMax-M2.7은 MiniMax 계열의 agentic workflow 후보다. 코딩뿐 아니라 검색, office work, 장기 agentic task를 강조한다. 모델 카드의 성능 수치는 제공사가 제시한 참고 자료이므로 강의에서는 성능 순위로 단정하지 않는다. 대신 10주차 Lab에서 동일 태스크를 같은 하네스, 같은 예산, 같은 평가 기준으로 비교한다.
오픈웨이트 모델 도입은 API 비용 절감만의 문제가 아니다. 실제 선택지는 세 가지다.
상용 API
Claude, GPT, Gemini API를 직접 사용한다. 품질과 운영 편의성은 높지만 데이터 경계, 비용 예측, rate limit을 관리해야 한다.
클라우드 에이전트
Codex Web/App, Claude Code on the Web, GitHub Agent HQ처럼 원격 sandbox와 GitHub 연동을 사용한다. 비동기 작업과 리뷰 흐름에 강하다.
로컬 추론
vLLM/SGLang으로 OpenAI 호환 API를 제공한다. 기관 데이터 경계와 예측 가능한 GPU 비용이 장점이지만 운영 복잡도가 커진다.
| 기준 | 상용 API | 클라우드 에이전트 | 로컬 추론 |
|---|---|---|---|
| 시작 속도 | 매우 빠름 | 빠름 | 느림 |
| 데이터 통제 | 낮음-중간 | 중간 | 높음 |
| 장기 비용 | 사용량 의존 | 좌석/사용량 의존 | GPU 고정비 중심 |
| 신규 모델 접근 | 빠름 | 빠름 | 모델 공개 후 가능 |
| 운영 난이도 | 낮음 | 중간 | 높음 |
| 강의 실습 가치 | API 설계 | workflow 설계 | MLOps/infra 이해 |
이 트리는 정답이 아니라 결정 기록의 출발점이다. 캡스톤 ADR에 분기를 명시하고 결정 이유를 1-2문장으로 적어 둔다.
오픈웨이트 모델을 운영하려면 추론 서버가 필요하다. 강의에서는 vLLM을 기본으로 쓰지만, 후보를 비교 평가할 줄 알아야 한다.
| 기준 | vLLM | SGLang | TGI (Hugging Face) |
|---|---|---|---|
| OpenAI-compatible API | 기본 제공 | 기본 제공 | 기본 제공 |
| Continuous batching | ✓ | ✓ | ✓ |
| Prefix caching | automatic | RadixAttention | 부분 지원 |
| Speculative decoding | ✓ | ✓ | 일부 모델 |
| Disaggregated prefill | ✓ | 실험적 | × |
| Tool/structured output | ✓ (auto-tool, guided JSON) | ✓ (constrained decoding) | ✓ |
| 운영 복잡도 | 중 | 중-상 | 낮 |
| 커뮤니티 | 매우 활발 | 빠르게 성장 | 안정 |
| 강의 권장 용도 | 기본 실습/캡스톤 | RadixAttention 비교 학습 | 빠른 PoC |
상용 API와 로컬 추론을 동일 단위로 비교하려면 token 가격뿐 아니라 GPU amortization을 함께 계산한다.
| 항목 | 수식 |
|---|---|
| 상용 API 1회 비용 | (prompt_tokens × in_price) + (completion_tokens × out_price) |
| 로컬 GPU 시간당 비용 | GPU 임대단가 또는 (구매가 / 감가상각 시간) + 전력비 |
| 로컬 1회 비용 | GPU 시간당 비용 × (run_latency_s / 3600) / 동시 처리 수 |
| break-even 호출량 | GPU 시간당 비용 / 평균 1회 API 비용 |
예시 - 상용 API 기준 예시: $3/M in, $15/M out → 1회 평균 $0.012 (3K in, 600 out) - DGX H100 1대 시간당 ~ $4.5 (실습용 단가 가정), 동시 처리 4건 - 로컬 1회 비용 ≈ 4.5 / 4 / (3600/12) ≈ $0.0038 - break-even: 시간당 4.5 / 0.012 ≈ 375 회 호출 이상이면 로컬이 유리이 표는 캡스톤 보고서의 “왜 로컬을 선택했는가” 슬라이드에 활용할 수 있다.
터미널 기반 AI 코딩 CLI 도구 비교는 AI 코딩 도구 선택 가이드 참조.
vLLM과 SGLang은 대부분 OpenAI-compatible /v1/chat/completions 또는 Responses 스타일 클라이언트 패턴을 지원한다. 이 인터페이스를 쓰면 하네스는 모델 제공자에 덜 묶인다.
from openai import OpenAI
client = OpenAI( base_url="http://localhost:8000/v1", api_key="local-dev-token",)
response = client.chat.completions.create( model="Qwen/Qwen3-Coder-Next", messages=[ {"role": "system", "content": "You are a careful coding agent."}, {"role": "user", "content": "Add tests for the parser edge cases."}, ], temperature=0.2,)핵심은 추상화 계층이다.
| 계층 | 책임 |
|---|---|
| Agent CLI | 파일 읽기/쓰기, 명령 실행, 사용자 승인, 작업 흐름 |
| Gateway | 모델 라우팅, 예산, rate limit, audit |
| Serving | batching, KV cache, speculative decoding, GPU scheduling |
| Model | 토큰 생성, tool-call JSON, reasoning output |
OpenAI 호환 API는 공통 출발점일 뿐이다. 하네스가 모델을 실제로 바꿔 끼우려면 adapter가 다음 항목을 흡수해야 한다.
| 항목 | 구현 기준 |
|---|---|
| Model alias | local-coder, qwen3-coder, glm-5.1처럼 강의/실습용 이름을 고정한다 |
| Message template | system/developer/user/tool 메시지가 모델별 chat template과 충돌하지 않게 한다 |
| Tool parser | 함수 호출 JSON, XML-like block, plain text plan을 모델별로 파싱한다 |
| Retry policy | timeout, invalid JSON, context overflow, refusal을 서로 다른 failure reason으로 기록한다 |
| Token accounting | prompt/completion/cache token을 run id와 연결한다 |
| Evaluation hook | 동일 task packet을 상용 API와 로컬 모델에 반복 실행할 수 있게 한다 |
이 체크리스트가 없으면 “모델 교체 가능”은 실제 운영 속성이 아니라 구현되지 않은 선언에 그친다.
# adapter.py — 모델 alias, tool parser, token accounting을 통일하는 thin layerfrom dataclasses import dataclassfrom typing import Callable, Any
@dataclassclass ModelSpec: alias: str backend_url: str backend_model: str tool_parser: Callable[[str], list[dict]] chat_template: str | None = None
REGISTRY: dict[str, ModelSpec] = {}
def register(spec: ModelSpec) -> None: REGISTRY[spec.alias] = spec
def call(alias: str, messages: list[dict], **kw) -> dict: spec = REGISTRY[alias] from openai import OpenAI client = OpenAI(base_url=spec.backend_url, api_key="local") resp = client.chat.completions.create( model=spec.backend_model, messages=messages, **kw ) text = resp.choices[0].message.content tools = spec.tool_parser(text) return { "alias": alias, "text": text, "tools": tools, "usage": resp.usage.model_dump(), }환경 확인
nvidia-smipython --versionuv venv .venvsource .venv/bin/activateuv pip install vllm openai실습 모델 선택
vllm serve deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct \ --served-model-name local-coder \ --max-model-len 32768 \ --port 8000vllm serve Qwen/Qwen3-Coder-Next \ --served-model-name qwen3-coder \ --tensor-parallel-size 2 \ --max-model-len 65536 \ --port 8000vllm serve zai-org/GLM-5.1 \ --served-model-name glm-5.1 \ --tensor-parallel-size 4 \ --enable-auto-tool-choice \ --port 8000# GPU 0 슬라이스 a: 교육용 모델CUDA_VISIBLE_DEVICES=MIG-0/0 vllm serve \ deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct \ --served-model-name local-coder --port 8001 &
# GPU 0 슬라이스 b: 평가용 모델CUDA_VISIBLE_DEVICES=MIG-0/1 vllm serve \ Qwen/Qwen3-Coder-Next \ --served-model-name qwen3-coder --port 8002 &OpenAI 호환 API 테스트
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "local-coder", "messages": [ {"role": "user", "content": "Python으로 stable topological sort를 구현해줘"} ], "temperature": 0.2 }'동일 태스크 비교
각 팀은 같은 5개 태스크를 상용 API 1개와 로컬 모델 1개에 실행한다.
| 태스크 | 평가 기준 |
|---|---|
| 버그 수정 | 테스트 통과 여부 |
| 리팩터링 | 동작 보존 + 가독성 |
| 테스트 생성 | 커버리지와 edge case |
| 문서 업데이트 | 변경 반영 정확도 |
| CLI 기능 추가 | 요구사항 충족 + UX |
비용/처리량 측정
python -m vllm.benchmarks.benchmark_serving \ --backend openai-chat \ --base-url http://localhost:8000 \ --model local-coder \ --num-prompts 100 \ --request-rate 4모델 어댑터 등록
adapter.py 패턴으로 alias 2-3개(local-coder, qwen3-coder, gpt-baseline 등)를 등록하고, 같은 task packet을 alias만 바꿔 실행할 수 있게 한다.
제출 마감: 2026-05-12 23:59
요구사항:
adapter.py)와 등록된 alias 2개 이상모델 카드
서빙 인프라
에이전트 도구