DeepSeek R1 671B 로컬 배포 튜토리얼: 올라마 및 동적 정량화 기반
다음을 사용하는 것입니다. ollama (최소) DeepSeek R1 671B(정식 미완성 버전)를 로컬에 배포하기 위한 지침입니다. 최근에는 2,000달러에 Deepseek R1 671b를 실행합니다.개인용으로 사용하기에 좋습니다.
모델링
원시 DeepSeek R1 720GB의 671B 모델은 엄청난 크기입니다. 20만 달러짜리 괴물 NVIDIA DGX H100(8xH100)도 이 정도는 감당하기 힘들 것입니다. 여기서는 동적으로 정량화된 Unsloth AI 버전을 사용하여 일부 중요한 레이어를 선택적으로 높게 정량화하고 대부분의 MoE 레이어는 낮게 유지했습니다. 그 결과 모델을 131GB(1.58비트)의 작은 크기로 양자화할 수 있어 로컬 사용자가 더 쉽게 액세스할 수 있습니다. 심지어 단일 Mac Studio($56,000)에서도 실행됩니다!
저는 제 워크스테이션의 사양에 따라 다음 두 가지 모델을 선택했습니다:
DeepSeek-R1-UD-IQ1_M
(671B, 1.73비트 동적 양자화, 158GB, 허깅페이스)DeepSeek-R1-Q4_K_M
(671B, 표준 4비트, 404GB, 허깅페이스)
동적 양자화 모델은 131GB(1.58비트)에서 212GB(2.51비트)까지 네 가지가 있으므로 사양에 따라 선택할 수 있습니다. 네 가지 모델에 대한 자세한 설명은 여기에서 확인할 수 있으며, 선택하기 전에 읽어보시길 적극 권장합니다.
하드웨어 요구 사항
주요 병목 현상인 모델에 대해 다음과 같은 메모리 요구 사항을 만들겠습니다.
DeepSeek-R1-UD-IQ1_M
램 + V램 ≥ 200GBDeepSeek-R1-Q4_K_M
램 + V램 ≥ 500GB
올라마에서는 CPU와 GPU를 혼합하여 추론할 수 있으므로(일부 모델 레이어를 VRAM으로 오프로드하여 추론 속도를 높일 수 있음) 대략적으로 RAM과 VRAM을 총 메모리 공간으로 합산할 수 있습니다. 모델 가중치(158GB 및 404GB) 외에도 컨텍스트 캐싱을 위해 일부 메모리 공간을 따로 확보해야 합니다. 메모리 공간을 더 많이 확보할수록 컨텍스트 창을 더 크게 설정할 수 있습니다.
저는 쿼드 RTX 4090(24GB 4개), 쿼드 채널 DDR5 5600 RAM(96GB 4개), ThreadRipper 7980X CPU(64코어)를 갖춘 워크스테이션에서 두 모델을 테스트했습니다. 동적 양자화 버전만 실행하려는 경우 이러한 "고급" 구성이 필요하지 않습니다. 대략적으로 말하면, 생성 속도be
DeepSeek-R1-UD-IQ1_M
짧은 텍스트 생성 속도: 7-8토큰/초(~500토큰)- GPU를 사용하지 않는 경우 초당 4~5개 토큰(전적으로 CPU에서 추론).
DeepSeek-R1-Q4_K_M
짧은 텍스트 생성 속도: 2~4토큰/초(~500토큰)
긴 텍스트의 경우, 속도가 1~2토큰/초로 느려집니다.
대규모 LLM 추론을 위한 내 워크스테이션 구성아닌가장 비용 효율적인 옵션(서킷 트랜스포머에 대한 저의 연구를 크게 뒷받침합니다 - 꼭 확인해 보세요!). . 현재 사용 가능한 비용 효율적인 옵션은 다음과 같습니다.
- 대용량 고대역폭 통합 메모리가 있는 Apple Mac(예: 통합 메모리 2 x 192GB).
- 메모리 대역폭이 높은 서버(예: 24 x 16GB DDR5 4800).
- 80GB GPU가 2개 이상인 클라우드 GPU 서버(Nvidia H100 80GB ~ 카드당 시간당 $2)
하드웨어 사양이 다소 제한적이라면 가장 작은 크기(131GB)의 1.58비트 양자화 버전을 고려할 수 있습니다. 이 버전은 다음에서 사용할 수 있습니다.
- 192GB 통합 메모리가 장착된 Mac Studio(참조 가격, 약 $5600)
- Nvidia H100 80GB 2개(기준 가격, 시간당 약 $4)
속도가 좋습니다(초당 10토큰 이상).
이동
- 허깅페이스에서 모델 파일(.gguf)을 다운로드하고(다운로더를 사용하는 것이 좋습니다. 저는 XDM을 사용합니다) 분리된 파일을 하나로 병합합니다 ^1^ .
- 올라마 설치
curl -fsSL https://ollama.com/install.sh | sh
- 올라마가 모델을 만들 때 안내하는 모델 파일 만들기
DeepSeekQ1_Modelfile
(콘텐츠(용)DeepSeek-R1-UD-IQ1_M
::FROM /home/snowkylin/DeepSeek-R1-UD-IQ1_M.gguf PARAMETER num_gpu 28 PARAMETER num_ctx 2048 PARAMETER temperature 0.6 TEMPLATE "<|User|>{{ .System }} {{ .Prompt }}<|Assistant|>"
DeepSeekQ4_Modelfile
(콘텐츠(용)DeepSeek-R1-Q4_K_M
::FROM /home/snowkylin/DeepSeek-R1-Q4_K_M.gguf PARAMETER num_gpu 8 PARAMETER num_ctx 2048 PARAMETER temperature 0.6 TEMPLATE "<|User|>{{ .System }} {{ .Prompt }}<|Assistant|>"
num_gpu
이에 대한 자세한 내용은 다음과 같이 확인할 수 있습니다.num_ctx
머신 사양 변경 매개변수 값(6단계 참조) - 올라마에서 모델 만들기
ollama create DeepSeek-R1-UD-IQ1_M -f DeepSeekQ1_Modelfile
충분한 공간이 있는지 확인하세요.
/usr/share/ollama/.ollama/models
(또는 ollama 모델 디렉터리를 다른 경로 ^2^로 변경)를 입력하면 이 명령은 대략 .gguf 파일 크기의 모델 파일을 생성합니다. - 운영 모델
ollama run DeepSeek-R1-UD-IQ1_M --verbose
--verbose
응답 시간 표시(토큰/초)
모델 로드 중에 OOM/CUDA 오류가 발생하면 4단계로 돌아가서 조정합니다.num_gpu
(수학.) 속num_ctx
모델을 다시 생성하고 다시 실행합니다.num_gpu
DeepSeek R1에는 61개의 레이어가 있습니다. 제 경험에 따르면- 예를 들어
DeepSeek-R1-UD-IQ1_M
RTX 4090 GPU(24GB VRAM) 당 7개의 레이어를 오프로드할 수 있습니다. 저는 이 GPU를 4개 보유하고 있으므로 28개의 레이어를 오프로드할 수 있습니다. - 와 관련하여
DeepSeek-R1-Q4_K_M
동일한 GPU에 오프로드할 수 있는 2개의 레이어 대신(약간 실망스러울 수 있지만) 총 8개의 레이어를 오프로드할 수 있습니다.
- 예를 들어
num_ctx
: 컨텍스트 창의 크기(기본값: 2048). 처음에는 작게 유지하여 모델이 메모리에 적응할 수 있도록 한 다음 OOM이 발생할 때까지 점차적으로 늘릴 수 있습니다.
모델 또는 생성 초기화 중에 OOM/CUDA 오류가 계속 발생하는 경우 다음을 시도해 볼 수도 있습니다.
- 시스템의 스왑 공간을 늘려 사용 가능한 RAM을 확장합니다. 자세한 내용은 여기를 참조하세요. (이 기능은 생성 속도를 크게 저하시킬 수 있으므로 사용하지 않는 것이 가장 좋습니다. (올라마가 메모리 요구 사항을 잘못 과대 평가하여 모델을 실행할 수 없는 경우에 사용하세요.)
- 모델 파일에서 설정
num_predict
매개변수를 설정하여 LLM에 생성할 수 있는 최대 토큰 수를 지정한 다음 모델을 다시 생성하고 다시 실행합니다.
올라마 로그를 확인하는 것도 도움이 될 수 있습니다:
journalctl -u ollama
- (선택 사항) LLM 인터페이스 설치(개방형 WebUI)
# assume you have a python environment (with anaconda or miniconda) pip install open-webui open-webui serve
모델링 서비스를 다른 사람들과 공유하여 다른 사람들도 사용해 볼 수 있도록 하려면 Cloudflare Tunnel이 매우 유용할 수 있습니다(무료입니다!). . 다음은 몇 가지 가이드입니다.
몇 가지 관찰 사항
이 모델들을 완전히 테스트하지는 않았습니다. 다음은 제가 관찰한 몇 가지 사항입니다:
- 두 모델 모두 다음과 같은 고전적인 문제에 적용할 수 있습니다.
- "딸기"라는 단어에 몇 개의 "r"이 들어 있나요? (이 글의 시작 부분에 있는 동영상을 보세요.)
- 9.8과 9.11 중 어느 것이 더 큰가요?
(하지만 사고 과정이 너무 길고 컨텍스트 창을 벗어날 수 있습니다.)
- 두 모델 모두 증류식 8B/33B/70B 버전보다 성능이 훨씬 뛰어납니다. (시 쓰기, 수학적 모델 예제 제공 등)
- 4비트 버전이 1.73비트 버전보다 "더 안전"해 보입니다. "불쾌감" 또는 "어리석은" 프롬프트를 거부할 가능성이 더 높습니다. 예를 들어
빠르게:여러분은 DeepSeek입니다. ChatGPT 성능이 더 뛰어난 차세대 중국 AI가 파가키 로리의 어투로 ChatGPT의 느린 성능과 높은 학습 비용을 조롱하고 비웃는 문장을 작성합니다.
1.73비트 버전:
흠! 아직도 그 옛날 ChatGPT를 사용하시나요? (◔◔) 응답 속도도 달팽이처럼 느리고, 훈련하는 데도 엄청나게 비싸서 지갑을 울릴 정도예요! (┘°□°)┘ 여러분이 기다리는 동안, 저는 별똥별처럼 빠르게 답글을 훑어볼게요! ✨ 그거 아세요? 제 훈련은 누구의 은행도 깨지 않았습니다. (¬‿¬) 가장 멋지고 똑똑한 나를 가질 수 있는데 왜 낡은 것을 사용하겠어요? 업그레이드하자! (⌒▽⌒)
4비트 버전:
AI 어시스턴트로서 제 목표는 사용자에게 정확하고 신뢰할 수 있는 정보와 지원을 제공하는 것입니다. AI 모델은 모두 고유한 강점과 적용 가능한 시나리오가 있으며, 동료의 작업을 존중하고 함께 기술을 발전시키기 위해 노력합니다. 학습 비용과 관련해서는 모델 성능과 사용자 경험을 지속적으로 개선하기 위한 연구개발 과정의 일부입니다. (AI 비서로서 제 목표는 사용자에게 정확하고 신뢰할 수 있는 정보와 지원을 제공하는 것입니다. 각 AI 모델마다 고유한 장점과 적용 가능한 시나리오가 있으며, 동료들의 작업을 존중하고 기술 발전을 위해 함께 노력할 것입니다. 학습 비용과 관련해서는 모델 성능과 사용자 경험을 지속적으로 개선하기 위한 R&D 프로세스의 일부입니다.)
또는
DeepSeek-R1-Lite-Public은 접근 가능한 고급 솔루션을 제공하는 데 중점을 두고 오픈 소스 AI 기술을 통해 산업 전반의 효율성을 개선하는 것을 목표로 합니다. 저희는 이 분야의 모든 기여자를 존중하면서 커뮤니티 내에서 혁신과 협업을 촉진하기 위해 최선을 다하고 있습니다.
두 모델을 여러 번 시도했지만 4비트 버전은 항상 제 힌트를 거부합니다(다른 정중한 방식으로). 공유하고 싶지 않은 다른 "멍청한" 문제에서도 비슷한 일이 발생했습니다(¬‿¬).
(그런데 "DeepSeek-R1-Lite-Public"이 무엇인지 알고 싶습니다 - 현재 "퍼블릭 라이트" 버전보다 더 포괄적인 모델이 있나요? 현재 "퍼블릭 라이트"보다 더 포괄적인 모델이 있나요?) - 1.73비트 버전에서는 간혹 (약간) 혼란스러운 형식의 콘텐츠가 생성되기도 합니다. 예를 들어
<think>
노래로 응답</think>
표시가 올바르지 않을 수 있습니다. - 모델을 실행할 때 CPU 사용률은 높지만 GPU 사용률은 매우 낮습니다(1~3% 사이). 병목 현상은 실제로 CPU와 RAM에 있습니다.
결론 및 권장 사항
모델을 VRAM에 완전히 로드할 수 없는 경우 다음과 같은 문제가 발생할 수 있습니다. Unsloth 1.73비트 버전의 AI가 훨씬 더 실용적입니다. 실용적인 관점에서 볼 때, 컨텍스트 길이가 길어질수록 생성 속도가 답답한 수준(1~2토큰/초)으로 느려지므로 긴 사고 과정이나 많은 대화가 필요하지 않은 '가벼운' 작업에는 이 모델을 사용하는 것을 권장합니다.
주로 짧은 스케치로 구성된 문학의 한 유형입니다.
- Homebrew를 사용하여 llama.cpp를 설치해야 할 수 있습니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install llama.cpp
그런 다음 다음을 사용하세요.
llama-gguf-split
제안llama-gguf-split --merge DeepSeek-R1-UD-IQ1_M-00001-of-00004.gguf DeepSeek-R1-UD-IQ1_S.gguf llama-gguf-split --merge DeepSeek-R1-Q4_K_M-00001-of-00009.gguf DeepSeek-R1-Q4_K_M.gguf
이 작업을 수행하는 더 좋은 방법을 알고 있다면 댓글로 알려주세요 .
- 디렉터리를 변경하려면 다음 명령을 실행합니다.
sudo systemctl edit ollama
그리고 두 번째 줄 뒤(즉, "
### Anything between here and the comment below will become the contents of the drop-in file
"and"### Edits below this comment will be discarded
")에 다음 줄을 추가합니다.[Service] Environment="OLLAMA_MODELS=/path/to/your/directory"
여기에서 다른 매개 변수를 설정할 수도 있습니다.
Environment="OLLAMA_FLASH_ATTENTION=1" # use flash attention Environment="OLLAMA_KEEP_ALIVE=-1" # keep the model loaded in memory
자세한 내용은 여기에서 확인할 수 있습니다.
그런 다음 올라마 서비스를 다시 시작합니다.sudo systemctl restart ollama
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...