모델 다운로드 | 평가 결과 | 모델 아키텍처 | API 플랫폼 | 라이센스 | 소환
종이 링크 ?️
오늘 우리는 경제적인 훈련과 효율적인 추론을 특징으로 하는 강력한 MoE(Mixture-of-Experts) 언어 모델인 DeepSeek-V2를 소개합니다. 이는 총 236B개의 매개변수로 구성되며, 그 중 21B는 각 토큰에 대해 활성화됩니다. DeepSeek 67B와 비교하여 DeepSeek-V2는 더 강력한 성능을 달성하는 동시에 훈련 비용을 42.5% 절감하고 KV 캐시를 93.3% 줄이며 최대 생성 처리량을 5.76배로 향상시킵니다.
우리는 8조 1천억 개의 토큰으로 구성된 다양하고 고품질의 코퍼스에서 DeepSeek-V2를 사전 훈련했습니다. 이 포괄적인 사전 학습 뒤에는 모델의 기능을 완전히 활용하기 위한 SFT(감독 미세 조정) 및 RL(강화 학습) 프로세스가 이어졌습니다. 평가 결과는 DeepSeek-V2가 표준 벤치마크와 개방형 세대 평가 모두에서 놀라운 성능을 달성함에 따라 우리 접근 방식의 효율성을 검증합니다.
2024.05.16: DeepSeek-V2-Lite를 출시했습니다.
2024.05.06: DeepSeek-V2를 출시했습니다.
모델 | #총 매개변수 | #활성화된 매개변수 | 컨텍스트 길이 | 다운로드 |
---|---|---|---|---|
DeepSeek-V2-Lite | 16B | 2.4B | 32,000 | ? 포옹얼굴 |
DeepSeek-V2-Lite-Chat(SFT) | 16B | 2.4B | 32,000 | ? 포옹얼굴 |
DeepSeek-V2 | 236B | 21B | 128k | ? 포옹얼굴 |
DeepSeek-V2-Chat(RL) | 236B | 21B | 128k | ? 포옹얼굴 |
HuggingFace의 제약으로 인해 오픈 소스 코드는 현재 Huggingface가 포함된 GPU에서 실행될 때 내부 코드 베이스보다 성능이 저하됩니다. 모델의 효율적인 실행을 촉진하기 위해 모델을 효과적으로 실행하기 위한 성능을 최적화하는 전용 vllm 솔루션을 제공합니다.
기준 | 도메인 | LLaMA3 70B | 믹스트랄 8x22B | DeepSeek-V1 (Dense-67B) | DeepSeek-V2 (MoE-236B) |
---|---|---|---|---|---|
MMLU | 영어 | 78.9 | 77.6 | 71.3 | 78.5 |
BBH | 영어 | 81.0 | 78.9 | 68.7 | 78.9 |
C-평가 | 중국인 | 67.5 | 58.6 | 66.1 | 81.7 |
CMMLU | 중국인 | 69.3 | 60.0 | 70.8 | 84.0 |
인간평가 | 암호 | 48.2 | 53.1 | 45.1 | 48.8 |
MBPP | 암호 | 68.6 | 64.2 | 57.4 | 66.6 |
GSM8K | 수학 | 83.0 | 80.3 | 63.4 | 79.2 |
수학 | 수학 | 42.2 | 42.5 | 18.7 | 43.6 |
기준 | 도메인 | DeepSeek 7B(밀집) | DeepSeekMoE 16B | DeepSeek-V2-Lite(MoE-16B) |
---|---|---|---|---|
건축학 | - | MHA+밀도 | MHA+MoE | MLA+MoE |
MMLU | 영어 | 48.2 | 45.0 | 58.3 |
BBH | 영어 | 39.5 | 38.9 | 44.1 |
C-평가 | 중국인 | 45.0 | 40.6 | 60.3 |
CMMLU | 중국인 | 47.2 | 42.5 | 64.3 |
인간평가 | 암호 | 26.2 | 26.8 | 29.9 |
MBPP | 암호 | 39.0 | 39.2 | 43.2 |
GSM8K | 수학 | 17.4 | 18.8 | 41.1 |
수학 | 수학 | 3.3 | 4.3 | 17.1 |
Few-Shot 설정, 프롬프트 등 평가에 대한 자세한 내용은 당사 문서를 확인하세요.
NIAH( Needle In A Haystack
) 테스트의 평가 결과입니다. DeepSeek-V2는 최대 128K 의 모든 컨텍스트 창 길이에서 잘 작동합니다.
기준 | 도메인 | QWen1.5 72B 채팅 | 믹스트랄 8x22B | LLaMA3 70B 지시 | DeepSeek-V1 채팅(SFT) | DeepSeek-V2 채팅(SFT) | DeepSeek-V2 채팅(RL) |
---|---|---|---|---|---|---|---|
MMLU | 영어 | 76.2 | 77.8 | 80.3 | 71.1 | 78.4 | 77.8 |
BBH | 영어 | 65.9 | 78.4 | 80.1 | 71.7 | 81.3 | 79.7 |
C-평가 | 중국인 | 82.2 | 60.0 | 67.9 | 65.2 | 80.9 | 78.0 |
CMMLU | 중국인 | 82.9 | 61.0 | 70.7 | 67.8 | 82.4 | 81.6 |
인간평가 | 암호 | 68.9 | 75.0 | 76.2 | 73.8 | 76.8 | 81.1 |
MBPP | 암호 | 52.2 | 64.4 | 69.8 | 61.4 | 70.4 | 72.0 |
라이브코드벤치(0901-0401) | 암호 | 18.8 | 25.0 | 30.5 | 18.3 | 28.7 | 32.5 |
GSM8K | 수학 | 81.9 | 87.9 | 93.2 | 84.1 | 90.8 | 92.2 |
수학 | 수학 | 40.6 | 49.8 | 48.5 | 32.6 | 52.7 | 53.9 |
기준 | 도메인 | DeepSeek 7B 채팅(SFT) | DeepSeekMoE 16B 채팅(SFT) | DeepSeek-V2-Lite 16B 채팅(SFT) |
---|---|---|---|---|
MMLU | 영어 | 49.7 | 47.2 | 55.7 |
BBH | 영어 | 43.1 | 42.2 | 48.1 |
C-평가 | 중국인 | 44.7 | 40.0 | 60.1 |
CMMLU | 중국인 | 51.2 | 49.3 | 62.5 |
인간평가 | 암호 | 45.1 | 45.7 | 57.3 |
MBPP | 암호 | 39.0 | 46.2 | 45.8 |
GSM8K | 수학 | 62.6 | 62.2 | 72.0 |
수학 | 수학 | 14.7 | 15.2 | 27.9 |
우리는 AlpacaEval 2.0 및 MTBench에서 모델을 평가하여 영어 대화 생성에 대한 DeepSeek-V2-Chat-RL의 경쟁력 있는 성능을 보여줍니다.
정렬 벤치 (https://arxiv.org/abs/2311.18743)
模型 | 开源/闭源 | 总分 | 중국어 번역 | 중국어 설명 |
---|---|---|---|---|
gpt-4-1106-미리보기 | 闭源 | 8.01 | 7.73 | 8.29 |
DeepSeek-V2 채팅(RL) | 开源 | 7.91 | 7.45 | 8.36 |
erniebot-4.0-202404 (文心一言) | 闭源 | 7.89 | 7.61 | 8.17 |
DeepSeek-V2 채팅(SFT) | 开源 | 7.74 | 7.30 | 8.17 |
gpt-4-0613 | 闭源 | 7.53 | 7.47 | 7.59 |
erniebot-4.0-202312 (文心一言) | 闭源 | 7.36 | 6.84 | 7.88 |
Moonshot-v1-32k-202404(월지暗면) | 闭源 | 7.22 | 6.42 | 8.02 |
Qwen1.5-72B-Chat(통义千问) | 开源 | 7.19 | 6.45 | 7.93 |
DeepSeek-67B-채팅 | 开源 | 6.43 | 5.75 | 7.11 |
Yi-34B-Chat (零一만물) | 开源 | 6.12 | 4.86 | 7.38 |
gpt-3.5-터보-0613 | 闭源 | 6.08 | 5.35 | 6.71 |
DeepSeek-V2-Lite 16B 채팅 | 开源 | 6.01 | 4.71 | 7.32 |
우리는 라이브 코딩 문제를 위해 설계된 벤치마크인 LiveCodeBench(0901-0401)에서 모델을 평가합니다. 그림에서 볼 수 있듯이 DeepSeek-V2는 LiveCodeBench에서 상당한 숙련도를 보여주며 다른 여러 정교한 모델을 능가하는 Pass@1 점수를 달성했습니다. 이 성능은 라이브 코딩 작업을 처리하는 데 있어 모델의 효율성을 강조합니다.
DeepSeek-V2는 혁신적인 아키텍처를 채택하여 경제적인 훈련과 효율적인 추론을 보장합니다.
주의를 위해 하위 키-값 통합 압축을 활용하여 추론 시 키-값 캐시의 병목 현상을 제거하여 효율적인 추론을 지원하는 MLA(Multi-head Latent Attention)를 설계합니다.
FFN(피드포워드 네트워크)의 경우 더 저렴한 비용으로 더 강력한 모델을 훈련할 수 있는 고성능 MoE 아키텍처인 DeepSeekMoE 아키텍처를 채택합니다.
DeepSeek 공식 웹사이트 chat.deepseek.com에서 DeepSeek-V2와 채팅할 수 있습니다.
또한 DeepSeek 플랫폼(platform.deepseek.com)에서 OpenAI 호환 API를 제공합니다. 수백만 개가 넘는 무료 토큰에 가입하세요. 그리고 저렴한 가격으로 종량제 결제도 가능합니다.
추론을 위해 BF16 형식의 DeepSeek-V2를 활용하려면 80GB*8 GPU가 필요합니다.
모델 추론을 위해 Huggingface의 Transformers를 직접 사용할 수 있습니다.
import torchfrom Transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfigmodel_name = "deepseek-ai/DeepSeek-V2"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)# `max_memory`는 장치에 따라 설정되어야 합니다.max_memory = {i: "75GB" for i in range(8)}# `device_map`을 설정할 수 없습니다. `auto`model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, device_map="순차", torch_dtype=torch.bfloat16, max_memory=max_memory, attn_implementation="eager")model. Generation_config = GenerationConfig.from_pretrained(model_name)model. Generation_config.pad_token_id = model. Generation_config.eos_token_idtext = "주의 기능은 쿼리와 키-값 쌍 세트를 출력에 매핑하는 것으로 설명할 수 있습니다. 여기서 쿼리, 키, 값 및 출력은 모두 벡터입니다. 출력은"inputs = tokenizer (텍스트, return_tensors="pt")출력 = model.generate(**inputs.to(model.device), max_new_tokens=100)result = tokenizer.decode(출력[0], Skip_special_tokens=True)인쇄(결과)
import torchfrom Transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfigmodel_name = "deepseek-ai/DeepSeek-V2-Chat"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)# `max_memory`는 장치에 따라 설정되어야 합니다max_memory = {i: "75GB " for i in range(8)}# `device_map` `auto`로 설정할 수 없음model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, device_map="순차", torch_dtype=torch.bfloat16, max_memory=max_memory, attn_implementation="eager")model.세대_config = GenerationConfig.from_pretrained(model_name) )model. Generation_config.pad_token_id = model. Generation_config.eos_token_idmessages = [ {"role": "user", "content": "C++로 퀵정렬 코드 작성"} ]input_tensor = tokenizer.apply_chat_template(messages, add_ Generation_prompt=True, return_tensors="pt")outputs = model.generate(input_tensor.to(model.device), max_new_tokens=100)result = tokenizer.decode(outputs[0][input_tensor .shape[1]:], Skip_special_tokens=True)인쇄(결과)
전체 채팅 템플릿은 Huggingface 모델 저장소에 있는 tokenizer_config.json
내에서 찾을 수 있습니다.
채팅 템플릿의 예는 다음과 같습니다.
<|문장|>사용자: {user_message_1} 어시스턴트: {assistant_message_1}<|문장 끝|>사용자: {user_message_2} 어시스턴트:
선택적 시스템 메시지를 추가할 수도 있습니다.
<|문장 시작|>{system_message} 사용자: {user_message_1} 어시스턴트: {assistant_message_1}<|문장 끝|>사용자: {user_message_2} 어시스턴트:
SGLang은 현재 MLA 최적화, FP8(W8A8), FP8 KV 캐시 및 Torch Compile을 지원하여 오픈 소스 프레임워크 중에서 최고의 대기 시간과 처리량을 제공합니다. 다음은 OpenAI API 호환 서버를 시작하는 몇 가지 명령 예시입니다.
# BF16, 텐서 병렬 처리 = 8python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-V2-Chat --tp 8 --trust-remote-code# BF16, torch.compile 포함(컴파일에는 몇 분이 걸릴 수 있습니다. )python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-V2-Lite-Chat --trust-remote-code --enable-torch-compile# FP8, 텐서 병렬 처리 = 8, FP8 KV 캐시python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-V2-Chat --tp 8 --trust- 원격 코드 --퀀트 fp8 --kv-cache-dtype fp8_e5m2
서버를 시작한 후 OpenAI API로 쿼리할 수 있습니다.
import openai client = openai.Client( base_url="http://127.0.0.1:30000/v1", api_key="EMPTY") # Chat completion response = client.chat.completions.create( model="default", messages=[ {"role": "system", "content": "You are a helpful AI assistant"}, {"role": "user", "content": "List 3 countries and their capitals."}, ], temperature=0, max_tokens=64, ) print(response)
모델 추론에 vLLM을 활용하려면 이 Pull Request를 vLLM 코드베이스에 병합하세요: vllm-project/vllm#4650.
Transformers import AutoTokenizerfrom vllm import LLM, SamplingParamsmax_model_len, tp_size = 8192, 8model_name = "deepseek-ai/DeepSeek-V2-Chat"tokenizer = AutoTokenizer.from_pretrained(model_name)llm = LLM(model=model_name, tensor_parallel_size=tp_size, max_model_len=max_model_len, trust_remote_code=True, Apply_eager=True)sampling_params = SamplingParams(온도=0.3, max_tokens=256, stop_token_ids=[tokenizer.eos_token_id])messages_list = [ [{"role": "user", "content": "당신은 누구입니까?"}], [{"role": "user", "content": "다음 콘텐츠를 중국어로 직접 번역합니다. DeepSeek-V2는 혁신적인 아키텍처를 채택하여 경제적인 훈련과 효율적인 추론을 보장합니다."}], [{"role": "user", "content": "C++로 퀵소트 코드를 작성하세요."}], ]prompt_token_ids = [messages, add_ Generation_prompt=True) for messages_list]outputs = llm.generate(prompt_token_ids=prompt_token_ids, sampling_params=sampling_params)generated_text = [output.outputs[0].text 출력의 출력]print (생성된_텍스트)
우리의 API는 OpenAI와 호환되므로 langchain에서 쉽게 사용할 수 있습니다. 예는 다음과 같습니다.
from langchain_openai import ChatOpenAI llm = ChatOpenAI( model='deepseek-chat', openai_api_key=, openai_api_base='https://api.deepseek.com/v1', temperature=0.85, max_tokens=8000)
이 코드 저장소는 MIT 라이선스에 따라 라이선스가 부여됩니다. DeepSeek-V2 Base/Chat 모델의 사용에는 모델 라이센스가 적용됩니다. DeepSeek-V2 시리즈(Base 및 Chat 포함)는 상업용 사용을 지원합니다.
@misc{deepseekv2, title={DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model}, author={DeepSeek-AI}, year={2024}, eprint={2405.04434}, archivePrefix={arXiv}, primaryClass={cs.CL} }
질문이 있는 경우 문제를 제기하거나 [email protected]으로 문의해 주세요.