编程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 知识库或推理过程中意想不到的弱点。
-
31793 是素数吗?
-
Qwen 实际上没有直接回答,而是试图 “模拟” Python 解释器,写下一些代码,然后产生不正确的 “False” 输出。
-
Deepseek 通过一长串测试逐个数字地检查可整除性,回答错误,并说 31793 可以被 19 整除。
-
Codestral 尝试编写一些 Python 代码来测试这个数字,但在响应的末尾给出了直接、正确的答案:“yes”。
-
编写一个 Python 函数来反转字符串,而无需使用内置的 reverse() 方法。
-
Qwen 编写了一段功能代码,但它没有使用快捷方式 [::-1],而是反向循环遍历列表。它确实建议将快捷方式实现作为 “替代方案”。
-
Deepseek 也生成了功能代码,但甚至不建议使用快捷方式 [::-1]。相反,它巧妙地遍历字符串并将每个字符附加到列表的前面,这是一种比 Qwen 更简洁的实现,但并不完美。
-
Codestral 使用了 [::-1] 切片技巧并给出了简洁、正确的响应。
-
计算半径为 7.5 个单位的圆的面积。将您的答案四舍五入到小数点后两位。
-
Qwen 准确地计算了面积,精确到第 100 位,即 176.71,并给出了不必要的冗长解释。
-
Deepseek 给出了与 Qwen 几乎相同的结果:解释很长,但正确答案为 176.71。
-
Codestral 给出了简洁、准确的答案:176.71。
-
对二进制数 1010 和 1100 进行 XOR 运算的结果是什么?
-
Qwen 回答错误,“0100”,并尝试编写无法运行的 Python 代码来解决问题。
-
Deepseek 用不必要的冗长解释正确地回答了。
-
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 生态系统的承诺,为研究人员和开发人员提供强大的工具,推动人工智能技术的进步。
相关文章:

编程AI深度实战:大模型哪个好? Mistral vs Qwen vs Deepseek vs Llama
随着开源 LLM 的发展,越来越多的模型变得专业化,“代码”LLM 变得非常流行。这些 LLM 旨在比其 “常识” 对应物更小,但旨在超越更大的通用模型的编码性能。 这些模型以极低的成本提供大型模型的功能,进一步使本地 LLM 空间民主化…...
11.kafka开启jmx
方式一: 1.进入/opt/kafka_2.13-3.3.2/bin目录 命令: cd /opt/kafka_2.13-3.3.2/bin [root@rhel77 ~]# cd /opt/kafka_2.13-3.3.2/bin [root@rhel77 bin]# pwd /opt/kafka_2.13-3.3.2/bin [root@rhel77 bin]# 2.备份kafka-run-class.sh 命令: cp kafka-run-class.sh …...
基于钉钉API的连接器实现:企业数据集成与自动化管理
文章目录 概要背景与需求钉钉API概述连接器实现小结 概要 在当今数字化时代,企业面临着海量数据的管理与整合挑战。钉钉作为国内广泛使用的办公协作平台,提供了丰富的API接口,支持企业进行数据集成与自动化管理。本文将介绍如何通过钉钉API实…...
JAVA 二维列表的基础操作与异常
在Java中创建二维 ArrayList(即嵌套列表)的方法有多种,下面我将详细介绍常用的几种方式,并分析它们的区别和适用场景。 1. 使用嵌套 ArrayList 创建二维列表 方法一:直接嵌套 ArrayList 这是最常用的方法,…...

将仓库A分支同步到仓库B分支,并且同步commit提交
一、 问题 有一仓库A 和 一仓库B, 需要将仓库A分支a1所有提交同步推送到仓库B分支b1上 二、 解决 2.1、 首先需要仓库A、仓库B的权限, 2.2、将仓库A clone到本地, 进入A目录,并且切换到a1分支 cd A ## A 为A仓库clone到本地代…...

