환영합니다! 이 튜토리얼에서는 6710억 개의 매개변수를 가진 강력한 언어 모델인 DeepSeek V3 0324를 로컬 머신에서 실행하는 방법을 안내합니다. 모델의 정확성과 메모리 요구 사항 간의 균형을 이루는 동적 양자화 기술을 사용하여 준비부터 첫 프롬프트 실행까지 모든 것을 다룰 것입니다.
DeepSeek V3 0324: 얼마나 좋은가요?

2024년 3월 DeepSeek의 업데이트는 이전 V3 모델에 비해 상당한 성능 향상을 가져왔습니다:
- MMLU-Pro 점수 +5.3% 상승 (81.2%)
- AIME 점수 +19.8% 상승
- LiveCodeBench 점수 +10.0% 상승
- GPQA 점수 +9.3% 상승
원래 모델은 대략 6710억 개의 매개변수를 가지고 있으며, 이는 소비자 하드웨어에서 실행하기 위해 효율적인 양자화 기술이 필요함을 의미합니다.
디스크 공간과 정확성을 균형 있게 유지하기 위한 사용 가능한 양자화 옵션은 다음과 같습니다:
MoE 비트 유형 | 디스크 크기 | 정확성 | 세부정보 |
---|---|---|---|
1.78비트 (IQ1_S) | 173GB | 괜찮음 | 2.06/1.56비트 |
1.93비트 (IQ1_M) | 183GB | 보통 | 2.5/2.06/1.56 |
2.42비트 (IQ2_XXS) | 203GB | 추천 | 2.5/2.06비트 |
2.71비트 (Q2_K_XL) | 231GB | 추천 | 3.5/2.5비트 |
3.5비트 (Q3_K_XL) | 320GB | 매우 좋음 | 4.5/3.5비트 |
4.5비트 (Q4_K_XL) | 406GB | 최고 | 5.5/4.5비트 |
원래 float8 모델은 715GB를 차지하므로, 이러한 양자화된 버전은 상당한 공간 절약을 제공합니다!
단계별 튜토리얼: llama.cpp에서 DeepSeek V3 0324 실행하기
시작하기 전에 DeepSeek V3 0324의 최적 설정을 이해해 봅시다:
- 온도: 0.3 (코딩 작업을 위해서는 0.0 사용)
- Min_P: 0.01 (가능성이 낮은 토큰을 필터링하는 데 도움)
- 채팅 템플릿:
<|User|>YOUR_PROMPT<|Assistant|>
- KV 캐시 양자화를 위해 더 나은 성능을 위해 8비트(4비트 아님) 사용
1단계: llama.cpp 설정하기
먼저 llama.cpp를 가져와서 컴파일해야 합니다:
# 패키지 업데이트 및 필요한 종속성 설치
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
# llama.cpp 리포지토리 복제
git clone <https://github.com/ggml-org/llama.cpp>
# GPU를 위한 CUDA 지원을 사용하여 빌드하기 (-DGGML_CUDA=OFF는 CPU 전용)
# 참고: CUDA를 사용하여 빌드하는 데 약 5분 정도 걸릴 수 있습니다.
cmake llama.cpp -B llama.cpp/build \\\\
-DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
# 필요한 도구 빌드
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split
# 쉽게 접근할 수 있도록 빌드한 도구 복사
cp llama.cpp/build/bin/llama-* llama.cpp/
2단계: 양자화된 모델 다운로드
필요한 Python 패키지를 설치하고 모델을 다운로드합니다:
pip install huggingface_hub hf_transfer
# 더 빠른 다운로드를 위한 환경 설정
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
# 모델 다운로드 (여기서는 균형을 맞추기 위해 2.7비트 동적 양자화 사용)
from huggingface_hub import snapshot_download
snapshot_download(
repo_id = "unsloth/DeepSeek-V3-0324-GGUF",
local_dir = "unsloth/DeepSeek-V3-0324-GGUF",
allow_patterns = ["*UD-Q2_K_XL*"], # 동적 2.7비트 (230GB)
# 공간이 제한적이면 "*UD-IQ_S*"를 동적 1.78비트 (151GB)에 사용
)
3단계: 테스트 프롬프트 실행
모델이 Flappy Bird 게임을 만들도록 요청하는 프롬프트로 테스트해 보겠습니다:
./llama.cpp/llama-cli \\\\
--model unsloth/DeepSeek-V3-0324-GGUF/UD-Q2_K_XL/DeepSeek-V3-0324-UD-Q2_K_XL-00001-of-00006.gguf \\\\
--cache-type-k q8_0 \\\\
--threads 20 \\\\
--n-gpu-layers 2 \\\\
-no-cnv \\\\
--prio 3 \\\\
--temp 0.3 \\\\
--min_p 0.01 \\\\
--ctx-size 4096 \\\\
--seed 3407 \\\\
--prompt "<|User|>Python으로 Flappy Bird 게임을 만드세요. 다음 사항을 반드시 포함해야 합니다:
1. pygame을 사용해야 합니다.
2. 배경 색상은 무작위로 선택되며 밝은 색조여야 합니다. 밝은 파란색으로 시작하세요.
3. SPACE를 여러 번 누르면 새가 가속됩니다.
4. 새의 모양은 정사각형, 원, 삼각형 중에서 무작위로 선택해야 합니다. 색상은 어두운 색으로 무작위 선택해야 합니다.
5. 바닥에 어두운 갈색 또는 무작위로 선택된 노란색의 땅을 배치합니다.
6. 오른쪽 상단에 점수를 표시합니다. 파이프를 지나치고 부딪히지 않으면 점수가 증가합니다.
7. 충분한 공간이 있는 파이프를 무작위로 배치합니다. 색상은 어두운 초록색, 밝은 갈색 또는 어두운 회색 음영으로 무작위 선택해야 합니다.
8. 잃으면 최고 점수를 보여줍니다. 텍스트는 화면 안에 있어야 하며, q 또는 Esc를 누르면 게임이 종료됩니다. SPACE를 다시 누르면 다시 시작됩니다.
최종 게임은 Python의 마크다운 섹션 내에 있어야 합니다. 코드를 오류 없이 점검하고 최종 마크다운 섹션 전에 수정하세요.<|Assistant|>"
매개변수에 대한 설명은 다음과 같습니다:
-model
: 모델 파일의 경로-cache-type-k q8_0
: KV 캐시에 8비트 양자화 사용-threads 20
: CPU 스레드 수 (CPU에 따라 조정)-n-gpu-layers 2
: GPU로 오프로드할 레이어 수 (메모리 문제 시 조정)no-cnv
: 성능상의 이유로 컨볼루션 비활성화-prio 3
: 우선순위 설정-temp 0.3
: 온도 설정 (결정론적 코딩을 위해 0.0 사용)-min_p 0.01
: 토큰 샘플링을 위한 최소 확률-ctx-size 4096
: 컨텍스트 윈도우 크기-seed 3407
: 재현성을 위한 랜덤 시드
"칠각형 도전 과제"로 DeepSeek V3 0324 테스트하기
모델의 능력을 더욱 시험해보려면 "칠각형 도전 과제"를 실행하여 모델이 회전하는 칠각형 안에서 공들이 튕기는 복잡한 물리 시뮬레이션을 만들도록 요청할 수 있습니다:
./llama.cpp/llama-cli \\\\
--model unsloth/DeepSeek-V3-0324-GGUF/UD-Q2_K_XL/DeepSeek-V3-0324-UD-Q2_K_XL-00001-of-00006.gguf \\\\
--cache-type-k q8_0 \\\\
--threads 20 \\\\
--n-gpu-layers 2 \\\\
-no-cnv \\\\
--prio 3 \\\\
--temp 0.3 \\\\
--min_p 0.01 \\\\
--ctx-size 4096 \\\\
--seed 3407 \\\\
--prompt "<|User|>20개의 공이 회전하는 칠각형 안에서 튕기는 Python 프로그램을 작성하세요:
- 모든 공은 같은 반지름을 가져야 합니다.
- 모든 공에는 1에서 20까지의 숫자가 있어야 합니다.
- 모든 공은 시작할 때 칠각형의 중앙에서 떨어져야 합니다.
- 색상은: #f8b862, #f6ad49, #f39800, #f08300, #ec6d51, #ee7948, #ed6d3d, #ec6800, #ec6800, #ee7800, #eb6238, #ea5506, #ea5506, #eb6101, #e49e61, #e45e32, #e17b34, #dd7a56, #db8449, #d66a35
- 공들은 중력과 마찰에 영향을 받아야 하며, 회전하는 벽을 현실적으로 튕겨야 합니다. 공들 사이의 충돌도 있어야 합니다.
- 모든 공의 재질로 인해 충격 반사 높이가 칠각형의 반지름을 초과하지 않도록 하되 공의 반지름보다 높아야 합니다.
- 모든 공은 마찰과 함께 회전하며, 공에 있는 숫자는 공의 회전을 나타낼 수 있습니다.
- 칠각형은 중심을 중심으로 회전하며 회전 속도는 5초에 360도입니다.
- 칠각형의 크기는 모든 공을 담을 수 있을 만큼 커야 합니다.
- pygame 라이브러리를 사용하지 말고 충돌 감지 알고리즘 및 충돌 반응 등을 직접 구현하세요. 다음 Python 라이브러리는 허용됩니다: tkinter, math, numpy, dataclasses, typing, sys.
- 모든 코드는 하나의 Python 파일에 넣어야 합니다.<|Assistant|>"
DeepSeek V3 0324 성능 최적화
플래시 어텐션: 더 빠른 디코딩을 위해 llama.cpp를 컴파일할 때 플래시 어텐션을 사용합니다:
-DGGML_CUDA_FA_ALL_QUANTS=ON
CUDA 아키텍처: 컴파일 시간을 줄이기 위해 특정 CUDA 아키텍처를 설정합니다:
-DCMAKE_CUDA_ARCHITECTURES="80" # GPU에 맞춰 조정
매개변수 조정:
- 메모리 부족 문제가 발생하면
-n-gpu-layers
수를 줄여보세요. - CPU 전용 추론의 경우
-n-gpu-layers
매개변수를 제거하세요. - CPU 코어에 따라
-threads
를 조정하세요.
이제 로컬에서 DeepSeek V3 0324를 실행할 수 있습니다! 요약하자면:
- CUDA 지원으로 llama.cpp를 설정했습니다.
- 모델의 양자화된 버전(2.7비트 동적 양자화)을 다운로드했습니다.
- 모델의 능력을 확인하기 위해 테스트 프롬프트를 실행했습니다.
- 최적 설정 및 성능 팁에 대해 배웠습니다.
2.7비트 동적 양자화는 디스크 공간(231GB)과 모델 정확성 간의 우수한 균형을 제공하여 이 671B 매개변수 모델을 효율적으로 실행할 수 있습니다.
이 강력한 모델을 최대한 활용하기 위해 다양한 프롬프트와 매개변수로 실험해 보세요!
Apidog를 사용한 DeepSeek API 테스트
DeepSeek를 로컬에서 실행하는 대신 API를 통해 사용하는 애플리케이션을 개발하고 있다면, Apidog는 API 개발, 테스트 및 디버깅을 위한 강력한 도구를 제공합니다.
DeepSeek API 테스트를 위한 Apidog 설정하기
1단계: Apidog 다운로드 및 설치
- https://apidog.com/download/를 방문하여 운영 체제에 맞는 Apidog 클라이언트를 다운로드합니다.
2. Apidog를 설치하고 실행한 후 계정을 생성하거나 Google/Github로 로그인합니다.
3. 요청 시, 역할(예: "전체 스택 개발자")과 선호하는 작업 모드(예: "API 디자인 우선")를 선택하세요.
2단계: DeepSeek를 위한 새로운 API 프로젝트 생성
- DeepSeek API 테스트를 위한 새로운 HTTP 프로젝트를 Apidog에서 생성합니다.
- 프로젝트에 DeepSeek API 엔드포인트를 추가합니다.

