多语言大模型展现卓越编码与数学能力
DeepSeek LLM是一个包含67亿参数的先进语言模型,经过2万亿英文和中文token的训练。该模型在推理、编码、数学和中文理解等方面表现优异,超越多个同类模型。其67B Chat版本在编码和数学方面尤为出色,在HumanEval和GSM8K等基准测试中名列前茅。项目开源了7B和67B的base与chat版本,可用于学术和商业研究。
DeepSeek LLM 是一个拥有670亿参数的先进语言模型。它在包含2万亿个英文和中文词元的庞大数据集上从头开始训练。为了促进研究,我们已经向研究社区开源了DeepSeek LLM 7B/67B Base和DeepSeek LLM 7B/67B Chat模型。
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/b7573d3a-7c6b-4eac-80b0-2eef214c08e8.png" alt="结果" width="70%"> </div>卓越的通用能力: DeepSeek LLM 67B Base在推理、编程、数学和中文理解等领域的表现优于Llama2 70B Base。
精通编程和数学: DeepSeek LLM 67B Chat在编程(HumanEval Pass@1: 73.78)和数学(GSM8K 零样本: 84.1,Math 零样本: 32.6)方面表现出色。它还展示了出色的泛化能力,在匈牙利全国高中考试中取得了65分的优异成 绩。
精通中文: 根据我们的评估,DeepSeek LLM 67B Chat在中文方面的表现超过了GPT-3.5。
我们向公众发布了DeepSeek LLM 7B/67B,包括基础模型和聊天模型。为了支持学术和商业社区更广泛、更多样化的研究,我们提供了基础模型训练过程中的中间检查点。请注意,使用本模型需遵守许可部分中列出的条款。这些条款允许商业用途。
模型 | 序列长度 | 下载 |
---|---|---|
DeepSeek LLM 7B Base | 4096 | 🤗 HuggingFace |
DeepSeek LLM 7B Chat | 4096 | 🤗 HuggingFace |
DeepSeek LLM 67B Base | 4096 | 🤗 HuggingFace |
DeepSeek LLM 67B Chat | 4096 | 🤗 HuggingFace |
我们在AWS S3(简单存储服务)上托管了DeepSeek LLM 7B/67B的中间检查点。可以使用AWS命令行界面(CLI)下载这些文件。
# 使用AWS CLI
# DeepSeek-LLM-7B-Base
aws s3 cp s3://deepseek-ai/DeepSeek-LLM/DeepSeek-LLM-7B-Base <本地路径> --recursive --request-payer
# DeepSeek-LLM-67B-Base
aws s3 cp s3://deepseek-ai/DeepSeek-LLM/DeepSeek-LLM-67B-Base <本地路径> --recursive --request-payer
我们在一系列具有代表性的英文和中文基准测试上评估了我们的模型和一些基线模型。更多结果可以在evaluation
文件夹中找到。在这部分,我们报告的评估结果基于内部的、非开源的hai-llm评估框架。请注意,使用转换后的HuggingFace模型时可能会有轻微的差异。
模型 | Hella<br>Swag | Trivia<br>QA | MMLU | GSM8K | Human<br>Eval | BBH | CEval | CMMLU | 中文<br>问答 |
---|---|---|---|---|---|---|---|---|---|
零样本 | 五样本 | 五样本 | 八样本 | 零样本 | 三样本 | 五样本 | 五样本 | 五样本 | |
LLaMA-2<br>-7B | 75.6 | 63.8 | 45.8 | 15.5 | 14.6 | 38.5 | 33.9 | 32.6 | 21.5 |
LLaMA-2<br>-70B | 84.0 | 79.5 | 69.0 | 58.4 | 28.7 | 62.9 | 51.4 | 53.1 | 50.2 |
DeepSeek LLM<br>7B 基础版 | 75.4 | 59.7 | 48.2 | 17.4 | 26.2 | 39.5 | 45.0 | 47.2 | 78.0 |
DeepSeek LLM<br>67B 基础版 | 84.0 | 78.9 | 71.3 | 63.4 | 42.7 | 68.7 | 66.1 | 70.8 | 87.6 |
注意: 中文问答是一个内部基准测试,灵感来自TriviaQA。
为解决数据污染和针对特定测试集进行调优的问题,我们设计了全新的问题集来评估开源LLM模型的能力。评估结果表明,DeepSeek LLM 67B 对话模型在从未见过的考试中表现出色。
匈牙利国家高中考试: 与Grok-1一致,我们使用匈牙利国家高中考试评估了模型的数学能力。该考试包含33个问题,模型的分数通过人工标注确定。我们遵循solution.pdf中的评分标准来评估所有模型。
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/193f5389-1948-4c2f-b2f7-1cfe7cd80b25.png" alt="result" width="70%"> </div>备注: 我们修正了初次评估中的一个错误。在这个修订版中,我们省略了第16、17、18题以及上述图片的最低分。评估详情可在此处查看。
指令遵循评估: 2023年11月15日,谷歌发布了一个指令遵循评估数据集。他们确定了25种可验证的指令类型,并构建了约500个提示,每个提示包含一个或多个可验证的指令。我们使用提示级别的宽松指标来评估所有模型。在这里,我们使用谷歌发布的第一个版本进行评估。对于谷歌修订测试集的评估结果,请参考我们论文中的数字。
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/a1df78c2-549e-47fb-9e08-d131b361800e.png" alt="result" width="70%"> </div>LeetCode周赛: 为评估模型的编码能力,我们使用了LeetCode周赛的问题(第351-372周周赛,第108-117双周赛,从2023年7月到2023年11月)。我们通过爬取LeetCode的数据获得了这些问题,共126个问题,每个问题有超过20个测试用例。评估指标类似于HumanEval。如果模型的输出成功通过所有测试用例,则认为模型有效解决了该问题。模型的编码能力如下图所示,其中y轴表示领域内人工评估测试的pass@1得分,x轴表示领域外LeetCode周赛问题的pass@1得分。
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/8ec56e63-129e-4876-8566-cf863ebaa742.png" alt="result" width="70%"> </div>具体问题和测试用例将很快发布。敬请期待!
标准基准测试
模型 | TriviaQA | MMLU | GSM8K | HumanEval | BBH | C-Eval | CMMLU | 中文问答 |
---|---|---|---|---|---|---|---|---|
DeepSeek LLM 7B 基础版 | 59.7 | 48.2 | 17.4 | 26.2 | 39.5 | 45.0 | 47.2 | 78.0 |
DeepSeek LLM 67B 基础版 | 78.9 | 71.3 | 63.4 | 42.7 | 68.7 | 66.1 | 70.8 | 87.6 |
DeepSeek LLM 7B 对话版 | 57.9 | 49.4 | 62.6 | 48.2 | 42.3 | 47.0 | 49.7 | 75.0 |
DeepSeek LLM 67B 对话版 | 81.5 | 71.1 | 84.1 | 73.8 | 71.7 | 65.2 | 67.8 | 85.1 |
注意: 我们对MMLU、GSM8K、C-Eval和CMMLU的对话模型进行零样本评估。更多评估结果可在此处找到。
重新审视多选题基准测试
根据我们的实验观察,我们发现使用多选题(MC)提高基准测试性能(如MMLU、CMMLU和C-Eval)是一项相对简单的任务。通过纳入中国考试的多选题,我们取得了出色的结果,如下表所示:
模型 | MMLU | C-Eval | CMMLU |
---|---|---|---|
DeepSeek LLM 7B 对话版 | 49.4 | 47.0 | 49.7 |
DeepSeek LLM 7B 对话版 + MC | 60.9 | 71.3 | 73.8 |
注意:+MC 表示增加了从网络上收集的 2000 万道中文多选题。需要注意的是,我们对 C-Eval 验证集和 CMMLU 测试集进行了去重,以防止数据污染。这一增加不仅改善了中文多选题基准,还提高了英语基准的表现。然而,我们观察到在 7B 设置下,它并未提升模型在其他非多选题形式评估上的知识表现。因此,我们决定在预训练或微调过程中不纳入 MC 数据,因为这会导致在基准测试上过拟合。 |
我们的主要目标是全面提升数据集的丰富性和多样性。为实现这一目标,我们实施了多种方法,并建立了一个名为"cc_cleaner"的分布式、频繁检查点批处理系统,以加强我们的数据管道。
我们的最小可行解决方案从 RefinedWeb + CCNet 出发。我们非常感谢他们对 AGI 研究的无私奉献。
我们还在数据管道中大量引入了确定性随机化。这种方法使我们能够在漫长且难以预测的训练过程中持续改进我们的数据。
数据组成:我们的训练数据包括多样化的互联网文本、数学、代码、书籍以及尊重 robots.txt 的自收集数据。除了多样化的内容外,我们还高度重视个人隐私和版权保护。所有包含个人信息或受版权限制的内容都已从我们的数据集中移除。
数据集修剪:我们的系统采用启发式规则和模型来优化训练数据。我们的过滤过程去除低质量的网络数据,同时保留宝贵的低资源知识。它旨在提高整体语料库质量并移除有害或有毒内容。
去重:我们先进的去重系统使用 MinhashLSH,严格地在文档和字符串级别上去除重复内容。这一严格的去重过程确保了卓越的数据唯一性和完整性,这在大规模数据集中尤为重要。
DeepSeek LM 模型使用与 LLaMA 相同 的架构,即自回归 transformer 解码器模型。7B 模型使用多头注意力(MHA),而 67B 模型使用分组查询注意力(GQA)。
我们在一个包含 2 万亿个标记的庞大数据集上预训练了 DeepSeek 语言模型,序列长度为 4096,使用 AdamW 优化器。7B 模型的训练使用了 2304 的批量大小和 4.2e-4 的学习率,67B 模型则使用了 4608 的批量大小和 3.2e-4 的学习率。我们在训练过程中采用多步学习率计划。学习率从 2000 步的预热开始,然后在 1.6 万亿个标记时降至最大值的 31.6%,在 1.8 万亿个标记时降至最大值的 10%。
我们公布了训练损失曲线和几个基准指标曲线,详见下图。
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/ebb06795-07c3-4618-9f8c-57dc4ee856ca.png" alt="result" width="70%"> </div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/67faff13-da39-402f-94f8-b021b4e51686.png" alt="result" width="80%"> </div>在 Python >= 3.8 的环境基础上,通过运行以下命令安装必要的依赖:
pip install -r requirements.txt
你可以直接使用 Huggingface 的 Transformers 进行模型推理。
文本补全
import torch from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig model_name = "deepseek-ai/deepseek-llm-67b-base" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto") model.generation_config = GenerationConfig.from_pretrained(model_name) model.generation_config.pad_token_id = model.generation_config.eos_token_id text = "注意力函数可以被描述为将一个查询和一组键值对映射到一个输出,其中查询、键、值和输出都是向量。这个输出是" inputs = tokenizer(text, 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 torch from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig model_name = "deepseek-ai/deepseek-llm-67b-chat" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto") model.generation_config = GenerationConfig.from_pretrained(model_name) model.generation_config.pad_token_id = model.generation_config.eos_token_id messages = [ {"role": "user", "content": "你是谁?"} ] 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) print(result)
如果不使用提供的 apply_chat_template
函数,你也可以按照示例模板与我们的模型交互。注意,messages
应该替换为你的输入。
User: {messages[0]['content']}
A: {messages[1]['content']}<|end▁of▁sentence|>User: {messages[2]['content']}
A:
注意: 默认情况下(add_special_tokens=True
),我们的分词器会自动在输入文本前添加一个 bos_token
(<|begin▁of▁sentence|>
)。此外,由于系统提示与此版本的模型不兼容,我们不建议在输入中包含系统提示。
你也可以使用 vLLM 进行高吞吐量推理。
文本补全
from vllm import LLM, SamplingParams tp_size = 4 # 张量并行度 sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=100) model_name = "deepseek-ai/deepseek-llm-67b-base" llm = LLM(model=model_name, trust_remote_code=True, gpu_memory_utilization=0.9, tensor_parallel_size=tp_size) prompts = [ "如果一个国家里的每个人都彼此相爱,", "研究还应该关注哪些技术", "为了确定标签是否正确,我们需要" ] outputs = llm.generate(prompts, sampling_params) generated_text = [output.outputs[0].text for output in outputs] print(generated_text)
对话补全
from transformers import AutoTokenizer from vllm import LLM, SamplingParams tp_size = 4 # 张量并行度 sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=100) model_name = "deepseek-ai/deepseek-llm-67b-chat" tokenizer = AutoTokenizer.from_pretrained(model_name) llm = LLM(model=model_name, trust_remote_code=True, gpu_memory_utilization=0.9, tensor_parallel_size=tp_size) messages_list = [ [{"role": "user", "content": "你是谁?"}], [{"role": "user", "content": "你能做什么?"}], [{"role": "user", "content": "简要解释一下Transformer。"}], ] # 避免重复添加bos_token prompt_token_ids = [tokenizer.apply_chat_template(messages, add_generation_prompt=True) for messages in messages_list] sampling_params.stop = [tokenizer.eos_token] outputs = llm.generate(prompt_token_ids=prompt_token_ids, sampling_params=sampling_params) generated_text = [output.outputs[0].text for output in outputs] print(generated_text)
DeepSeek LLM使用HuggingFace Tokenizer来实现字节级BPE算法,并设计了特殊的预分词器以确保最佳性能。目前没有直接的方法将tokenizer转换为SentencePiece tokenizer。我们正在为开源量化方法做出贡献,以便使用HuggingFace Tokenizer。
我们已向流行的量化仓库llama.cpp提交了一个PR,以全面支持所有HuggingFace预分词器,包括我们的。
在等待PR合并的同时,您可以按照以下步骤生成GGUF模型:
git clone https://github.com/DOGEwbx/llama.cpp.git cd llama.cpp git checkout regex_gpt2_preprocess # 根据README设置环境 make python3 -m pip install -r requirements.txt # 生成GGUF模型 python convert-hf-to-gguf.py <MODEL_PATH> --outfile <GGUF_PATH> --model-name deepseekllm # 以q4_0量化为例 ./quantize <GGUF_PATH> <OUTPUT_PATH> q4_0 ./main -m <OUTPUT_PATH> -n 128 -p <PROMPT>
更新:
exllamav2现在已经能够支持HuggingFace Tokenizer。请拉取最新版本并尝试。
我们在不同批量大小和序列长度设置下,对7B和67B模型的推理峰值内存使用进行了分析。
对于DeepSeek LLM 7B,我们使用1块NVIDIA A100-PCIE-40GB GPU进行推理。
<table><thead><tr><th rowspan="2">批量大小</th><th colspan="5">序列长度</th></tr><tr><th>256</th><th>512</th><th>1024</th><th>2048</th><th>4096</th></tr></thead><tbody><tr><td>1</td><td>13.29 GB</td><td>13.63 GB</td><td>14.47 GB</td><td>16.37 GB</td><td>21.25 GB</td></tr><tr><td>2</td><td>13.63 GB</td><td>14.39 GB</td><td>15.98 GB</td><td>19.82 GB</td><td>29.59 GB</td></tr><tr><td>4</td><td>14.47 GB</td><td>15.82 GB</td><td>19.04 GB</td><td>26.65 GB</td><td>内存不足</td></tr><tr><td>8</td><td>15.99 GB</td><td>18.71 GB</td><td>25.14 GB</td><td>35.19 GB</td><td>内存不足</td></tr><tr><td>16</td><td>19.06 GB</td><td>24.52 GB</td><td>37.28 GB</td><td>内存不足</td><td>内存不足</td></tr></tbody></table>对于DeepSeek LLM 67B,我们使用8块NVIDIA A100-PCIE-40GB GPUs进行推理。
<table><thead><tr><th rowspan="2">批量大小</th><th colspan="5">序列长度</th></tr><tr><th>256</th><th>512</th><th>1024</th><th>2048</th><th>4096</th></tr></thead><tbody><tr><td>1</td><td>16.92 GB</td><td>17.11 GB</td><td>17.66 GB</td><td>20.01 GB</td><td>33.23 GB</td></tr><tr><td>2</td><td>17.04 GB</td><td>17.28 GB</td><td>18.55 GB</td><td>25.27 GB</td><td>内存不足</td></tr><tr><td>4</td><td>17.20 GB</td><td>17.80 GB</td><td>21.28 GB</td><td>33.71 GB</td><td>内存不足</td></tr><tr><td>8</td><td>17.59 GB</td><td>19.25 GB</td><td>25.69 GB</td><td>内存不足</td><td>内存不足</td></tr><tr><td>16</td><td>18.17 GB</td><td>21.69 GB</td><td>34.54 GB</td><td>内存不足</td><td>内存不足</td></tr></tbody></table>尽管DeepSeek LLMs展示了令人印象深刻的能力,但它们也并非没有局限性。以下是这类模型的一些潜在缺点:
过度依赖训练数据:这些模型是在大量文本数据上训练的,可能会引入数据中存在的偏见。它们可能无意中生成有偏见或歧视性的回应,反映了训练数据中普遍存在的偏见。
幻觉:模型有时会生成听起来合理但事实上不正确或缺乏支持的回应。当模型过度依赖从训练数据中学到的统计模式时,即使这些模式与现实世界的知识或事实不符,也可能发生这种情况。
重复:模型可能在生成的回应中出现重复。这种重复可以以各种方式表现,如重复某些短语或句子、生成冗余信息,或在生成的文本中产生重复的结构。这个问题可能使LLMs的输出不够多样化,对用户的吸引力也较低。
本代码仓库采用MIT许可证。DeepSeek LLM Base/Chat模型的使用受模型许可证约束。DeepSeek LLM系列(包括Base和Chat)支持商业使用。
@article{deepseek-llm,
author = {DeepSeek-AI},
title = {DeepSeek LLM: Scaling Open-Source Language Models with Longtermism},
journal = {arXiv preprint arXiv:2401.02954},
year = {2024},
url = {https://github.com/deepseek-ai/DeepSeek-LLM}
}
如果您有任何问题,请提出issue或通过service@deepseek.com联系我们。
用于可扩展和多功能 3D 生成的结构化 3D 潜在表示
TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。
10 节课教你开启构建 AI 代理所需的一切知识
AI Agents for Beginners 是一个专为初学者打造的课程项目,提供 10 节课程,涵盖构建 AI 代理的必备知识,支持多种语言,包含规划设计、工具使用、多代理等丰富内容,助您快速入门 AI 代理领域。
AI Excel全自动制表工具
AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。
基于 UI-TARS 视觉语言模型的桌面应用,可通过自然语言控制计算机进行多模态操作。
UI-TARS-desktop 是一款功能强大的桌面应用,基于 UI-TARS(视觉语言模型)构建。它具备自然语言控制、截图与视觉识别、精确的鼠标键盘控制等功能,支持跨平台使用(Windows/MacOS), 能提供实时反馈和状态显示,且数据完全本地处理,保障隐私安全。该应用集成了多种大语言模型和搜索方式,还可进行文件系统操作。适用于需要智能交互和自动化任务的场景,如信息检索、文件管理等。其提供了详细的文档,包括快速启动、部署、贡献指南和 SDK 使用说明等,方便开发者使用和扩展。
开源且先进的大规模视频生成模型项目
Wan2.1 是一个开源且先进的大规模视频生成模型项目,支持文本到图像、文本到视频、图像到视频等多种生成任务。它具备丰富的配置选项,可调整分辨率、扩散步数等参数,还能对提示词进行增强。使用了多种先进技术和工具,在视频和图像生成领域具有广泛应用前景,适合研究人员和开发者使用。
全流程 AI 驱动的数据可视化工具,助力用户轻松创作高颜值图表
爱图表(aitubiao.com)就是AI图表,是由镝数科技推出的一款创新型智能数据可视化平台,专注于为用户提供便捷的图表生成、数据分析和报告撰写服务。爱图表是中国首个在图表场景接入DeepSeek的产品。通过接入前沿的DeepSeek系列AI模型,爱图表结合强大的数据处理能力与智能化功能,致力于帮助职场人士高效处理和表达数据,提升工作效率和报告质量。
一款强大的视觉语言模型,支持图像和视频输入
Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。
HunyuanVideo 是一个可基于文本生成高质量图像和视频的项目。
HunyuanVideo 是一个专注于文本到图像及视频生成的项目。它具备强大的视频生成能力,支持多种分辨率和视频长度选择,能根据用户输入的文本生成逼真的图像和视频。使用先进的技术架构和算法,可灵活调整生成参数,满足不同场景的需求,是文本生成图像视频领域的优质工具。
一个基于 Gradio 构建的 WebUI,支持与浏览器智能体进行便捷交互。
WebUI for Browser Use 是一个强大的项目,它集成了多种大型语言模型,支持自定义浏览器使用,具备持久化浏览器会话等功能。用户可以通过简洁友好的界面轻松控制浏览器智能体完 成各类任务,无论是数据提取、网页导航还是表单填写等操作都能高效实现,有利于提高工作效率和获取信息的便捷性。该项目适合开发者、研究人员以及需要自动化浏览器操作的人群使用,在 SEO 优化方面,其关键词涵盖浏览器使用、WebUI、大型语言模型集成等,有助于提高网页在搜索引擎中的曝光度。
基于 ESP32 的小智 AI 开发项目,支持多种网络连接与协议,实现语音交互等功能。
xiaozhi-esp32 是一个极具创新性的基于 ESP32 的开发项目,专注于人工智能语音交互领域。项目涵盖了丰富的功能,如网络连接、OTA 升级、设备激活等,同时支持多种语言。无论是开发爱好者还是专业开发者,都能借助该项目快速搭建起高效的 AI 语音交互系统,为智能设备开发提供强大助力。