朱莉娅语言产生能力的各种大型语言模型的比较
definition.toml解剖学欢迎来到Julia Code Generation Benchmark存储库!
该项目旨在为朱莉娅社区比较各种AI模型的代码生成功能。与学术基准不同,我们的重点是实用性和简单性:“生成代码,运行它,看看它是否有效(-ish)。”
该存储库旨在了解不同的AI模型和促使策略在生成句法正确正确的朱莉娅代码方面如何执行,以指导用户为其需求选择最佳模型。
痒的手指?跳到examples/或仅使用run_benchmark() (例如examples/code_gen_benchmark.jl )运行自己的基准标。
测试用例是在definition.toml中定义的。toml文件,为每个测试提供标准结构。如果您想贡献测试案例,请按照贡献您的测试案例部分中的说明进行操作。
根据几个标准评估每个模型和提示的性能:
目前,所有标准都平等地称重,每个测试案例最多可获得100点。如果代码通过所有条件,则获得100/100点。如果失败一个标准(例如,所有单位测试),则获得75/100点。如果它失败了两个标准(例如,它运行,但所有示例和单位测试都破坏了),则获得50分,依此类推。
为了瞥见存储库的功能,我们包括了前14个测试用例的示例结果。打开完整结果的文档,并对每个测试案例进行深入研究。
警告
随着我们发展支持功能并添加更多模型,这些分数可能会发生变化。
请记住,对于任何型号,基准测试都非常具有挑战性 - 一个额外的空间或括号,分数可能会变为0(=“无法解析”)!
Claude 3.5十四行诗是表现最高的模型。为了获得最佳价值的货币,请寻找Mistral Codestral,Claude 3 Haiku,最近发布的是GPT 4O Mini(比GPT3.5便宜60%!!!)。
| 模型 | 过去 | 分数 | 得分性病偏差 | 计数零分数 | 计数完整分数 | 费用为Cents |
|---|---|---|---|---|---|---|
| Claude-3-5-Sonnet-20240620 | 6.3 | 85.8 | 21.1 | 13 | 355 | 0.73 |
| Claude-3-Opus-20240229 | 20.3 | 83.2 | 19.6 | 2 | 329 | 3.9 |
| Claude-3-Sonnet-20240229 | 8.7 | 78.8 | 26.2 | 22 | 308 | 0.73 |
| GPT-4O-2024-08-06 | 4.6 | 76.6 | 27.9 | 26 | 310 | 0.0 |
| Codestral-2405 | 1.9 | 76.3 | 29.3 | 33 | 276 | 0.0 |
| GPT-4-Turbo-2024-04-09 | 10.8 | 75.3 | 29.6 | 38 | 290 | 1.38 |
| chatgpt-4o-latest | 4.8 | 75.0 | 27.9 | 25 | 263 | 0.0 |
| Claude-3-Haiku-20240307 | 4.0 | 74.9 | 27.2 | 9 | 261 | 0.05 |
| GPT-4-0125-Qureview | 30.3 | 74.4 | 30.3 | 39 | 284 | 1.29 |
| GPT-4-1106-preiview | 22.4 | 74.4 | 29.9 | 19 | 142 | 1.21 |
| GPT-4O-MINI-2024-07-18 | 5.1 | 74.0 | 29.4 | 32 | 276 | 0.03 |
| Mistral-Large-2407 | 11.3 | 73.6 | 29.5 | 15 | 137 | 0.49 |
| GPT-4O-2024-05-13 | 4.3 | 72.9 | 29.1 | 29 | 257 | 0.0 |
| DeepSeek-Coder | 13.0 | 71.6 | 32.6 | 39 | 115 | 0.01 |
| Mistral-Large-2402 | 8.5 | 71.6 | 27.2 | 13 | 223 | 0.0 |
| DeepSeek-Chat | 17.9 | 71.3 | 32.9 | 30 | 140 | 0.01 |
| Claude-2.1 | 10.1 | 67.9 | 30.8 | 47 | 229 | 0.8 |
| GPT-3.5-Turbo-0125 | 1.2 | 61.7 | 36.6 | 125 | 192 | 0.03 |
| Mistral-Medium | 18.1 | 60.8 | 33.2 | 22 | 90 | 0.41 |
| Mistral-small | 5.9 | 60.1 | 30.2 | 27 | 76 | 0.09 |
| Mistral-Small-2402 | 5.3 | 59.9 | 29.4 | 31 | 169 | 0.0 |
| GPT-3.5-Turbo-11106 | 2.1 | 58.4 | 39.2 | 82 | 97 | 0.04 |
| 微小的 | 4.6 | 46.9 | 32.0 | 75 | 42 | 0.02 |
| GPT-3.5-Turbo | 3.6 | 42.3 | 38.2 | 132 | 54 | 0.04 |
| Gemini-1.0-Pro-Latest | 4.2 | 34.8 | 27.4 | 181 | 25 | 0.0 |
注意:从2024年2月中旬开始,“ GPT-3.5-Turbo”将指向最新版本,“ GPT-3.5-Turbo-0125”(否定了6月份的版本)。
相同的信息,但作为条形图:

