---
license: mit
tags:
- qwen3
- qwen3-next
- 80b
- gb10
- nvidia
- gpu
- ollama
- optimization
- gguf
- quantization
---
# Qwen3-Next-80B on NVIDIA DGX Spark(GB10 Grace Blackwell GPU): 완전한 가이드
## 📋 개요
이 문서는 **NVIDIA GB10 GPU**에서 **Qwen3-Next-80B** 모델을 실행하기 위한 완전한 가이드입니다. vLLM의 호환성 문제를 해결하기 위해 **Ollama**로 전환하고, 60GB VRAM을 최대한 활용하는 최적화 설정을 포함합니다.
**작성일**: 2025-12-20
**테스트 환경**: GB10 GPU (60GB VRAM), CUDA 12.1, PyTorch 2.9.x
**모델**: [Qwen/Qwen3-Next-80B-A3B-Instruct-GGUF](https://huggingface.co/Qwen/Qwen3-Next-80B-A3B-Instruct-GGUF) (Q5_K_M 양자화)
---
## 🎯 주요 성과
✅ **vLLM 호환성 문제 해결**: GB10에서 vLLM의 `EngineCore exiting` 오류를 Ollama로 우회
✅ **Qwen3-Next-80B Q5_K_M 모델 성공적으로 실행**: GGUF 양자화 모델 사용
✅ **성능 최적화**: 동시 처리 8개, Context Window 32K 토큰 지원
✅ **통합 시작 스크립트**: Ollama부터 NIKA 서비스까지 원클릭 시작
---
## ⚠️ vLLM에서 발생한 문제
### 문제 증상
- `EngineCore exiting` 오류로 모델 로딩 후 즉시 종료
- `RuntimeError: Engine core initialization failed`
- 다양한 환경변수와 플래그 시도에도 해결되지 않음
### 시도한 해결책 (모두 실패)
1. **환경변수 조정**
- `VLLM_DISABLE_CUSTOM_ALL_REDUCE=1`
- `VLLM_WORKER_MULTIPROC_METHOD=spawn`
- `VLLM_ENGINE_INIT_TIMEOUT=1200`
- `VLLM_IPC_RETRY_COUNT=20`
- 기타 GB10 호환성 관련 환경변수 다수
2. **vLLM 버전 변경**
- `vllm/vllm-openai:nightly` (최신 개발 버전)
- `vllm/vllm-openai:latest` (안정 버전)
- 소스 빌드 시도
3. **결론**
- GB10 아키텍처와 vLLM의 IPC 통신 방식 간 근본적인 호환성 문제로 판단
- vLLM 실행 시 초기화 단계에서 멈춤(Hang) 현상 발생
- 로그상에서 GPU 간 통신(NCCL)이 맺어지지 않고 타임아웃(Timeout) 발생
- Ray(분산 처리 프레임워크)가 워커 프로세스와 통신하지 못해 죽는 현상
- GB10의 특수 아키텍처인 **NVLink-C2C (Chip-to-Chip)**와 vLLM이 사용하는 통신 라이브러리(NCCL) 간의 호환성 문제
- 기본 P2P(Peer-to-Peer) 통신이 ARM64 환경 드라이버 충돌로 인해 제대로 수행되지 않음
- "강제 TCP 전환" (The TCP Workaround)
- vLLM on GB10 (ARM64): 아직 소프트웨어 생태계(PyTorch, Triton, NCCL)가 완벽하게 GB10의 하드웨어 특성을 받아주지 못함. (특히 직접 빌드해야 하는 경우가 많아 의존성 지옥 발생)
- **Ollama로 전환 결정**
---
## 🚀 Ollama로 전환
### 1. Ollama 설치 및 모델 다운로드
```bash
# Ollama 설치 (이미 설치되어 있다면 생략)
# Ubuntu/Debian
curl -fsSL https://ollama.com/install.sh | sh
# Qwen3-Next-80B Q5_K_M 모델 다운로드 (HuggingFace)
ollama pull hf.co/Qwen/Qwen3-Next-80B-A3B-Instruct-GGUF:Q5_K_M
```
### 2. 모델 이름 변경 (선택사항)
```bash
# 다운로드한 모델을 더 짧은 이름으로 등록
ollama create qwen3-next-80b-q5km -f /path/to/Modelfile
```
### 3. Modelfile 생성 (템플릿 문제 해결)
초기 다운로드 시 빈 응답이 발생할 수 있습니다. 이는 템플릿 문제로, 다음 Modelfile을 사용하세요:
```modelfile
FROM qwen3-next-80b-q5km
PARAMETER num_thread 8
PARAMETER num_ctx 32768
PARAMETER stop "<|im_end|>"
PARAMETER stop "<|endoftext|>"
PARAMETER stop "<|eot_id|>"
TEMPLATE """{{- $lastUserIdx := -1 -}}
{{- range $idx, $msg := .Messages -}}
{{- if eq $msg.Role "user" }}{{ $lastUserIdx = $idx }}{{ end -}}
{{- end }}
{{- if or .System .Tools }}<|im_start|>system
{{ if .System }}{{ .System }}
{{ end }}
{{- if .Tools }}# Tools
You may call one or more functions to assist with the user query.
You are provided with function signatures within XML tags:
{{- range .Tools }}
{"type": "function", "function": {{ .Function }}}
{{- end }}
For each function call, return a json object with function name and arguments within XML tags:
{"name": , "arguments": }
{{- end -}}
<|im_end|>
{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 -}}
{{- if eq .Role "user" }}<|im_start|>user
{{ .Content }}<|im_end|>
{{ else if eq .Role "assistant" }}<|im_start|>assistant
{{ if (and $.IsThinkSet (and .Thinking (or $last (gt $i $lastUserIdx)))) -}}
{{ .Thinking }}
{{ end -}}
{{ if .Content }}{{ .Content }}{{ end }}
{{- if .ToolCalls }}
{{- range .ToolCalls }}
{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
{{- end }}
{{- end }}{{ if not $last }}<|im_end|>
{{ end }}
{{- else if eq .Role "tool" }}<|im_start|>user
{{ .Content }}
<|im_end|>
{{ end }}
{{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
{{ end }}
{{- end }}"""
SYSTEM """You are a helpful AI assistant."""
```
---
## ⚡ 성능 최적화 (60GB VRAM 활용)
### 핵심 최적화 설정
60GB VRAM이 충분히 남아있을 때, 다음 설정으로 성능을 극대화할 수 있습니다:
#### 1. 동시 처리량 증가 (`OLLAMA_NUM_PARALLEL`)
**가장 중요**: RAG 시스템은 보통 [검색 → 요약 → 답변] 과정을 거치며 여러 번 모델을 호출합니다. 기본값(1)이라면 요청이 2개만 동시에 들어와도 한 명은 줄 서서 기다려야 합니다.
```bash
export OLLAMA_NUM_PARALLEL=8 # 60GB면 대략 8~10명 동시 처리 가능
```
**효과**: 질문 4개가 동시에 들어와도 4개 다 즉시 답변 시작 (체감 속도 4배 향상)
#### 2. Context Window 확장 (`OLLAMA_NUM_CTX`)
기본값(4096 토큰)은 A4용지 5~6장 분량입니다. RAG 문서를 많이 넣으면 잘립니다.
```bash
export OLLAMA_NUM_CTX=32768 # 32K 토큰 (기본값의 8배)
```
**효과**: PDF 매뉴얼 수십 페이지를 한 번에 입력(Prompt)으로 넣어도 OOM 없이 한 방에 답변 (나눠서 여러 번 물어볼 필요 없음 → 전체 시간 단축)
#### 3. KV Cache 양자화 (선택사항)
60GB나 남기 때문에 굳이 안 해도 되지만, 만약 `num_ctx`를 128k(책 한 권)까지 늘리고 싶다면:
```bash
export OLLAMA_KV_CACHE_TYPE=q8_0 # KV Cache 양자화
```
### 전체 최적화 스크립트
```bash
#!/bin/bash
# Ollama 성능 최적화 환경변수 설정
# 60GB VRAM을 활용한 동시 처리량 및 문맥 크기 최적화
export OLLAMA_NUM_PARALLEL=8 # 동시 처리 요청 수 (60GB VRAM 기준 8~10명 가능)
export OLLAMA_MAX_LOADED_MODELS=1
export OLLAMA_FLASH_ATTENTION=1
export OLLAMA_NUM_CTX=32768 # Context Window 확장 (기본 4096 → 32768)
export OLLAMA_KV_CACHE_TYPE=q8_0 # KV Cache 양자화 (선택사항, 128k까지 확장 시 유용)
```
### Ollama 서버 시작 (최적화 설정 적용)
```bash
# 최적화 환경변수 로드
source setup_ollama_optimization.sh
# Ollama 서버 시작
nohup env OLLAMA_NUM_PARALLEL=8 \
OLLAMA_NUM_CTX=32768 \
OLLAMA_KV_CACHE_TYPE=q8_0 \
ollama serve > /tmp/ollama_server.log 2>&1 &
```
---
## 📊 성능 비교
### 최적화 전 vs 후
| 항목 | 최적화 전 | 최적화 후 | 개선율 |
|------|----------|----------|--------|
| 동시 처리 | 1개 | 8개 | **8배** |
| Context Window | 4,096 토큰 | 32,768 토큰 | **8배** |
| 긴 문서 처리 | 여러 번 분할 필요 | 한 번에 처리 | **시간 단축** |
| 동시 요청 대기 | 큐잉 발생 | 즉시 처리 | **체감 속도 향상** |
---
## 🐛 문제 해결
### 1. 빈 응답 문제
**증상**: 모델이 로딩되지만 응답이 비어있음
**해결책**: Modelfile의 TEMPLATE 섹션을 Qwen3 표준 형식으로 수정 (위의 Modelfile 예시 참조)
### 2. OOM (Out of Memory) 오류
**증상**: 모델 로딩 시 메모리 부족
**해결책**:
- `OLLAMA_NUM_PARALLEL` 값을 줄이기 (8 → 4)
- `OLLAMA_NUM_CTX` 값을 줄이기 (32768 → 16384)
- 다른 프로세스의 메모리 사용량 확인
### 3. API 연결 실패
**증상**: `curl: connection refused` 또는 타임아웃
**해결책**:
```bash
# Ollama 프로세스 확인
ps aux | grep "ollama serve"
# 포트 확인
netstat -tlnp | grep 11434
# Ollama 재시작
pkill -f "ollama serve"
ollama serve
```
---
## 📝 API 사용 예시
### Python
```python
import requests
url = "http://localhost:11434/api/chat"
payload = {
"model": "qwen3-next-80b-q5km",
"messages": [
{"role": "user", "content": "안녕하세요!"}
],
"options": {
"num_ctx": 32768, # Context Window 확장
"num_predict": 512,
"temperature": 0.7,
"top_p": 0.9
}
}
response = requests.post(url, json=payload)
print(response.json())
```
### cURL
```bash
curl http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-next-80b-q5km",
"messages": [
{"role": "user", "content": "안녕하세요!"}
],
"options": {
"num_ctx": 32768,
"num_predict": 512
}
}'
```
---
## 🔗 관련 리소스
- [Ollama 공식 문서](https://ollama.com/docs)
- [Qwen3-Next 모델 정보](https://huggingface.co/Qwen/Qwen3-Next-80B-A3B-Instruct-GGUF)
- [GGUF 양자화 가이드](https://github.com/ggerganov/llama.cpp)
---
## 🙏 감사의 말
이 가이드는 GB10 GPU에서 Qwen3-Next-80B를 실행하기 위해 수많은 시행착오를 거쳐 완성되었습니다. vLLM의 호환성 문제를 Ollama로 우회하고, 60GB VRAM을 최대한 활용하는 최적화 방법을 찾아냈습니다.
**다른 사람들이 같은 고생을 하지 않기를 바라며 이 문서를 공유합니다.**
---
## 📄 라이선스
이 문서는 MIT 라이선스 하에 배포됩니다. 자유롭게 사용, 수정, 배포하실 수 있습니다.
---
**작성자**: NIKA 개발팀
**최종 업데이트**: 2025-12-20