DeepSeekV2:这个新的开源的模型在多个基准测试中击败了 GPT-4、Claude-3 和 Llama-3!(附代码演示)

技术

Aitrainee | 公众号:AI进修生

🌟它是 DeepSeek 团队发布的一个新的开源专家混合模型。该模型在多个基准测试中击败了 GPT-4、ChatGPT、Claude-3、Gemini、Mixtral 8x22b 和 Llama 3。它可用于创建自己的 ChatGPT 克隆和 Github Copilot 替代品。

体验地址:https://chat.deepseek.com/coder

Hello,大家好,我是Aitrainee,欢迎阅读本期新文章。

这两天有个新模型引起了不少关注,那就是 DeepSeek-Coder-V2 。这个模型是DeepSeek-Coder的最新升级版,相比之前的版本有了很大的提升,特别是在 编码任务 方面的表现 令人惊艳

picture.image

DeepSeek-Coder-V2一共有两个版本:标准版DeepSeek-Coder-V2和精简版DeepSeek-Coder-V2 Light。标准版的参数量高达2360亿,而精简版的参数量则是160亿。

虽然精简版的体积小了不少,但在本地推理时依然表现出色。两个版本都支持128k的上下文长度,并且兼容338种编程语言,远超之前仅支持86种语言的旧版。

新模型通过8万亿标记进行训练,不仅在代码相关任务中表现卓越,在推理和一般能力方面也有显著进步。DeepSeek-Coder-V2在多个基准测试中都击败了其他闭源模型, 如GPT-4 Turbo、Claude 3、Opus和Gemini 1.5 Pro。

picture.image

▲ 在标准基准评估中,DeepSeek-Coder-V2 在编码和数学基准测试中的表现优于 GPT4-Turbo、Claude 3 Opus 和 Gemini 1.5 Pro 等闭源模型。

在HumanEval基准测试中,DeepSeek-Coder-V2取得了90.2的高分,超越了所有竞争对手。而在mbpp plus和GSM 8K基准测试中也表现优异,除了在GSM 8K中仅次于Claude 3 Opus,差距只有一个小数点。

更令人惊喜的是,DeepSeek-Coder-V2的定价非常合理, 每百万 输入标记只需14美分,输出标记为28美分,这 远低于 其他模型。而且,它采用MIT许可证,允许各种商业和非商业用途,非常灵活。

picture.image

▲ 在DeepSeek 平台上提供与 OpenAI 兼容的 API:platform.deepseek.com。注册即可获得数百万个免费代币。还可以以无与伦比的价格按使用量付费。

如果你想试用这个模型,可以从Hugging Face下载权重文件,或者通过AMA平台直接使用。还可以免费试用DeepSeek Chat平台,只需注册账号即可。在界面中选择Coder V2选项就能开始体验。

我们来做几个测试。首先,我们让它生成一个Python版本的贪 吃蛇游戏程序, 代码解释详细且运行正常。

然后,我们尝试创建一个 现代化 的HTML、CSS和JavaScript登陆页面,效果也相当不错。

picture.image

picture.image

DeepSeek-Coder-V2的2000亿参数版本可以直接在平台上运行,而小版本需要本地运行。我在本地测试了相同的任务,小版本在大多数任务中的表现与大版本类似,虽然在非常高级的任务中略有下降,但整体仍然优于CodeStral。

总的来说,DeepSeek-Coder-V2在编码任务中表现非常出色,支持超过300种编程语言,可本地运行且完全免费用于商业用途。另外,它还提供500万免费API标记,非常适合小型和个人项目。你可以将其连接到如continue Dev这样的协作平台。

下面提供官方的 文档介绍、相关资源、部署教程 等,进一步支撑你的行动,以提升本文的帮助力。

  1. 介绍 =====

我们介绍了DeepSeek-Coder-V2,这是一种开源的Mixture-of-Experts(MoE)代码语言模型,在代码相关任务中达到了与GPT4-Turbo相媲美的性能。

具体来说,DeepSeek-Coder-V2是在DeepSeek-V2的一个中间检查点基础上,继续进行额外的6万亿个标记的预训练。通过这种持续的预训练,DeepSeek-Coder-V2显著增强了DeepSeek-V2的编码和数学推理能力,同时在一般语言任务中保持了相当的性能。

与DeepSeek-Coder-33B相比,DeepSeek-Coder-V2在代码相关任务以及推理和一般能力方面表现出显著进步。此外,DeepSeek-Coder-V2支持的编程语言从86种增加到338种,同时将上下文长度从16K扩展到128K。

picture.image

▲ 上下文窗口:(NIAH) 测试的评估结果Needle In A Haystack。DeepSeek-Coder-V2 在高达128K的所有上下文窗口长度上表现良好。

在标准基准评估中,DeepSeek-Coder-V2在编码和数学基准测试中表现优于闭源模型如GPT4-Turbo、Claude 3 Opus和Gemini 1.5 Pro。支持的编程语言列表可以在这里找到。

  1. 模型下载

我们基于DeepSeekMoE框架发布了具有16B和236B参数的DeepSeek-Coder-V2,包括基础模型和指令模型,公开提供。

| 模型 | 总参数量 | 激活参数量 | 上下文长度 | 下载链接 | | DeepSeek-Coder-V2-Lite-Base | 16B | 2.4B | 128k | 🤗 HuggingFace | | DeepSeek-Coder-V2-Lite-Instruct | 16B | 2.4B | 128k | 🤗 HuggingFace | | DeepSeek-Coder-V2-Base | 236B | 21B | 128k | 🤗 HuggingFace | | DeepSeek-Coder-V2-Instruct | 236B | 21B | 128k | 🤗 HuggingFace |

  1. 评估结果

3.1 代码生成

| | 总参数量 | 激活参数量 | HumanEval | MBPP+ | LiveCodeBench | USACO | | 闭源模型 | | | | | | | | Gemini-1.5-Pro | - | - | 83.5 | 74.6 | 34.1 | 4.9 | | Claude-3-Opus | - | - | 84.2 | 72.0 | 34.6 | 7.8 | | GPT-4-Turbo-1106 | - | - | 87.8 | 69.3 | 37.1 | 11.1 | | GPT-4-Turbo-0409 | - | - | 88.2 | 72.2 | 45.7 | 12.3 | | GPT-4o-0513 | - | - | 91.0 | 73.5 | 43.4 | 18.8 | | 开源模型 | | | | | | | | CodeStral | 22B | 22B | 78.1 | 68.2 | 31.0 | 4.6 | | DeepSeek-Coder-Instruct | 33B | 33B | 79.3 | 70.1 | 22.5 | 4.2 | | Llama3-Instruct | 70B | 70B | 81.1 | 68.8 | 28.7 | 3.3 | | DeepSeek-Coder-V2-Lite-Instruct | 16B | 2.4B | 81.1 | 68.8 | 24.3 | 6.5 | | DeepSeek-Coder-V2-Instruct | 236B | 21B | 90.2 | 76.2 | 43.4 | 12.1 |

3.2 代码补全

| 模型 | 总参数量 | 激活参数量 | RepoBench (Python) | RepoBench (Java) | HumanEval FIM | | CodeStral | 22B | 22B | 46.1 | 45.7 | 83.0 | | DeepSeek-Coder-Base | 7B | 7B | 36.2 | 43.3 | 86.1 | | DeepSeek-Coder-Base | 33B | 33B | 39.1 | 44.8 | 86.4 | | DeepSeek-Coder-V2-Lite-Base | 16B | 2.4B | 38.9 | 43.3 | 86.4 |

3.3 代码修复

| | 总参数量 | 激活参数量 | Defects4J | SWE-Bench | Aider | | 闭源模型 | | | | | | | Gemini-1.5-Pro | - | - | 18.6 | 19.3 | 57.1 | | Claude-3-Opus | - | - | 25.5 | 11.7 | 68.4 | | GPT-4-Turbo-1106 | - | - | 22.8 | 22.7 | 65.4 | | GPT-4-Turbo-0409 | - | - | 24.3 | 18.3 | 63.9 | | GPT-4o-0513 | - | - | 26.1 | 26.7 | 72.9 | | 开源模型 | | | | | | | CodeStral | 22B | 22B | 17.8 | 2.7 | 51.1 | | DeepSeek-Coder-Instruct | 33B | 33B | 11.3 | 0.0 | 54.5 | | Llama3-Instruct | 70B | 70B | 16.2 | - | 49.2 | | DeepSeek-Coder-V2-Lite-Instruct | 16B | 2.4B | 9.2 | 0.0 | 44.4 | | DeepSeek-Coder-V2-Instruct | 236B | 21B | 21.0 | 12.7 | 73.7 |

3.4 数学推理

| | #TP | #AP | GSM8K | MATH | AIME 2024 | Math Odyssey | | 闭源模型 | | | | | | | | Gemini-1.5-Pro | - | - | 90.8 | 67.7 | 2/30 | 45.0 | | Claude-3-Opus | - | - | 95.0 | 60.1 | 2/30 | 40.6 | | GPT-4-Turbo-1106 | - | - | 91.4 | 64.3 | 1/30 | 49.1 | | GPT-4-Turbo-0409 | - | - | 93.7 | 73.4 | 3/30 | 46.8 | | GPT-4o-0513 | - | - | 95.8 | 76.6 | 2/30 | 53.2 | | 开源模型 | | | | | | | | Llama3-Instruct | 70B | 70B | 93.0 | 50.4 | 1/30 | 27.9 | | DeepSeek-Coder-V2-Lite-Instruct | 16B | 2.4B | 86.4 | 61.8 | 0/30 | 44.4 | | DeepSeek-Coder-V2-Instruct | 236B | 21B | 94.9 | 75.7 | 4/30 | 53.7 |

