Téléchargement du modèle | Résultats de l'évaluation | Architecture modèle | Plateforme API | Licence | Citation
Lien papier ?️
Aujourd'hui, nous présentons DeepSeek-V2, un modèle linguistique puissant de mélange d'experts (MoE) caractérisé par une formation économique et une inférence efficace. Il comprend 236 B paramètres au total, dont 21B sont activés pour chaque jeton. Par rapport à DeepSeek 67B, DeepSeek-V2 atteint des performances plus élevées, permet d'économiser 42,5 % des coûts de formation, réduit le cache KV de 93,3 % et augmente le débit de génération maximal à 5,76 fois.
Nous avons pré-entraîné DeepSeek-V2 sur un corpus diversifié et de haute qualité comprenant 8,1 billions de jetons. Cette pré-formation complète a été suivie d'un processus de réglage fin supervisé (SFT) et d'apprentissage par renforcement (RL) pour libérer pleinement les capacités du modèle. Les résultats de l'évaluation valident l'efficacité de notre approche puisque DeepSeek-V2 atteint des performances remarquables à la fois sur les benchmarks standard et sur l'évaluation de génération ouverte.
16/05/2024 : Nous avons publié le DeepSeek-V2-Lite.
06/05/2024 : Nous avons publié le DeepSeek-V2.
Modèle | #Total des paramètres | #Paramètres activés | Longueur du contexte | Télécharger |
---|---|---|---|---|
DeepSeek-V2-Lite | 16B | 2.4B | 32k | ? ÉtreindreVisage |
DeepSeek-V2-Lite-Chat (SFT) | 16B | 2.4B | 32k | ? ÉtreindreVisage |
DeepSeek-V2 | 236B | 21B | 128k | ? ÉtreindreVisage |
DeepSeek-V2-Chat (RL) | 236B | 21B | 128k | ? ÉtreindreVisage |
En raison des contraintes de HuggingFace, le code open source connaît actuellement des performances plus lentes que notre base de code interne lorsqu'il est exécuté sur des GPU avec Huggingface. Pour faciliter l'exécution efficace de notre modèle, nous proposons une solution vllm dédiée qui optimise les performances pour exécuter efficacement notre modèle.
Référence | Domaine | LLaMA3 70B | Mixtral 8x22B | DeepSeek-V1 (Dense-67B) | DeepSeek-V2 (MoE-236B) |
---|---|---|---|---|---|
MMLU | Anglais | 78,9 | 77,6 | 71.3 | 78,5 |
BBH | Anglais | 81,0 | 78,9 | 68,7 | 78,9 |
Évaluation C | Chinois | 67,5 | 58,6 | 66.1 | 81,7 |
CMMLU | Chinois | 69,3 | 60,0 | 70,8 | 84,0 |
HumanEval | Code | 48.2 | 53.1 | 45.1 | 48,8 |
MBPP | Code | 68,6 | 64.2 | 57.4 | 66,6 |
GSM8K | Mathématiques | 83,0 | 80,3 | 63,4 | 79.2 |
Mathématiques | Mathématiques | 42.2 | 42,5 | 18.7 | 43,6 |
Référence | Domaine | DeepSeek 7B (dense) | DeepSeekMoE 16B | DeepSeek-V2-Lite (MoE-16B) |
---|---|---|---|---|
Architecture | - | MHA+Dense | MHA+MoE | Député+MoE |
MMLU | Anglais | 48.2 | 45,0 | 58.3 |
BBH | Anglais | 39,5 | 38,9 | 44.1 |
Évaluation C | Chinois | 45,0 | 40,6 | 60,3 |
CMMLU | Chinois | 47.2 | 42,5 | 64,3 |
HumanEval | Code | 26.2 | 26,8 | 29,9 |
MBPP | Code | 39,0 | 39.2 | 43.2 |
GSM8K | Mathématiques | 17.4 | 18,8 | 41.1 |
Mathématiques | Mathématiques | 3.3 | 4.3 | 17.1 |
Pour plus de détails sur l'évaluation, tels que les paramètres et les invites de quelques prises de vue, veuillez consulter notre article.
Résultats de l'évaluation des tests Needle In A Haystack
(NIAH). DeepSeek-V2 fonctionne bien sur toutes les longueurs de fenêtre contextuelle jusqu'à 128 Ko .
Référence | Domaine | Bavarder | Mixtral 8x22B | LLaMA3 70B Instruire | Discussion DeepSeek-V1 (SFT) | Discussion DeepSeek-V2 (SFT) | Discussion DeepSeek-V2 (RL) |
---|---|---|---|---|---|---|---|
MMLU | Anglais | 76.2 | 77,8 | 80,3 | 71.1 | 78,4 | 77,8 |
BBH | Anglais | 65,9 | 78,4 | 80,1 | 71,7 | 81,3 | 79,7 |
Évaluation C | Chinois | 82,2 | 60,0 | 67,9 | 65.2 | 80,9 | 78,0 |
CMMLU | Chinois | 82,9 | 61,0 | 70,7 | 67,8 | 82,4 | 81,6 |
HumanEval | Code | 68,9 | 75,0 | 76.2 | 73,8 | 76,8 | 81.1 |
MBPP | Code | 52.2 | 64,4 | 69,8 | 61,4 | 70,4 | 72,0 |
LiveCodeBench (0901-0401) | Code | 18,8 | 25,0 | 30,5 | 18.3 | 28,7 | 32,5 |
GSM8K | Mathématiques | 81,9 | 87,9 | 93.2 | 84.1 | 90,8 | 92,2 |
Mathématiques | Mathématiques | 40,6 | 49,8 | 48,5 | 32,6 | 52,7 | 53,9 |
Référence | Domaine | Discussion DeepSeek 7B (SFT) | Chat DeepSeekMoE 16B (SFT) | Discussion DeepSeek-V2-Lite 16B (SFT) |
---|---|---|---|---|
MMLU | Anglais | 49,7 | 47.2 | 55,7 |
BBH | Anglais | 43.1 | 42.2 | 48.1 |
Évaluation C | Chinois | 44,7 | 40,0 | 60,1 |
CMMLU | Chinois | 51.2 | 49.3 | 62,5 |
HumanEval | Code | 45.1 | 45,7 | 57.3 |
MBPP | Code | 39,0 | 46.2 | 45,8 |
GSM8K | Mathématiques | 62,6 | 62.2 | 72,0 |
Mathématiques | Mathématiques | 14.7 | 15.2 | 27.9 |
Nous évaluons notre modèle sur AlpacaEval 2.0 et MTBench, montrant les performances compétitives de DeepSeek-V2-Chat-RL sur la génération de conversations en anglais.
Alignbench (https://arxiv.org/abs/2311.18743)
模型 | 开源/闭源 | 总分 | 中文推理 | 中文语言 |
---|---|---|---|---|
gpt-4-1106-aperçu | 闭源 | 8.01 | 7,73 | 8.29 |
Discussion DeepSeek-V2 (RL) | 开源 | 7.91 | 7h45 | 8.36 |
erniebot-4.0-202404 (version anglaise seulement) | 闭源 | 7,89 | 7.61 | 8.17 |
Discussion DeepSeek-V2 (SFT) | 开源 | 7,74 | 7h30 | 8.17 |
gpt-4-0613 | 闭源 | 7.53 | 7.47 | 7.59 |
erniebot-4.0-202312 (version anglaise seulement) | 闭源 | 7.36 | 6,84 | 7,88 |
moonshot-v1-32k-202404 (月之暗面) | 闭源 | 7.22 | 6.42 | 8.02 |
Qwen1.5-72B-Chat (通义千问) | 开源 | 7.19 | 6h45 | 7,93 |
DeepSeek-67B-Chat | 开源 | 6.43 | 5,75 | 7.11 |
Yi-34B-Chat (零一万物) | 开源 | 6.12 | 4,86 | 7.38 |
gpt-3.5-turbo-0613 | 闭源 | 6.08 | 5h35 | 6.71 |
Discussion DeepSeek-V2-Lite 16B | 开源 | 6.01 | 4,71 | 7.32 |
Nous évaluons notre modèle sur LiveCodeBench (0901-0401), un benchmark conçu pour les défis de codage en direct. Comme illustré, DeepSeek-V2 démontre une maîtrise considérable de LiveCodeBench, atteignant un score Pass@1 qui surpasse plusieurs autres modèles sophistiqués. Cette performance met en évidence l'efficacité du modèle dans la réalisation des tâches de codage en direct.
DeepSeek-V2 adopte des architectures innovantes pour garantir une formation économique et une inférence efficace :
Pour attirer votre attention, nous concevons MLA (Multi-head Latent Attention), qui utilise la compression d'union clé-valeur de bas rang pour éliminer le goulot d'étranglement du cache clé-valeur au moment de l'inférence, prenant ainsi en charge une inférence efficace.
Pour les réseaux Feed-Forward (FFN), nous adoptons l'architecture DeepSeekMoE, une architecture MoE hautes performances qui permet de former des modèles plus solides à moindre coût.
Vous pouvez discuter avec DeepSeek-V2 sur le site officiel de DeepSeek : chat.deepseek.com
Nous fournissons également une API compatible OpenAI sur la plateforme DeepSeek : platform.deepseek.com. Inscrivez-vous pour plus de millions de jetons gratuits. Et vous pouvez également payer à l'utilisation à un prix imbattable.
Pour utiliser DeepSeek-V2 au format BF16 à des fins d'inférence, 80 Go*8 GPU sont requis.
Vous pouvez directement utiliser les transformateurs de Huggingface pour l'inférence de modèle.
import torchfrom transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfigmodel_name = "deepseek-ai/DeepSeek-V2"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)# `max_memory` doit être défini en fonction de vos appareilsmax_memory = {i : "75 Go" pour je suis dans la plage (8)}# `device_map` ne peut pas être défini sur `auto`model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, device_map="sequential", torch_dtype=torch.bfloat16, max_memory=max_memory, attn_implementation="eager")model.generation_config = GenerationConfig.from_pretrained(model_name )model.génération_config.pad_token_id = model.generation_config.eos_token_idtext = "Une fonction d'attention peut être décrite comme mappant une requête et un ensemble de paires clé-valeur à une sortie, où la requête, les clés, les valeurs et la sortie sont tous des vecteurs. La sortie est" inputs = tokenizer (texte, return_tensors="pt")outputs = model.generate(**inputs.to(model.device), max_new_tokens=100)result = tokenizer.decode(outputs[0], skip_special_tokens=True)print(result)
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` doit être défini en fonction de vos appareilsmax_memory = {i: "75GB " pour moi dans la plage (8)}# `device_map` ne peut pas être défini sur `auto`model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, device_map="sequential", 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_idmessages = [ {"role": "user", "content": "Écrire un morceau de code de tri rapide en 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 .forme[1]:], skip_special_tokens=True)print(résultat)
Le modèle de discussion complet se trouve dans tokenizer_config.json
situé dans le référentiel de modèles Huggingface.
Un exemple de modèle de chat est le suivant :
<|début de phrase|>Utilisateur : {user_message_1} Assistant : {assistant_message_1}<|fin de phrase|>Utilisateur : {user_message_2} Assistant:
Vous pouvez également ajouter un message système facultatif :
<|début de phrase|>{system_message} Utilisateur : {user_message_1} Assistant : {assistant_message_1}<|fin de phrase|>Utilisateur : {user_message_2} Assistant:
SGLang prend actuellement en charge les optimisations MLA, FP8 (W8A8), FP8 KV Cache et Torch Compile, offrant la meilleure latence et le meilleur débit parmi les frameworks open source. Voici quelques exemples de commandes pour lancer un serveur compatible avec l'API OpenAI :
# BF16, parallélisme tensoriel = 8python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-V2-Chat --tp 8 --trust-remote-code# BF16, avec torch.compile (La compilation peut prendre plusieurs minutes )python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-V2-Lite-Chat --trust-remote-code --enable-torch-compile# FP8, parallélisme tensoriel = 8, FP8 KV cachepython3 -m sglang.launch_server --model deepseek-ai/DeepSeek-V2-Chat --tp 8 --trust- code à distance --quant fp8 --kv-cache-dtype fp8_e5m2
Après avoir lancé le serveur, vous pouvez l'interroger avec l'API OpenAI
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)
Pour utiliser vLLM pour l'inférence de modèle, veuillez fusionner cette Pull Request dans votre base de code vLLM : vllm-project/vllm#4650.
à partir des transformateurs 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,force_eager=True)sampling_params = SamplingParams(temperature=0.3, max_tokens=256, stop_token_ids=[tokenizer.eos_token_id])messages_list = [ [{"role": "user", "content": "Qui êtes-vous ?"}], [{"role": "user", "content": "Traduire directement le contenu suivant en chinois : DeepSeek-V2 adopte des architectures innovantes pour garantir une formation économique et une inférence efficace."}], [{"role": "user", "content": "Écrire un morceau de code de tri rapide en C++."}], ]prompt_token_ids = [tokenizer.apply_chat_template(messages, add_generation_prompt=True) pour les messages dans messages_list]outputs = llm.generate(prompt_token_ids=prompt_token_ids, sampling_params=sampling_params)generated_text = [output.outputs[0].text pour la sortie dans sorties]print(generated_text)
Puisque notre API est compatible avec OpenAI, vous pouvez facilement l'utiliser dans langchain. Voici un exemple :
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)
Ce référentiel de code est sous licence MIT. L'utilisation des modèles DeepSeek-V2 Base/Chat est soumise à la licence de modèle. La série DeepSeek-V2 (y compris Base et Chat) prend en charge une utilisation commerciale.
@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} }
Si vous avez des questions, veuillez soulever un problème ou nous contacter à [email protected].