초록
2025년 2월 10일최대 3~28배의 속도 향상과 함께 단일 GPU(24GB RAM) / 다중 GPU 및 382GB RAM에서 DeepseekR1 및 V3를 지원합니다.
안녕하세요, KTransformers 팀(이전에는 CPU/GPU 하이브리드 추론 오픈 소스 프로젝트 팀, DeepSeek-V2로 알려짐)의 모든 분들께 인사드립니다.
KT트랜스포머 저희 팀은 DeepSeek-R1/V3 지원 요청을 받아왔으며, 마침내 이를 제공하게 되어 매우 기쁘게 생각합니다!
기다리게 해서 죄송합니다만, KT트랜스포머 팀이 정말 놀라운 것을 준비했습니다!
오늘, KTransformers 팀은 아래 동영상에서 볼 수 있듯이 DeepSeek-R1/V3를 지원하게 된 것을 자랑스럽게 발표합니다:
https://github.com/user-attachments/assets/ebd70bfa-b2c1-4abb-ae3b-296ed38aa285
- [업데이트됨!!!!] 로컬 671B DeepSeek-Coder-V3/R1. Q4_K_M 버전은 14GB의 비디오 메모리와 382GB의 RAM으로만 실행됩니다.
- 프리필 속도(토큰/초).
- KTransfermor: 54.21(32코어) → 74.362(듀얼 경로, 2×32코어) → 255.26(최적화된 AMX 기반 MoE 커널, V0.3 전용) → 286.55(전문가 6명 선택적 사용, V0.3 전용).
- 와 함께 llama.cpp 2×32 코어에서 최대 10.31 토큰/s를 달성한 것에 비해 27.79배 가속.
- 디코딩 속도(토큰/초).
- KTransfermor: 8.73(32코어) → 11.26(듀얼, 2×32코어) → 13.69(전문가 6명 선택적 사용, V0.3 전용)
- 2×32 코어에서 4.51 토큰/초인 llama.cpp와 비교하면 최대 3.03배 가속.
- 프리필 속도(토큰/초).
또한, KTransformers 팀은 성능을 크게 향상시킬 인텔 AMX 가속 커널과 선택적 전문가 활성화 방법을 포함한 향후 최적화에 대한 미리 보기를 제공했습니다. V0.3 프리뷰에서는 프리필 속도가 최대 286토큰/s로, 네이티브 추론의 경우 llama.cpp보다 빠릅니다! 28회.
이제 바이너리 배포판을 사용할 수 있으며 소스 코드는 가능한 한 빨리 공개할 예정입니다!여기에서 휠 패키지 보기.
준비 조건
KT트랜스포머 팀은 다음 구성에서 최상의 성능 테스트(V0.2)를 실행했습니다:
CPU: 인텔(R) 제온(R) 골드 6454S 1T RAM(NUMA 노드 2개)
GPU: 4090D 24G 비디오 메모리
메모리: 표준 DDR5-4800 서버 메모리(1TB)
벤치마킹 결과
V0.2
설정
- 모델: DeepseekV3-q4km(int4)
- CPU: cpu_모델명: 인텔(R) 제온(R) 골드 6454S, 경로당 32코어, 경로 2개, 누마 노드 2개
- GPU: 4090D 24G 비디오 메모리
- 충분한 워밍업 후 KT트랜스포머 팀 테스트
메모리 사용량.
- 단일: 382G RAM, 최소 14GB VRAM
- 듀얼: 1T RAM, 최소 14GB VRAM
벤치마킹 결과
'6명의 전문가' 시나리오는 V0.3 프리뷰의 일부입니다.
| 프롬프트
(500 토큰) | 듀얼 케이트랜스(전문가 6명) | 듀얼 케이트랜스(전문가 8명) | 싱글 케이트랜스(전문가 6명) | 싱글 케이트랜스(전문가 8명) | llama.cpp (8 전문가) |
---|---|---|---|---|---|
토큰 미리 채우기 | 97.32 | 82.94 | 65.14 | 54.21 | 10.31 |
토큰 디코딩 | 13.69 | 12.208 | 10.303 | 8.73 | 4.51 |
디코딩 속도를 최대 3.03배사전 채우기 속도 최대 증가 9.44배. KTransformers는 디코딩 가속 측면에서 미리 채워진 것만 큼 좋지 않으며 디코딩 최적화의 여지가 여전히 많은 것 같습니다.
V0.3-프리뷰
설정
- 모델: DeepseekV3-BF16(CPU의 경우 int8, GPU의 경우 int4로 온라인 정량화)
- CPU: cpu_모델명: 인텔(R) 제온(R) 골드 6454S, 경로당 32코어, 경로 2개, 누마 노드 2개
- GPU: (1~4)x 4090D 24GVRAM(프롬프트가 길어질수록 더 많은 메모리 필요)
메모리 사용량.
- 644GB RAM, 최소 14GB 그래픽 메모리
벤치마킹 결과
프롬프트 길이 | 1K | 2K | 4K | 8K |
---|---|---|---|---|
KTrans (전문가 8명) 프리필 토큰/s | 185.96 | 255.26 | 252.58 | 195.62 |
KTrans (전문가 6명) 프리필 토큰/s | 203.70 | 286.55 | 271.08 | 207.20 |
KTrans V0.3은 사전 채우기에서 KTrans V0.2보다 빠릅니다. 3.45배llama.cpp보다 빠릅니다. 27.79배. 이러한 사전 채우기 속도 향상은 정말 인상적이며, KTransformers가 사전 채우기 최적화에 많은 노력을 기울인 것으로 보입니다.
디코딩 속도는 KTrans V0.2(6 전문가 버전)와 동일하므로 생략합니다. V0.3 버전은 주로 미리 채우기 속도 개선에 중점을 둔 것으로 보입니다.
주요 가속은 다음에서 비롯됩니다.
- KT트랜스포머 팀이 설계한 인텔 AMX 명령어 세트 및 캐시 친화적인 메모리 레이아웃
- 도메인 외부 데이터의 오프라인 프로필 결과를 기반으로 더 적은 수의 전문가를 선정하는 전문가 선정 전략
딥시크릿V2, 딥시크릿V3, 딥시크릿R1의 KT트랜스포머 팀에 따르면, 다음과 같이 말합니다.
추론에서 활성화된 전문가 수를 약간 줄이면
출력 품질은 변하지 않습니다. 하지만 디코딩 및 사전 채우기 속도는 달라집니다.
의 속도가 빨라질 것이라는 점은 매우 고무적입니다. 따라서 KTransformers 팀의 데모는 이 발견을 활용합니다. '전문가 선정 전략'이 속도를 높이는 열쇠인 것 같지만, 결과물의 품질이 저하되지 않도록 보장하는 방법은 더 많은 테스트와 검증이 필요합니다.
작동 방식
V0.2 데모
단일 경로 버전(32코어)
KTransformers 팀의 local_chat
테스트 명령은 다음과 같습니다:
git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
numactl -N 1 -m 1 python ./ktransformers/local_chat.py --model_path <your model path> --gguf_path <your gguf path> --prompt_file <your prompt txt file> --cpu_infer 33 --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>
는 로컬 경로이거나 온라인 허깅 페이스에서 설정한 경로(예: deepseek-ai/DeepSeek-V3)일 수 있습니다. 온라인에서 연결 문제가 발생하면 미러(hf-mirror.com)를 사용해 보세요.
는 온라인 경로로도 가능하지만, 용량이 크기 때문에 KT트랜스포머 팀에서 다운로드하여 원하는 형식으로 모델을 정량화할 것을 권장합니다!
명령 numactl -N 1 -m 1
NUMA 노드 간 데이터 전송을 방지하도록 설계되었습니다.
듀얼 채널 버전(64코어)
설치 전(install.sh 또는 make dev_install
)를 통해 export USE_NUMA=1
환경 변수 설정 USE_NUMA=1
(이미 설치되어 있는 경우 이 환경 변수를 설정하여 다시 설치하세요).
KTransformers 팀의 local_chat
테스트 명령은 다음과 같습니다:
git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
export USE_NUMA=1
make dev_install # or sh ./install.sh
python ./ktransformers/local_chat.py --model_path <your model path> --gguf_path <your gguf path> --prompt_file <your prompt txt file> --cpu_infer 65 --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>
매개변수의 의미는 동일합니다. 그러나 KTransformers 팀은 양방향을 사용하므로 다음과 같습니다. cpu_infer
65로 설정
V0.3 데모
듀얼 채널 버전(64코어)
KTransformers 팀의 local_chat
테스트 명령은 다음과 같습니다:
wget https://github.com/kvcache-ai/ktransformers/releases/download/v0.1.4/ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
pip install ./ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
python -m ktransformers.local_chat --model_path <your model path> --gguf_path <your gguf path> --prompt_file <your prompt txt file> --cpu_infer 65 --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>
매개변수의 의미는 V0.2와 동일합니다. 그러나 KTransformers 팀은 이중 경로를 사용하기 때문에 cpu_infer
65로 설정
몇 가지 설명
- KTransformers 팀은 또한 제온 골드 CPU에서 두 개의 NUMA 노드를 더 활용하기를 원했습니다.
노드 간 데이터 전송 비용을 피하기 위해 KTransformers 팀은 다음과 같이 노력하고 있습니다.
키 매트릭스는 두 노드 모두에서 '복사'되므로 메모리는 더 많이 소모되지만 사전 채우기 및 디코딩 프로세스의 속도가 빨라집니다.
하지만 이 방법은 메모리를 많이 사용하고 가중치를 로드하는 속도가 느리므로 로드하는 동안 조금만 기다려주세요!
케이트랜스포머 팀은 이 엄청난 메모리 오버헤드를 최적화할 예정입니다. 기대해주세요~ 매트릭스를 '복사'하면 프로세스 속도가 빨라질 수 있지만 메모리 사용량이 큰 문제이므로 앞으로 KTransformers 팀이 어떤 결과를 내놓을지 기대가 됩니다. - 명령 매개변수
--cpu_infer 65
사용할 코어 수를 지정합니다(물리적 코어 수보다 많으면 괜찮습니다.
하지만 많을수록 좋은 것은 아닙니다. 실제 코어 수보다 약간 적게 조정하면 됩니다.) - 왜 하이브리드 CPU/GPU 추론인가?
DeepSeek MLA 알고리즘은 계산 집약적입니다. 전적으로 CPU에서 실행할 수도 있지만, 무거운 계산을 GPU로 오프로드하면 성능이 크게 향상될 수 있습니다. CPU는 전문가 계산을 처리하고 GPU는 MLA/KVCache를 처리하는 이 하이브리드 추론 전략은 CPU와 GPU를 모두 활용하는 스마트한 전략으로 보입니다. - 속도 증가는 어디에서 발생하나요?
- 전문가 오프로드: 기존의 레이어 또는 KVCache 기반 오프로드(llama.cpp에서 볼 수 있음)와 달리, KTransformers 팀은 전문가 연산은 CPU로, MLA/KVCache는 GPU로 오프로드하여 최적의 효율성을 위해 DeepSeek의 아키텍처에 완벽하게 맞습니다.
- 인텔 AMX 최적화 - KTransformers 팀의 AMX 가속 커널은 기존 llama.cpp 구현보다 몇 배 더 빠르게 실행되도록 세심하게 조정되었습니다. KTransformers 팀은 이 커널을 정리한 후 오픈소스화할 계획이며, 업스트림 llama.cpp에 코드를 기여하는 것을 고려하고 있습니다. AMX 명령어 세트의 추가는 KTransformers의 속도 향상에 중요한 요소 중 하나인 것으로 보입니다.
- 왜 인텔 CPU인가?
인텔은 현재 AMX 명령어와 같은 것을 지원하는 유일한 CPU 공급업체로, AVX 전용 대안보다 훨씬 더 나은 성능을 제공합니다. KTransformers의 최고의 성능을 경험하려면 인텔 CPU를 사용하는 것이 가장 좋은 방법인 것 같습니다.
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...