DeepSeek의 스트리밍 응답 디버깅
DeepSeek와 다른 많은 AI 모델은 스트리밍 응답을 위한 서버 전송 이벤트(SSE)를 사용합니다. Apidog(버전 2.6.49 이상)는 SSE 디버깅을 위한 기본 지원을 제공합니다:
- Apidog에서 DeepSeek API 엔드포인트를 생성하고 구성합니다.
- DeepSeek API에 요청을 보냅니다.
- 응답에
Content-Type: text/event-stream
헤더가 포함되어 있으면 Apidog가 자동으로 SSE 이벤트로 처리합니다. - 응답 패널의 타임라인 보기에서 실시간 스트리밍 응답을 확인합니다.

Apidog는 다음과 같은 인기 AI 모델 형식에 대한 기본 지원을 제공합니다:
- OpenAI API 호환 형식
- Gemini API 호환 형식
- Claude API 호환 형식
DeepSeek의 경우, Apidog는 타임라인에 모델의 사고 과정을 표시하여 AI의 추론에 대한 통찰력을 제공합니다.
DeepSeek의 SSE 응답 처리 사용자화
DeepSeek의 응답 형식이 Apidog의 기본 인식 규칙과 일치하지 않는 경우:
JSON 형식의 SSE 응답에 대한 JSONPath 추출 규칙을 구성할 수 있습니다:
- 응답이
data: {"choices":[{"index":0,"message":{"role":"assistant","content":"H"}}]}
와 같은 경우 - JSONPath 사용:
$.choices[0].message.content
비-JSON SSE 메시지에 대해 후처리 스크립트를 사용할 수 있습니다:
- 데이터 형식을 처리하기 위한 사용자 정의 스크립트 작성
- 특정 요구 사항에 따라 메시지를 처리
DeepSeek API에 대한 자동 테스트 만들기
DeepSeek API 엔드포인트를 설정한 후, Apidog에서 자동 테스트를 생성하여 올바르게 작동하는지 확인할 수 있습니다:
- 테스트 모듈에서 다양한 프롬프트 유형에 대한 테스트 시나리오를 생성합니다.
- 응답 구조 및 내용을 검증하고 assertions 추가합니다.
- 다양한 환경(예: 개발, 생산)에서 실행하도록 테스트 시나리오를 구성합니다.
- 여러 시나리오를 한 번에 테스트하기 위해 배치 실행을 설정합니다.
CI/CD 통합을 위해 Apidog CLI를 사용하면 이러한 테스트를 파이프라인의 일부로 실행할 수 있습니다:
# Apidog CLI 설치
npm install -g apidog-cli
# 테스트 시나리오 실행
apidog run test-scenario -c <collection-id> -e <environment-id> -k <api-key>