使用java代码操作rabbitMQ收发消息
SpringAMQP 将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也…...

mysql8安装时提示-缺少Microsoft Visual C++ 2019 x64 redistributable
MySQL8.0安装包mysql-8.0.1-winx64进行安装,提示:This application requires Visual Studio 2019 x64Redistributable, Please install the Redistributable then runthis installer again。出现这个错误是因为我们电脑缺少Microsoft Visual C 这个程序&…...

WindowsServer搭建内网Gitea【中文更方便使用】
特点: 轻量级:占用系统资源少,对服务器硬件要求较低,适合小型企业或团队使用。部署和维护相对简单,即使没有专业的运维人员也能轻松搭建。 功能齐全:具备基本的代码托管功能,如仓库管理、分支管…...

leetcode 907. 子数组的最小值之和
题目如下 数据范围 观察数据范围理论上平方复杂度的算法计算次数逼近1e9还不至于超时,但是由于有mod 1e9导致超时。所以本题不能靠暴力枚举来解决。 所以我们可以思考如何在枚举上面减少计算次数:第一种枚举法:最外层i控制子数组的左边界&…...
WordPress自定义.js文件排序实现方法
在WordPress中,要将插件引用的.js文件放到所有.js文件之后加载,可以通过以下方法实现: 方法一:调整wp_enqueue_script的加载顺序 在插件的主文件中,使用wp_enqueue_script函数加载.js文件时,将$in_footer…...

摄像头模块烟火检测
工作原理 基于图像处理技术:分析视频图像中像素的颜色、纹理、形状等特征。火焰通常具有独特的颜色特征,如红色、橙色等,且边缘呈现不规则形状,还会有闪烁、跳动等动态特征;烟雾则表现为模糊、无固定形状,…...

【拼十字——树状数组】
题目 暴力代码 30% #include <bits/stdc.h> using namespace std; using ll long long; const int N 1e5 10; const int mod 1e9 7; int n; int l[N], w[N], c[N]; int main() {cin >> n;ll ans 0;for (int i 1; i < n; i){cin >> l[i] >> …...

