编程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 生态系统的承诺,为研究人员和开发人员提供强大的工具,推动人工智能技术的进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek:全栈开发者视角下的AI革命者

目录​​​​​​​ DeepSeek:全栈开发者视角下的AI革命者 写在前面 一、DeepSeek的诞生与定位 二、DeepSeek技术架构的颠覆性突破 1、解构算力霸权:从MoE架构到内存革命 2、多模态扩展的技术纵深 3、算法范式的升维重构 4、重构AI竞争规则 三、…

SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言

目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…

HTB:EscapeTwo[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…

一文讲解Java中的ArrayList和LinkedList

ArrayList和LinkedList有什么区别? ArrayList 是基于数组实现的,LinkedList 是基于链表实现的。 二者用途有什么不同? 多数情况下,ArrayList更利于查找,LinkedList更利于增删 由于 ArrayList 是基于数组实现的&#…

多无人机--强化学习

这个是我对于我的大创项目的构思,随着时间逐渐更新 项目概要 我们的项目平台来自挑战杯揭绑挂帅的无人机对抗项目,但是在由于时间原因,并未考虑强化学习,所以现在通过大创项目来弥补遗憾 我们项目分为三部分,分为虚…

龙芯+FreeRTOS+LVGL实战笔记(新)——16数码管驱动

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了完善与优化,各位可以前往本人在B站的视频合集(图1所示)观看所有演示视频,合集首个视频链接为: https://www.bilibili.…

Day36-【13003】短文,数组的行主序方式,矩阵的压缩存储,对称、三角、稀疏矩阵和三元组线性表,广义表求长度、深度、表头、表尾等

文章目录 本次课程内容第四章 数组、广义表和串第一节 数组及广义表数组的基本操作数组的顺序存储方式-借用矩阵行列式概念二维数组C语言对应的函数-通常行主序方式 矩阵的压缩存储对称矩阵和三角矩阵压缩存储后,采用不同的映射函数稀疏矩阵-可以构成三元组线性表三…

[Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建回归神经网络。这篇文章将介绍如何利用PyTorch构建神经网络实现分类预测,其是使用基础模块构建。前面我们的Python人工智能主要以TensorFlow和Keras为主,而现在最主流的深度学习框…

Java进阶14 TCP日志枚举

Java进阶14 TCP&日志&枚举 一、网络编程TCP Java对基于TCP协议得网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。 1、TCP协议发数据 1.1 构造方法 方法 说明 Socket(InetAddress address…

Java三十天速成(java进阶篇)

Day 15 一、集合框架 1、集合框架图 2、数据结构: ①、逻辑结构; 在计算机科学中,逻辑结构是指数据元素之间的关系,它描述了数据元素之间的逻辑联系,而不是它们在计算机内存中的物理存储方式。逻辑结构可以分为以下…

专门记录台式电脑常见问题

1、蓝屏死机,检查内存硬盘和cpu 2、拆内存条,用橡皮擦金手指 3、放主板静电,扣主板电池 4、系统时间不正确,主板电池没电 5、开机键坏了 6、电脑主机的风扇转,正常通电运行,但显示器没信号。看键盘的num键&…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误,断网安装即可! 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本(如 Netplan 或传统的 ifupdown),配置方法有所不同。以下是基于 Netplan 的配置方法(适用于Ubuntu 17.10及更高版…

北大AGI与具身智能评估新范式!Tong测试:基于动态具身物理和社会互动的评估标准

作者:Yujia Peng, Jiaheng Han, Zhenliang Zhang, Lifeng Fan, Tengyu Liu, Siyuan Qi, Xue Feng, Yuxi Ma, Yizhou Wang, Song-Chun Zhu 单位:北京通用人工智能研究院国家通用人工智能重点实验室,北京大学人工智能研究所,北京大…

DeePseek结合PS!批量处理图片的方法教程

​ ​ 今天我们来聊聊如何利用deepseek和Photoshop(PS)实现图片的批量处理。 传统上,批量修改图片尺寸、分辨率等任务往往需要编写脚本或手动处理,而现在有了AI的辅助,我们可以轻松生成PS脚本,实现自动化处…

OkHttpClient请求失败处理与网页下载成功实践

在现代的网络应用开发中,数据的获取和处理是核心任务之一。无论是从第三方API获取数据,还是从网页中提取内容,网络请求都是不可或缺的环节。在Java中,OkHttp是一个非常流行且功能强大的HTTP客户端库,它提供了简洁的API…

Idea ⽆ Maven 选项

Idea ⽆ Maven 选项 1. 在 Idea 项⽬上右键2. 选中 Maven 选项 如果在创建 Spring/Spring Boot 项⽬时,Idea 右侧没有 Maven 选项,如下图所示: 此时可以使⽤以下⽅式解决。 1. 在 Idea 项⽬上右键 2. 选中 Maven 选项 选中 Maven 之后&#…

Vue3状态管理: Pinia使用技巧与最佳实践

Vue3状态管理: Pinia使用技巧与最佳实践 随着Web应用复杂度的提升,前端状态管理变得愈发重要。而在Vue3中,Pinia作为一种全新的状态管理工具,为我们提供了更加灵活和强大的状态管理解决方案。本文将从Pinia的基本概念入手,深入探讨…

从零开始实现一个双向循环链表:C语言实战

文章目录 1链表的再次介绍2为什么选择双向循环链表?3代码实现:从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…

AI推理性能之王-Groq公司开发的LPU芯片

Groq公司开发的LPU(Language Processing Unit,语言处理单元)芯片是一种专为加速大规模语言模型(LLM)和其他自然语言处理任务而设计的新型AI处理器。以下是对其技术特点、性能优势及市场影响的深度介绍: 技…

【玩转 Postman 接口测试与开发2_016】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(上)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证1 契约测试的概念2 契约测试的工作原理3 契约测试的分类4 DeepSeek 给出的契约测试相关背景5 契约测试在 Postman 中的创建方法6 API 实例的基本用法7 API 实例的类型实…