apidog-cli의 작동 방식에 대한 자세한 내용은 공식 문서를 참조하세요.
DeepSeek API 성능 테스트
Apidog는 또한 부하 하에서 DeepSeek API가 어떻게 작동하는지 평가하기 위한 성능 테스트 기능을 제공합니다:
DeepSeek API에 대한 호출을 포함하는 테스트 시나리오를 생성합니다.
성능 테스트 설정을 구성합니다:
- 가상 사용자 수 설정(최대 100명)
- 테스트 기간 지정
- 점진적인 사용자 증가를 시뮬레이션하기 위한 ramp-up 기간 구성
성능 테스트를 실행하여 다음과 같은 주요 지표를 확인합니다:
- 평균 처리량
- 평균 응답 시간
- 최대/최소 응답 시간
- 오류율
이는 DeepSeek 배포가 동시에 여러 요청을 처리하는 방식을 이해하는 데 특히 유용합니다.
결론
이제 로컬에서 DeepSeek V3 0324를 실행할 수 있으며 Apidog를 사용하여 DeepSeek API를 효과적으로 테스트하는 방법에 대한 지식을 갖추게 되었습니다! 요약하자면:
- CUDA 지원으로 llama.cpp를 설정했습니다.
- 모델의 양자화된 버전(2.7비트 동적 양자화)을 다운로드했습니다.
- 모델의 능력을 확인하기 위해 테스트 프롬프트를 실행했습니다.
- DeepSeek API 테스트 및 디버깅을 위해 Apidog를 사용하는 방법을 배웠습니다.
- 로컬 배포 및 API 테스트를 위한 성능 최적화 팁을 탐색했습니다.
2.7비트 동적 양자화는 디스크 공간(231GB)과 모델 정확성 간의 우수한 균형을 제공하여 이 671B 매개변수 모델을 효율적으로 실행할 수 있게 해줍니다. 한편, Apidog는 DeepSeek API 구현을 개발하고 테스트하며 디버그하는 데 강력한 도구를 제공하며, 특히 스트리밍 응답에 대한 SSE 디버깅 기능을 가지고 있습니다.
특정 요구 사항에 가장 적합한 설정을 찾기 위해 다양한 양자화 옵션과 Apidog 기능을 실험해 보세요!