此外,我们可以考虑性能(得分)与成本(以美分为中衡量的成本):

当地托管的车型通常不如付费最高的API好,但是它们越来越接近!请注意,“ Mistral-Small”已经可以在本地运行,并且将来会有许多未来的登录!
笔记
非常感谢01.ai和Jun Tian,特别是为此基准的几个部分提供了计算!
最好的权衡表现与尺寸是最新的Meta Llama3 80亿。否则,领先的模型是Mixtral-8x22亿。
| 模型 | 过去 | 经过的中位数 | 分数 | 得分中位数 | 得分性病偏差 | 计数零分数 | 计数完整分数 |
|---|---|---|---|---|---|---|---|
| Mixtral-8x22b-instruct-v0.1(一起) | 14.1 | 11.0 | 77.6 | 90.0 | 25.8 | 5.0 | 151.0 |
| Llama-3-70B-Chat-HF(一起) | 4.3 | 4.1 | 76.8 | 88.3 | 25.2 | 0.0 | 160.0 |
| Llama-3-8B-Chat-HF(一起) | 1.5 | 1.4 | 67.7 | 66.7 | 26.4 | 5.0 | 70.0 |
| wizardlm-2-8x22b(一起) | 34.7 | 31.0 | 62.7 | 60.0 | 33.8 | 33.0 | 118.0 |
| Phind-Codellama:34B-V2 | 37.1 | 36.4 | 61.8 | 62.5 | 33.5 | 36.0 | 58.0 |
| MagicOder:7B-S-CL-Q6_K | 15.6 | 15.8 | 59.9 | 60.0 | 29.9 | 18.0 | 35.0 |
| Codellama:13B-Instruct-Q4_K_M | 3.2 | 3.0 | 56.4 | 54.6 | 33.0 | 56.0 | 61.0 |
| DeepSeek-coder:33b-instruct-q4_k_m | 46.7 | 44.6 | 55.0 | 50.0 | 36.8 | 62.0 | 68.0 |
| 魔术师 | 12.8 | 10.7 | 53.7 | 50.0 | 33.2 | 49.0 | 52.0 |
| nous-hermes2:34b-yi-q4_k_m | 56.8 | 52.8 | 50.7 | 50.0 | 34.7 | 78.0 | 56.0 |
| DBRX-Instruct(Fireworks.ai) | 3.7 | 3.6 | 50.0 | 50.0 | 41.2 | 121.0 | 75.0 |
| Codellama:13B教学 | 18.1 | 16.7 | 50.0 | 50.0 | 34.4 | 65.0 | 44.0 |
| OpenChat:7B-V3.5-1210-Q4_K_M | 14.4 | 13.7 | 49.4 | 50.0 | 30.3 | 48.0 | 23.0 |
| openhermes2.5-任性 | 12.9 | 12.2 | 48.9 | 50.0 | 31.3 | 55.0 | 27.0 |
| Starling-LM:最新 | 13.7 | 12.5 | 48.4 | 50.0 | 30.2 | 58.0 | 26.0 |
| codellama:7b-instruct-q4_k_m | 2.1 | 2.0 | 47.8 | 50.0 | 35.3 | 95.0 | 38.0 |
| QWEN-72B-CHAT(Fireworks.ai) | 3.2 | 3.8 | 45.9 | 50.0 | 38.8 | 117.0 | 63.0 |
| yi:34b-chat | 43.9 | 41.3 | 45.6 | 50.0 | 30.5 | 45.0 | 34.0 |
| MISTRAL:7b-Instruct-V0.2-Q6_K | 21.7 | 20.9 | 45.4 | 50.0 | 31.3 | 44.0 | 23.0 |
| Mistral:7b-Instruct-V0.2-Q4_0 | 12.4 | 12.3 | 44.3 | 50.0 | 30.6 | 75.0 | 32.0 |
| MISTRAL:7b-Instruct-V0.2-Q4_K_M | 15.6 | 15.1 | 42.6 | 50.0 | 28.6 | 71.0 | 23.0 |
| codellama:34b-instruct-q4_k_m | 7.5 | 6.8 | 39.7 | 50.0 | 36.1 | 127.0 | 35.0 |
| Codellama:70B-Instruct-Q4_K_M | 16.3 | 13.8 | 36.4 | 0.0 | 41.2 | 179.0 | 58.0 |
| 太阳能:10.7b-instruct-v1-q4_k_m | 18.8 | 17.7 | 35.2 | 50.0 | 31.1 | 107.0 | 10.0 |
| MISTRAL:7b-Instruct-Q4_K_M | 13.9 | 13.0 | 34.8 | 50.0 | 26.5 | 80.0 | 0.0 |
| Codellama:70B-Instruct-Q2_K | 11.2 | 9.4 | 29.8 | 0.0 | 37.7 | 198.0 | 29.0 |
| Llama2 | 17.1 | 16.3 | 26.5 | 25.0 | 26.5 | 131.0 | 0.0 |
| Gemma:7b-instruct-Q6_K | 20.9 | 22.1 | 25.9 | 25.0 | 25.2 | 147.0 | 2.0 |
| orca2:13b | 20.1 | 18.3 | 23.1 | 0.0 | 30.6 | 166.0 | 11.0 |
| Stablelm-Zephyr | 9.9 | 7.7 | 15.4 | 0.0 | 23.5 | 192.0 | 1.0 |
| Dolphin-Phi:2.7b-V2.6-Q6_K | 8.9 | 8.4 | 14.9 | 0.0 | 22.9 | 188.0 | 0.0 |
| Codellama:13b-python | 12.5 | 10.7 | 12.8 | 0.0 | 22.1 | 155.0 | 0.0 |
| phi:2.7b-chat-v2-q6_k | 13.0 | 11.6 | 8.9 | 0.0 | 19.4 | 222.0 | 0.0 |
相同的信息,但作为条形图:

