編程AI深度實戰:大模型哪個好? Mistral vs Qwen vs Deepseek vs Llama

??

系列文章:

編程AI深度實戰:私有模型deep seek r1,必會ollama-CSDN博客

編程AI深度實戰:自己的AI,必會LangChain-CSDN博客

編程AI深度實戰:給vim裝上AI-CSDN博客

編程AI深度實戰:火的編程AI,都在用語法樹(AST)-CSDN博客

編程AI深度實戰:讓verilog不再是 AI 的小眾語言-CSDN博客

?

隨著開源 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 領域無異于令人振奮。

?

還有哪些開源模型?

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.pswp.cn/news/894663.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894663.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894663.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

neo4j-community-5.26.0 install in window10

在住處電腦重新配置一下neo4j, 1.先至官方下載 Neo4j Desktop Download | Free Graph Database Download Neo4j Deployment Center - Graph Database & Analytics 2.配置java jdk jdk 21 官網下載 Java Downloads | Oracle 中國 path: 4.查看java -version 版本 5.n…

【怎么用系列】短視頻戒除—1—對推薦算法進行干擾

如今推薦算法已經滲透到人們生活的方方面面,尤其是抖音等短視頻核心就是推薦算法。 【短視頻的危害】 1> 會讓人變笨,慢慢讓人喪失注意力與專注力 2> 讓人喪失閱讀長文的能力 3> 讓人沉浸在一個又一個快感與嗨點當中。當我們刷短視頻時&#x…

網絡原理(5)—— 數據鏈路層詳解

目錄 一. 以太網 1.1 認識以太網 1.2 網卡與以太網 1.3 以太網幀格式 二. 認識MAC地址 三. MAC地址 與 IP地址 的區別 4.1 定義 4.2 分配方式 4.3 工作層次 4.4 地址格式 4.5 尋址方式 四. ARP協議 4.1 引入 4.2 ARP的概念 4.3 ARP工作原理 五. MTU 與 MSS …

【從零開始的LeetCode-算法】922. 按奇偶排序數組 II

給定一個非負整數數組 nums, nums 中一半整數是 奇數 ,一半整數是 偶數 。 對數組進行排序,以便當 nums[i] 為奇數時,i 也是 奇數 ;當 nums[i] 為偶數時, i 也是 偶數 。 你可以返回 任何滿足上述條件的…

設計一個特殊token以從1億詞表中動態采樣8192個詞來表達當前序列

為了設計一個特殊token以從1億詞表中動態采樣8192個詞來表達當前序列,可以采用以下分步方案: 1. 特殊token的設計與作用 定義特殊token:在輸入序列前添加一個特殊標記,如[SUBVOCAB]。該token的嵌入包含觸發子詞表采樣的元信息。…

兩晉南北朝 僑置州郡由來

僑置的核心思想是面向人管理 而不是面向土地 1. 北雍州 西晉于長安置雍州,永嘉之亂,沒于劉、石。苻秦之亂,雍州流民南出樊沔,孝武于襄陽僑立雍州。此時稱長安為北雍州。

H264原始碼流格式分析

1.H264碼流結構組成 H.264裸碼流(Raw Bitstream)數據主要由一系列的NALU(網絡抽象層單元)組成。每個NALU包含一個NAL頭和一個RBSP(原始字節序列載荷)。 1.1 H.264碼流層次 H.264碼流的結構可以分為兩個層…

【C語言設計模式學習筆記1】面向接口編程/簡單工廠模式/多態

面向接口編程可以提供更高級的抽象,實現的時候,外部不需要知道內部的具體實現,最簡單的是使用簡單工廠模式來進行實現,比如一個Sensor具有多種表示形式,這時候可以在給Sensor結構體添加一個enum類型的type,…

AI大模型(二)基于Deepseek搭建本地可視化交互UI

AI大模型(二)基于Deepseek搭建本地可視化交互UI DeepSeek開源大模型在榜單上以黑馬之姿橫掃多項評測,其社區熱度指數暴漲、一躍成為近期內影響力最高的話題,這個來自中國團隊的模型向世界證明:讓每個普通人都能擁有媲…

C++基礎系列【2】C++基本語法

本文作為入門文檔&#xff0c;簡要介紹C的非常基本的語法&#xff0c;后面章節會詳細介紹C的各個語法。 C 程序結構 C程序的基本結構包括頭文件、命名空間、類和函數等。 下面我們通過Hello&#xff0c;World來展示這些元素。 #include <iostream> // 包含標準輸入輸…

