deepseek.cpp: 순수 C++로 작성한, 2천줄 미만의 CPU 전용 DeepSeek-V2/V2.5/V3/R1 모델 추론 엔진

DeepSeek.cpp 소개

deepseek.cpp는 DeepSeek 계열의 대형 언어 모델을 CPU에서 실행할 수 있도록 만든 C++ 기반의 추론 엔진입니다. 원래 Yet Another Language Model (yalm)에 DeepSeek 지원을 추가하려다 코드 변경이 많아져 별도의 프로젝트로 분리되었습니다.

DeepSeek.cpp는 별도 런타임없이 C++ 만으로 실행 가능한 것이 특징이며, DeepSeek-V2-Lite, V2, V2.5, V3, R1 등과 같은 주요 모델들을 실행할 수 있습니다. 또한, F8E5M2, FP16, FP32 등 다양한 데이터 타입 지원하면서도 llama.cpp (약 25만 줄 코드)나 vllm보다 훨씬 가볍게 (<2k LOC, Lines of Code) 동작합니다.

주요 기능

  • DeepSeek 모델 가중치 변환: Hugging Face 포맷의 safetensor 가중치를 .dseek 형식으로 변환하여 사용
  • 다양한 실행 모드 제공:
    • 완성(Completion) 모드: 텍스트 자동 생성
    • Passkey 모드: 무작위 텍스트 삽입
    • Perplexity 모드: 언어 모델의 성능 평가
  • 경량화된 양자화 지원:
    • F8E5M2: 128x128 블록 단위 양자화
    • 향후 INT4, 1.58-bit 지원 예정

DeepSeek.cpp 사용법

1. 필요한 패키지 설치 및 모델 다운로드

# git-lfs 설치
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get -y install git-lfs

# DeepSeek-V2-Lite 모델 다운로드
git clone https://huggingface.co/deepseek-ai/DeepSeek-V2-Lite

2. deepseek.cpp 설치 및 빌드

git clone https://github.com/andrewkchan/deepseek.cpp.git
cd deepseek.cpp

pip install -r requirements.txt

3. 모델 변환 및 실행

# 모델 가중치 변환
python convert.py --dtype fp16 v2-lite-f16 ../DeepSeek-V2-Lite/

# 실행 예제
./build/main v2-lite-f16 -i "What is a large language model?" -m c -t 1.0

실행 옵션

Usage: main <checkpoint_dir> [options]
Example: main model_weights_dir/ -i "Q: What is the meaning of life?"
Options:
  -h   도움말 출력
  -m   실행 모드 선택 (completion, passkey, perplexity)
  -T   슬라이딩 윈도우 컨텍스트 길이 설정
  -i   입력 프롬프트
  -f   프롬프트를 포함한 파일 지정
  -t   온도 값 설정 (기본값 1.0)
  -n   최대 생성 토큰 수 설정 (기본값 256, -1은 무한)

주의점 및 향후 계획

  • 현재 DeepSeek V3의 일부 기능(예: noaux_tc)이 미완성 상태
  • Prefill 최적화 미구현 → 멀티 토큰 예측 및 스펙큘레이티브 디코딩 지원 필요
  • DeepSeek V3 실행 시 RAM 650GB 필요 → INT4, 1.58-bit 등 추가 양자화 방식 지원 예정

:github: DeepSeek.cpp GitHub 저장소

:hugs: DeepSeek 모델 가중치




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: