当前位置: 首页 > article >正文

编程AI深度实战:大模型哪个好? Mistral vs Qwen vs Deepseek vs Llama

随着开源 LLM 的发展,越来越多的模型变得专业化,“代码”LLM 变得非常流行。这些 LLM 旨在比其 “常识” 对应物更小,但旨在超越更大的通用模型的编码性能。

这些模型以极低的成本提供大型模型的功能,进一步使本地 LLM 空间民主化。特别是,在较小的编码 LLM 领域中,有三个模型在竞争中脱颖而出:Codestral 22B、DeepSeek Coder V2 Lite 14B 和 Qwen 2.5 Coder 7B。

Codestral 22B 于 5 月 29 日发布,这是 Mistral 发布的第一款特定代码模型。据说它精通 80 多种编程语言,具有 Fill-in-the-Middle 能力,可以与开发人员一起充当助手。

Qwen 2.5 Coder 7B 已于 2024 年 9 月 19 日由阿里云发布。它是 Qwen 系列的一部分,模型参数范围从 1.5B 到 32B 不等,针对更接近闭源模型的性能。

DeepSeek V2 Coder 由 DeepSeek AI 于 2024 年 6 月发布。该模型是 DeepSeek V1 的改进版本,使用 1.17 万亿个代码相关标记进行训练,它专注于增强的代码生成和数学功能,还支持 Fill-in-the-Middle。除了具有 2360 亿个参数的 “基础” 模型外,他们还发布了具有 160 亿个参数的较小 “精简” 版本。

先过一遍榜单

这三种型号在各自的参数类别中都拥有最先进的性能,而且数字相当可观。我们来看看模型在最流行的编程基准测试 HumanEval 上的性能。

Codestral 得分为 81.1%,DeepSeek Coder v2 Lite 得分为 81.1%,而 Qwen 2.5 Coder 7B 在基准测试中得分为 88.4%,超过了比自身大得多的两个模型。作为参考,OpenAI 的闭源 GPT-4 得分仅为 87.1%,而改进的 GPT-4o 得分仅比 Qwen 2.5 Coder 高出 2 个百分点,为 90.2%。

另一个值得注意的基准是 Spider,它包含 10,000 多个问题,与 5,000 多个复杂的跨域 SQL 查询相匹配。此基准测试对于将 LLM 集成到数据库中至关重要。这一次,Qwen 2.5 Coder 以更大的优势领先,为 82.0%,而 Codestral 的得分仅为 76.6%。

下表比较了所有三种模型的基准,侧面为 GPT-4o 作为参考:

添加图片注释,不超过 140 字(可选)

注意:Codestral 的基准测试数据取自 DeepSeek Coder 与 Codestral 的比较,高于 Mistral 的“官方”报告数据

我们从数字上看到,Qwen 2.5 Coder 7B 的性能绝对优于其他所有模型,在某些情况下,几乎与 GPT-4o 的性能相当。

当然,数字永远不能说明全部情况。我们需要在实际场景中测试这些模型,以了解它们如何 “执行” 或 “作”。

在下面的实验中,我将在具有 24GB 统一内存的 M2 MacBook Air 上本地运行所有模型,使用 ollama,llama.cpp 在引擎盖下运行。在模型优化方面,我将对所有模型使用 Q6_K 量化,它保留了原始模型的合理性能,同时允许所有模型都适合我的 24GB 机器。

为了了解模型大小和速度的差异,以下是它们在我的笔记本电脑上运行的 GGUF 文件大小以及它们的每秒令牌数 (t/s):

  • 代码 22B - 18GB~ (3.31t/s)

  • Deepseek Coder v2 Lite 16B - 14GB~ (8.35t/s)

  • Qwen 2.5 编码器 7B - 6.3GB~ (10.31t/s)

经典游戏

以下是您文章的编辑版本,其中包含对语法、拼写和尴尬措辞的更正:

让我们从 HTML、CSS 和 JavaScript 中的经典贪吃蛇游戏开始。我想在一次性编码任务中看到 LLM 的能力。对于没有任何编程经验来指导 LLM 或调试其输出的人来说,它能很好地创建有用的东西吗?以下是我在所有 LLM 上使用的提示:

在一个文件中用 HTML、CSS 和 JavaScript 编写一个基本的功能性贪吃蛇游戏。玩家将使用箭头键控制蛇。

Qwen Coder 生成代码完全没有问题,完美地完成了任务。我什至多次尝试了提示的变体,以确保这不是侥幸,但 Qwen 每次都交付了。

添加图片注释,不超过 140 字(可选)

Qwen 实现上的 Snake 游戏

另一方面,Codestral 确实成功地制作了一款有效的游戏,但它并非没有自己的怪癖和错误。碰撞检测并不完全完美,蛇的速度太慢了,蛇的生长几乎不明显。

添加图片注释,不超过 140 字(可选)

Codestral 实现上的 Snake 游戏

Deepseek 的性能令人失望。尽管进行了多次对话,但它无法产生一个简单的贪吃蛇游戏的有效实现。Deepseek 使用 “addEventListener” 方法来监听按键,但由于移动代码中的错误,该按键从未在其任何实现中注册。

我还尝试使用其他更复杂的游戏(如 2048、Minesweeper 和 Tetris)来提示 LLM。几乎所有的 LLM 都在这些更“复杂”的提示符中失败,提供的代码几乎无法正常工作,除了 Qwen 7B Coder,它是所有代码中最小的。

在我的测试中,Qwen 在 2048 和俄罗斯方块等复杂游戏中遇到了困难,但生成的代码通常是半功能性的,例如 2048 年移动的一半有效,或者俄罗斯方块中掉落的块有效,但其他什么都没有。

然而,对于 Minesweeper,Qwen 能够始终如一地产生近乎完美的实现。以下是我在美学上更好的实现之一和(加速的)游戏。

添加图片注释,不超过 140 字(可选)

Qwen 实现上的 Minesweeper 游戏玩法

以下是结果摘要:

添加图片注释,不超过 140 字(可选)

Qwen 2.5 版本

Qwen 2.5 Coder 7B 开局强劲。它的 five_crop 功能运行完美,但重建功能存在一些问题。尽管进行了多次修改,但 Qwen 似乎对裁剪面具的确切内容感到困惑。

reconstruct 函数的输入(即 five_crop 函数生成的输出)是包含裁剪图像的张量。第一维中的每个 b 图像都表示不同的裁剪,从第一个图像的左上角开始,然后是第二个图像的左上角部分,依此类推。虽然 Qwen 似乎掌握了图像重建背后的逻辑,但尽管反复提示和修改,用于提取作物的索引仍然存在问题。

添加图片注释,不超过 140 字(可选)

Qwen 的实现

DeepSeek 精简版

Deepseek 也解决了five_crop但它的实现要繁琐得多,也不太清晰。我更喜欢 Qwen 2.5 实现。对于 reconstruct 函数,代码运行没有错误,但图像远非重建,很像一个解错的拼图游戏。额外的提示和微移没有提供任何改进。

添加图片注释,不超过 140 字(可选)

Deepseek Lite 的实现

代码

Codestral 的 five_crop 函数完美无缺,可读性超过了 Qwen,它使用 torchvision 的 crop 函数裁剪出每个区域,而不是 Qwen 使用的凌乱索引。与其他模型类似,它在重建功能方面存在一些困难,但在澄清了裁剪图像的前导维度包含的内容后,Codestral 在第一次尝试时给出了完美的实现。

添加图片注释,不超过 140 字(可选)

Codestral 的最终实现

“基本”知识

除了更长、更复杂的编码任务外,我还向 LLM 提出了一些关于数学和 Python 知识的基本简短问题。这些问题测试基本概念并评估 LLM 提供精确、准确答案的能力,而无需不必要的阐述,这是完成更复杂请求的基石。此外,它们可以揭示 LLM 知识库或推理过程中意想不到的弱点。

  1. 31793 是素数吗?

  2. Qwen 实际上没有直接回答,而是试图 “模拟” Python 解释器,写下一些代码,然后产生不正确的 “False” 输出。

  3. Deepseek 通过一长串测试逐个数字地检查可整除性,回答错误,并说 31793 可以被 19 整除。

  4. Codestral 尝试编写一些 Python 代码来测试这个数字,但在响应的末尾给出了直接、正确的答案:“yes”。

  5. 编写一个 Python 函数来反转字符串,而无需使用内置的 reverse() 方法。

  6. Qwen 编写了一段功能代码,但它没有使用快捷方式 [::-1],而是反向循环遍历列表。它确实建议将快捷方式实现作为 “替代方案”。

  7. Deepseek 也生成了功能代码,但甚至不建议使用快捷方式 [::-1]。相反,它巧妙地遍历字符串并将每个字符附加到列表的前面,这是一种比 Qwen 更简洁的实现,但并不完美。

  8. Codestral 使用了 [::-1] 切片技巧并给出了简洁、正确的响应。

  9. 计算半径为 7.5 个单位的圆的面积。将您的答案四舍五入到小数点后两位。

  10. Qwen 准确地计算了面积,精确到第 100 位,即 176.71,并给出了不必要的冗长解释。

  11. Deepseek 给出了与 Qwen 几乎相同的结果:解释很长,但正确答案为 176.71。

  12. Codestral 给出了简洁、准确的答案:176.71。

  13. 对二进制数 1010 和 1100 进行 XOR 运算的结果是什么?

  14. Qwen 回答错误,“0100”,并尝试编写无法运行的 Python 代码来解决问题。

  15. Deepseek 用不必要的冗长解释正确地回答了。

  16. Codestral 以适长的解释正确回答。

结论

总体而言,看起来较大的模型稍微更“智能”。增加的参数大小使它们具有更“原始”的能力来回忆知识和理解上下文。最小的模型 Qwen 经常编写和假装运行 Python 代码,而不是直接回答问题。Deepseek 和 Codestral 都更擅长仅在需要时编写代码。令人惊讶的是,只有 Codestral 给出了最简洁和广泛采用的反转字符串的实现。

以下是本文中对三个模型完成的所有测试的摘要结果:

添加图片注释,不超过 140 字(可选)

您应该选择哪一个?

在不考虑计算成本的情况下,我建议为 python 任务选择 Codestral,为其他语言选择 Qwen。

尽管 Codestral 在浏览器游戏的测试中并不出色,但它更大的参数数量只是让对话感觉“更流畅”,因为它比较小的模型更能理解语言。与 Codestral 交谈感觉更像是与 ChatGPT 的对话,而 Qwen 和 Deepseek 都感觉他们只知道如何用“代码”说话。

如果内存限制和速度是一个限制因素,那么 Qwen 是不费吹灰之力的。在某些情况下,它比 Codestral 更智能,并且与 Codestral 相比需要的内存不到一半,q6 量化仅为 6.3 GB。它可以以不错的速度在大多数 GPU 和所有 Apple Silicon Mac 上轻松运行。

当然,这可能不会持续太久,因为 Qwen 背后的公司阿里巴巴计划发布 32B 版本的编码器,旨在匹配最先进的闭源性能。较低数量的 32B 模型将适合可以运行 Codestral 的机器。开源编码 LLM 领域无异于令人振奋。

Llama3.3: 开源模型扛把子?

Llama 3 到 Llama 3.1、Llama 3.2、Llama 3.3 系列模型在参数规模、上下文长度和性能上不断突破壁垒,Llama 3.1 405B 版本成为最大的开源大型语言模型之一。

llama 3.2 1B/3B/11B/90B

发布日期:9月 26, 2024

型号变体:llama 3.2 1B、llama 3.2 3B、llama 3.2 11B 和llama 3.2 90B

详细信息: Llama 3.2 发布了中小型视觉 LLM(11B 和 90B),以及适用于边缘和移动设备的轻量级纯文本模型(1B 和 3B),包括预训练和指令调整版本。这些模型支持 128K 上下文长度,并针对 Arm 处理器进行了优化,适用于本地摘要、指令跟踪和重写任务。

llama 3.3 70B

发布日期:12月 7, 2024

型号变体:llama 3.3 70B

详细信息: Llama 3.3 是 Llama 系列的最新版本,进一步提高了模型效率和性能。Llama 3.3 在多语言功能、代码生成和复杂数学问题解决方面取得了重大进步,参数规模达到 405B,接近或超过市场上其他领先模型的性能。

这些开源模型版本反映了 Meta 对开放 AI 生态系统的承诺,为研究人员和开发人员提供强大的工具,推动人工智能技术的进步。


http://www.kler.cn/a/532958.html

相关文章:

  • 计算机网络——三种交换技术
  • pycharm(2)
  • Java基础——分层解耦——IOC和DI入门
  • Go学习:类型转换需注意的点 以及 类型别名
  • 框架与代码的形状
  • 并行计算、分布式计算与云计算:概念剖析与对比研究(表格对比)
  • Leetcode - 周赛434
  • 《深度洞察ICA:人工智能信号处理降维的独特利器》
  • DeepSeek-R1:通过强化学习提升大型语言模型推理能力的探索
  • 猫眼前端开发面试题及参考答案
  • Redis真的是单线程的吗?
  • Spring Bean 的生命周期介绍
  • SQL注入漏洞之绕过[前端 服务端 waf]限制 以及 防御手法 一篇文章给你搞定
  • 从Transformer到世界模型:AGI核心架构演进
  • 51单片机 06 定时器
  • Effective Objective-C 2.0 读书笔记—— 接口与API设计
  • Java-数据结构-优先级队列(堆的使用)
  • 数据中心服务器对PCIe测试的需求、挑战和应用
  • 【大数据技术】本机DataGrip远程连接虚拟机MySQL/Hive
  • 5分钟掌握React的Redux Toolkit + Redux
  • 深度学习篇---张量数据流动处理
  • windows环境下如何在PyCharm中安装软件包
  • 【CSS】什么是响应式设计?响应式设计的基本原理,怎么做
  • 实际操作 检测缺陷刀片
  • 【自学嵌入式(8)天气时钟:天气模块开发、主函数编写】
  • 新手STM32:基于HAL库的定时器和PWM输出