脚手架开发【实战教程】prompts + fs-extra
创建项目 新建文件夹 mycli_demo 在文件夹 mycli_demo 内新建文件 package.json {"name": "mycli_demo","version": "1.0.0","bin": {"mycli": "index.js"},"author": "","l…...

Fiddler Classic(HTTP流量代理+半汉化)
目录 一、关于Fiddler (一) Fiddler Classic (二) Fiddler Everywhere (三) Fiddler Everywhere Reporter (四) FiddlerCore (五) 总结 二、 软件安全性 1. 软件安装包 2. 软件汉化dll 三、安装与半汉化 1. 正常打开安装包点击下一步安装即可,安装路径自…...

基于yolov11的阿尔兹海默症严重程度检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
【算法介绍】 基于YOLOv11的阿尔兹海默症严重程度检测系统是一种创新的医疗辅助工具,旨在通过先进的计算机视觉技术提高阿尔兹海默症的早期诊断和病情监测效率。阿尔兹海默症是一种渐进性的神经退行性疾病,通常表现为认知障碍、记忆丧失和语言障碍等症状…...
玩转Docker | 使用Docker部署httpd服务
玩转Docker | 使用Docker部署httpd服务 前言一、准备工作环境确认检查操作系统准备网站目录和配置文件二、拉取httpd镜像三、运行httpd容器运行容器命令检查容器状态四、验证httpd服务浏览器访问测试错误排查五、容器管理与维护查看容器状态停止和启动容器更新网站内容和配置六…...

力扣1022. 从根到叶的二进制数之和(二叉树的遍历思想解决)
Problem: 1022. 从根到叶的二进制数之和 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 1.在先序遍历的过程中,用一个变量path记录并更新其经过的路径上的值,当遇到根节点时再将其加到结果值res上; 2.该题…...

排序算法--基数排序
核心思想是按位排序(低位到高位)。适用于定长的整数或字符串,如例如:手机号、身份证号排序。按数据的每一位从低位到高位(或相反)依次排序,每次排序使用稳定的算法(如计数排序&#…...

【AIGC魔童】DeepSeek核心创新技术(二):MLA
【AIGC魔童】DeepSeek核心创新技术(二):MLA 1. MLA框架的定义与背景2. MLA框架的技术原理(1)低秩联合压缩(2)查询的低秩压缩(3)旋转位置嵌入(RoPE)…...
Mac: docker安装以后报错Command not found: docker
文章目录 前言解决办法(新的)解决步骤(原来的)不推荐总结 前言 本操作参考 http://blog.csdn.net/enhenglhm/article/details/137955756 原作者,更详细请,查看详细内容请关注原作者。 一般,…...

Golang 并发机制-7:sync.Once实战应用指南
Go的并发模型是其突出的特性之一,但强大的功能也带来了巨大的责任。sync.Once是由Go的sync包提供的同步原语。它的目的是确保一段代码只执行一次,而不管有多少协程试图执行它。这听起来可能很简单,但它改变了并发环境中管理一次性操作的规则。…...

react关于手搓antd pro面包屑的经验(写的不好请见谅)
我们先上代码,代码里面都有注释,我是单独写了一个组件,方便使用,在其他页面引入就行了 还使用了官方的Breadcrumb组件 import React, { useEffect, useState } from react; import { Breadcrumb, Button } from antd; import { …...

Android修行手册-五种比较图片相似或相同
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材…...

设计模式.
设计模式 一、介绍二、六大原则1、单一职责原则(Single Responsibility Principle, SRP)2、开闭原则(Open-Closed Principle, OCP)3、里氏替换原则(Liskov Substitution Principle, LSP)4、接口隔离原则&am…...

使用PyCharm创建项目以及如何注释代码
创建好项目后会出现如下图所示的画面,我们可以通过在项目文件夹上点击鼠标右键,选择“New”菜单下的“Python File”来创建一个 Python 文件,在给文件命名时建议使用英文字母和下划线的组合,创建好的 Python 文件会自动打开&#…...

LabVIEW与PLC交互
一、写法 写命令立即读出 写命令后立即读出,在同一时间不能有多个地方写入,因此需要在整个写入后读出过程加锁 项目中会存在多个循环并行执行该VI,轮询PLC指令 在锁内耗时,就是TCP读写的实际耗时为5-8ms,在主VI六个…...

Idea 2024.3 使用CodeGPT插件整合Deepseek
哈喽,大家好,我是浮云,最近国产大模型Deepseek异常火爆,作为程序员我也试着玩了一下,首先作为简单的使用,大家进入官网,点击开始对话即可进行简单的聊天使用,点击获取手机app即可安装…...
[论文笔记] Deepseek-R1R1-zero技术报告阅读
启发: 1、SFT&RL的训练数据使用CoT输出的格式,先思考再回答,大大提升模型的数学与推理能力。 2、RL训练使用群体相对策略优化(GRPO),奖励模型是规则驱动,准确性奖励和格式化奖励。 1. 总体概述 背景与目标 报告聚焦于利用强化学习(RL)提升大型语言模型(LLMs)…...

VUE之组件通信(三)
1、$refs与$parent 1)概述: $refs用于:父——>子。$parent用于:子——>父。 2)原理如下: 属性说明$refs值为对象,包含所有被ref属性标识的DOM元素或组件实例。$parent值为对象&#x…...
【Redis实战】投票功能
1. 前言 现在就来实践一下如何使用 Redis 来解决实际问题,市面上很多网站都提供了投票功能,比如 Stack OverFlow 以及 Reddit 网站都提供了根据文章的发布时间以及投票数计算出一个评分,然后根据这个评分进行文章的展示顺序。本文就简单演示…...