3.5 通用自然语言

| 基准测试 | 领域 | DeepSeek-V2-Lite Chat | DeepSeek-Coder-V2-Lite Instruct | DeepSeek-V2 Chat | DeepSeek-Coder-V2 Instruct | | BBH | 英文 | 48.1 | 61.2 | 79.7 | 83.9 | | MMLU | 英文 | 55.7 | 60.1 | 78.1 | 79.2 | | ARC-Easy | 英文 | 86.1 | 88.9 | 98.1 | 97.4 | | ARC-Challenge | 英文 | 73.4 | 77.4 | 92.3 | 92.8 | | TriviaQA | 英文 | 65.2 | 59.5 | 86.7 | 82.3 | | NaturalQuestions | 英文 | 35.5 | 30.8 | 53.4 | 47.5 | | AGIEval | 英文 | 42.8 | 28.7 | 61.4 | 60 | | CLUEWSC | 中文 | 80.0 | 76.5 | 89.9 | 85.9 | | C-Eval | 中文 | 60.1 | 61.6 | 78.0 | 79.4 | | CMMLU | 中文 | 62.5 | 62.7 | 81.6 | 80.9 | | Arena-Hard | - | 11.4 | 38.1 | 41.6 | 65.0 | | AlpaceEval 2.0 | - | 16.9 | 17.7 | 38.9 | 36.9 | | MT-Bench | - | 7.37 | 7.81 | 8.97 | 8.77 | | Alignbench | - | 6.02 | 6.83 | 7.91 | 7.84 |

  1. 模型训练

4.1 数据

DeepSeek-Coder-V2的初始权重来自于DeepSeek-V2,其中包含了大量从网络上收集的公共和许可证兼容的数据。此外,我们还通过包含许多语言的开源GitHub代码库来增强训练数据。特别是为了增强代码任务能力,我们从以下领域添加了高质量的开源数据:

    1. 常规代码数据: 包括GitHub代码、StackOverflow答案等。
    1. 数学数据: 包括用于增强数学推理能力的数学题库。

4.2 微调

DeepSeek-Coder-V2的训练分为两个阶段:

    1. 基础训练: 在DeepSeek-V2的一个中间检查点基础上进行额外的6万亿个标记的预训练。
    1. 微调: 为了提升指令跟随能力,我们在指令数据集上进行微调。
  1. 使用DeepSeek-Coder-V2


5.1 环境设置

首先,安装所需的库:


      
      
          

        pip install torch transformers
      
    

5.2 加载模型

以下是一个简单的示例代码,演示如何加载和使用DeepSeek-Coder-V2进行推理:


      
      
          

        import
         torch
          

        from
         transformers 
        import
         
        AutoTokenizer
        ,
         
        AutoModelForCausalLM
          

          

        # 加载tokenizer
          

        tokenizer 
        =
         
        AutoTokenizer
        .
        from\_pretrained
        (
        "deepseek-ai/DeepSeek-Coder-V2-Instruct"
        )
          

          

        # 加载模型
          

        model 
        =
         
        AutoModelForCausalLM
        .
        from\_pretrained
        (
        "deepseek-ai/DeepSeek-Coder-V2-Instruct"
        )
          

          

        # 输入文本
          

        input\_text 
        =
         
        "def add(a, b):"
          

        inputs 
        =
         tokenizer
        (
        input\_text
        ,
         return\_tensors
        =
        "pt"
        )
          

          

        # 生成代码
          

        output 
        =
         model
        .
        generate
        (**
        inputs
        )
          

        print
        (
        tokenizer
        .
        decode
        (
        output
        [
        0
        ],
         skip\_special\_tokens
        =
        True
        ))
      
    

5.3 示例

以下是使用DeepSeek-Coder-V2生成Python代码的示例:


      
      
          

        from
         transformers 
        import
         
        AutoModelForCausalLM
        ,
         
        AutoTokenizer
          

          

        model\_name 
        =
         
        "deepseek-ai/DeepSeek-Coder-V2-Instruct"
          

        tokenizer 
        =
         
        AutoTokenizer
        .
        from\_pretrained
        (
        model\_name
        )
          

        model 
        =
         
        AutoModelForCausalLM
        .
        from\_pretrained
        (
        model\_name
        )
          

          

        inputs 
        =
         tokenizer
        (
        "def add(a, b):"
        ,
         return\_tensors
        =
        "pt"
        )
          

        outputs 
        =
         model
        .
        generate
        (**
        inputs
        ,
         max\_new\_tokens
        =
        50
        )
          

        print
        (
        tokenizer
        .
        decode
        (
        outputs
        [
        0
        ],
         skip\_special\_tokens
        =
        True
        ))
      
    

参考链接:
[1]https://github.com/deepseek-ai/DeepSeek-Coder-V2

[2]https://chat.deepseek.com/coder

[3]https://www.youtube.com/watch?v=yY0RSqRs0xQ&t=92s

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

picture.image

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~

picture.image

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论