【C語言】球球大作戰游戲

目錄 1. 前期準備 2. 玩家操作 3. 生成地圖 4. 敵人移動 5. 吃掉小球 6. 完整代碼 1. 前期準備 游戲設定:小球的位置、小球的半徑、以及小球的顏色 這里我們可以用一個結構體數組來存放這些要素,以方便初始化小球的信息。 struct Ball {int x;int y;float r;DWORD c…

圖的基本術語——非八股文

我之前只看到了數據結構與算法的冰山一角&#xff0c;感覺這些術語只會讓知識越來越難理解&#xff0c;現在來看&#xff0c;他們完美抽象一些概念和知識&#xff0c;非常重要。 本篇概念肯定總結不全&#xff0c;只有遇到的會寫上&#xff0c;持續更新&#xff0c;之前文章已經…

oracle: 表分區>>范圍分區,列表分區,散列分區/哈希分區,間隔分區,參考分區,組合分區,子分區/復合分區/組合分區

分區表 是將一個邏輯上的大表按照特定的規則劃分為多個物理上的子表&#xff0c;這些子表稱為分區。 分區可以基于不同的維度&#xff0c;如時間、數值范圍、字符串值等&#xff0c;將數據分散存儲在不同的分區 中&#xff0c;以提高數據管理的效率和查詢性能&#xff0c;同時…

【單層神經網絡】基于MXNet的線性回歸實現(底層實現)

寫在前面 剛開始先從普通的尋優算法開始&#xff0c;熟悉一下學習訓練過程下面將使用梯度下降法尋優&#xff0c;但這大概只能是局部最優&#xff0c;它并不是一個十分優秀的尋優算法 整體流程 生成訓練數據集&#xff08;實際工程中&#xff0c;需要從實際對象身上采集數據…

本地快速部署DeepSeek-R1模型——2025新年賀歲

一晃年初六了&#xff0c;春節長假余額馬上歸零了。今天下午在我的電腦上成功部署了DeepSeek-R1模型&#xff0c;抽個時間和大家簡單分享一下過程&#xff1a; 概述 DeepSeek模型 是一家由中國知名量化私募巨頭幻方量化創立的人工智能公司&#xff0c;致力于開發高效、高性能…

C++11詳解(一) -- 列表初始化,右值引用和移動語義

文章目錄 1.列表初始化1.1 C98傳統的{}1.2 C11中的{}1.3 C11中的std::initializer_list 2.右值引用和移動語義2.1左值和右值2.2左值引用和右值引用2.3 引用延長生命周期2.4左值和右值的參數匹配問題2.5右值引用和移動語義的使用場景2.5.1左值引用主要使用場景2.5.2移動構造和移…

在K8S中,pending狀態一般由什么原因導致的?

在Kubernetes中&#xff0c;資源或Pod處于Pending狀態可能有多種原因引起。以下是一些常見的原因和詳細解釋&#xff1a; 資源不足 概述&#xff1a;當集群中的資源不足以滿足Pod或服務的需求時&#xff0c;它們可能會被至于Pending狀態。這通常涉及到CPU、內存、存儲或其他資…

手寫MVVM框架-構建虛擬dom樹

MVVM的核心之一就是虛擬dom樹&#xff0c;我們這一章節就先構建一個虛擬dom樹 首先我們需要創建一個VNode的類 // 當前類的位置是src/vnode/index.js export default class VNode{constructor(tag, // 標簽名稱&#xff08;英文大寫&#xff09;ele, // 對應真實節點children,…

linux內核源代碼中__init的作用?

在 Linux 內核源代碼中&#xff0c;__init是一個特殊的宏&#xff0c;用于標記在內核初始化階段使用的變量或函數。這個宏的作用是告訴內核編譯器和鏈接器&#xff0c;被標記的變量或函數只在內核的初始化階段使用&#xff0c;在系統啟動完成后就不再需要了。因此&#xff0c;這…

【大數據技術】教程03:本機PyCharm遠程連接虛擬機Python

本機PyCharm遠程連接虛擬機Python 注意:本文需要使用PyCharm專業版。 pycharm-professional-2024.1.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso寫在前面 本文主要介紹如何使用本地PyCharm遠程連接虛擬機,運行Python腳本,提高編程效率。 注意: …