每个提示模板都有一个单独的栏: 
笔记
QWEN-1.5模型已从概述中删除,因为Ollama存储库(和HF)上的基础模型不正确,并且性能非常低。
笔记
我已经注意到,现在Ollama/Llama.cpp中的某些EVALS现在得分略高于12月23日,因此在路线图上重新运行上述EVALS的路线图。
显然,付费的API获胜(最新版本:GPT-3.5-Turbo-11106),但这不是全部。


我们希望能够围绕提示策略提供一些指导,例如,最好使用“ Juliaexpert*”提示模板与“ Julia中的“ juliaexpert”,请回答XYZ”提示。
到目前为止的学习:
| 提示模板 | 经过(s,平均) | 经过(S,中值) | avg。得分(最大100分) | 中值得分(最大100分) |
|---|---|---|---|---|
| Indulia | 14.0 | 9.6 | 55.2 | 50.0 |
| JuliaExpertask | 9.9 | 6.4 | 53.8 | 50.0 |
| JuliareCaptask | 16.7 | 11.5 | 52.0 | 50.0 |
| JuliaexpertCottask | 15.4 | 10.4 | 49.5 | 50.0 |
| Juliarecapcottask | 16.1 | 11.3 | 48.6 | 50.0 |
注意:基于XML的模板仅针对Claude 3模型(Haiku and Sonnet)测试,这就是为什么我们将其从比较中删除。
用examples/summarize_results.jl进行自己的分析!
scripts/code_gen_benchmark.jl以前的评估示例。想运行一些实验并保存结果吗?查看examples/experiment_hyperparameter_scan.jl !
是否想查看过去的一些基准运行?查看examples/summarize_results.jl有关整体统计信息和examples/debugging_results.jl以查看单个对话/模型响应。
贡献测试案例:
code_generation/category/test_case_name/definition.toml 。code_generation/category/test case/model/evaluation__PROMPT__STRATEGY__TIMESTAMP.json和code_generation/category/test case/model/conversation__PROMPT__STRATEGY__TIMESTAMP.jsondefinition.toml解剖学definition.toml中的必需字段。toml包括:
my_function(1, 2) )作为可执行语句的向量提供。@test X = Z语句的向量提供的代码。有几个可选字段:
以上字段可以改善示例/单元测试中代码的重复使用。
请参阅examples/create_definition.jl中的示例。您可以使用validate_definition()验证测试案例定义。
请pr,并在文件夹julia_conversations/中添加与/in/of Aof Julia的任何相关且主要是正确的对话。
目的是进行一系列对话集合,这些对话可用于较小模型中的朱莉娅知识。
我们高度重视社区的投入。如果您有改进的建议或想法,请打开问题。欢迎所有贡献!