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 등 추가 양자화 방식 지원 예정
DeepSeek.cpp GitHub 저장소
DeepSeek 모델 가중치
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~