【LLaMA-Facrory】【模型评估】:代码能力评估——Qwen-Coder-7B 和 deepseek-coder-7b-base-v1.5

news2024/10/24 20:19:08

目录

序言

1 拉取 Qwen2.5-Coder-7B 模型

2 编写python测试模型

3 启动webui导入模型测试

4 模型评估

4.1 前期准备工作

4.2 Qwen2.5-Coder-7B 模型评估

数据说明

综合分析

4.3 deepseek-coder-7b-base-v1.5 模型评估

数据说明

综合分析

4.4 模型比较

1. 文本生成质量

2. 模型准备时间

3. 运行时间

4. 处理效率

综合比较

结论


序言

autoDL的环境准备

【LLaMA-Factory】【autoDL】:大模型微调实践-CSDN博客

1 拉取 Qwen2.5-Coder-7B 模型

编写python代码

from huggingface_hub import snapshot_download
# huggingface地址:https://huggingface.co/
# 在这上面找到模型路径,修改即可
model_path = "Qwen/Qwen2.5-Coder-7B"
cache_dir = "/root/autodl-tmp/Qwen-Code"


snapshot_download(repo_id=model_path, local_dir=cache_dir, local_dir_use_symlinks=False)

学术加速

运行python代码,拉取模型

2 编写python测试模型

from transformers import AutoTokenizer, AutoModelForCausalLM  
import torch  
  
# 1. 加载 tokenizer 和模型  
model_name = "Qwen/Qwen2.5-Coder-7B"  
tokenizer = AutoTokenizer.from_pretrained(model_name)  
# 假设你的模型保存在本地路径 '/path/to/your/local/model'  
local_model_path = "/root/autodl-tmp/Qwen-Code"  
model = AutoModelForCausalLM.from_pretrained(local_model_path)  
  
# 2. 准备输入文本  
user_input = "使用C++编写一个快速排序"  
input_ids = tokenizer.encode(user_input, return_tensors="pt")  # 将输入编码为 token IDs  
  
# 3. 使用模型生成文本  
# 注意:可以设置生成参数如 max_length, num_return_sequences 等  
output = model.generate(input_ids, max_length=50, num_return_sequences=1)  
  
# 4. 解码生成的 token IDs 为可读文本  
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)  
  
# 5. 打印生成的文本  
print(generated_text)

运行结果

3 启动webui导入模型测试

启动 webui

python3 src/webui.py

导入模型

对话测试

4 模型评估

清理系统内存

https://www.autodl.com/docs/qa1/

4.1 前期准备工作

硬件:两块4090显卡

环境:使用 hiyouga/LLaMA-Factory/LLaMAFactoryV3 / v3 镜像

该镜像 PyTorch版本为2.4 CUDA版本为 12.1

数据集准备

https://huggingface.co/datasets/deepseek-ai/DeepSeek-Prover-V1

数据清洗

import json


input_file_path = 'test.jsonl'
output_file_path = 'Test.jsonl'


with open(input_file_path, 'r', encoding='utf-8') as infile, \
        open(output_file_path, 'w', encoding='utf-8') as outfile:
    for line in infile:
        data = json.loads(line.strip())
        processed_data = {
            "instruction": data.get("question"),
            "input": "",  
            "output": data.get("response"),  
            "system": data.get("system_prompt"),
            "history": []  
        }
        json.dump(processed_data, outfile, ensure_ascii=False)
        outfile.write('\n')  
print("处理完成,结果已保存到", output_file_path)

修改相应的dataset_info.json文件为测试做准备

使用webui查看数据格式:可以清晰地看到提示词为一个计算机算法题目(包含题目描述,输入输出样式,甚至算法性能要求),回答为描述加代码

使用LLaMA-Factory的模型测评功能

4.2 Qwen2.5-Coder-7B 模型评估

开始评估模型

由于时间太长,故减少数据集大小改为1000条

时间:40分钟 左右

结果:

数据说明

1. BLEU-4 分数

  • predict_bleu-4: 44.68601459999999
  • BLEU(Bilingual Evaluation Understudy)是一种用于评估机器翻译或文本生成的质量的方法,其值范围通常是 0 到 100。BLEU-4 指的是使用 4-gram 进行评估的分数。
  • 44.69 的分数表示模型生成的文本与参考文本有较好的重合度,通常认为 BLEU 分数在 40 以上是一个不错的结果。

2. 模型准备时间

  • predict_model_preparation_time: 0.0058
  • 这是模型准备预测所花费的时间(单位通常为秒),这个值非常小,说明模型加载或准备的效率很高。

3. ROUGE 分数

  • predict_rouge-1: 49.7882477
  • ROUGE(Recall-Oriented Understudy for Gisting Evaluation)是一种用于评估文本摘要和生成的指标,ROUGE-1 指的是 unigram 的重合度。
  • 49.79 的分数同样表明生成文本与参考文本的重合度较好。
  • predict_rouge-2: 26.957137900000003
  • ROUGE-2 表示以 bigram 进行评估的分数,26.96 的分数表明模型在生成短语上的表现较 ROUGE-1 要低,通常这意味着模型生成的文本虽然有一些单词重合,但在短语层面上表现不如在单个单词层面。
  • predict_rouge-l: 30.3741434
  • ROUGE-L 用于评估生成文本的最长公共子序列(LCS),30.37 的结果说明生成文本在结构上能够保持一定的连贯性,但仍有改进的空间。

4. 预测运行时间

  • predict_runtime: 3057.2057
  • 预测的总运行时间(单位通常为秒),3057.21 秒相当于大约 50 分钟。这可能意味着在当前的数据集扫描所有样本所需的时间。

5. 每秒样本数

  • predict_samples_per_second: 0.327
  • 这是每秒处理的样本数,0.327 表明处理效率相对较低,可能是因样本量大、模型复杂度高,或者硬件资源受限导致。

6. 每秒步骤数

  • predict_steps_per_second: 0.082
  • 每秒执行的步骤数,这个值也相对较低,0.082 步意味着在处理过程中,每秒只进行少量的模型步骤。

综合分析

总的来说,这组数据表明该模型在生成文本时具有较好的质量(通过 BLEU 和 ROUGE 分数反映出来),但在性能上存在一定的延迟(较高的运行时间和低的每秒样本处理率)。改进的方向可能包括优化模型的推理速度、并行化处理、或使用更高效的硬件资源。

4.3 deepseek-coder-7b-base-v1.5 模型评估

v2版本的因为测试时显存溢出,所以选择v1.5版本

过程与Qwen2.5-Coder-7B相似,故此只分析数据

数据说明

  1. BLEU-4 (predict_bleu-4):
  2. 值:42.67
  3. 含义:BLEU(Bilingual Evaluation Understudy)分数是用于评估机器翻译质量的指标,范围通常为0到100。BLEU-4考虑了4-gram的匹配情况,42.67的分数表明模型在生成的文本与参考文本之间的匹配程度相对较高,表明模型生成的文本质量较好。
  4. 模型准备时间 (predict_model_preparation_time):
  5. 值:0.0047秒
  6. 含义:这表示准备模型进行预测所需的时间非常短,只有4.7毫秒,表明模型加载或初始化过程效率较高。
  7. ROUGE-1 (predict_rouge-1):
  8. 值:46.45
  9. 含义:ROUGE(Recall-Oriented Understudy for Gisting Evaluation)是一种用于文本摘要的评估指标。ROUGE-1主要测量1-gram的重合度。46.45的得分表明生成的摘要与参考摘要之间有相对较高的相似性。
  10. ROUGE-2 (predict_rouge-2):
  11. 值:23.71
  12. 含义:ROUGE-2测量2-gram的重合度。23.71的得分相对较低,可能表明在更细致的语言匹配上(如短语和连贯性)模型的表现不如ROUGE-1。
  13. ROUGE-L (predict_rouge-l):
  14. 值:25.44
  15. 含义:ROUGE-L基于最长公共子序列(LCS)来评估生成文本的质量,25.44的分数表明模型生成的文本在结构和流畅性方面有一定的效果。
  16. 运行时间 (predict_runtime):
  17. 值:1503.1623秒
  18. 含义:这个值表示模型预测所花费的总时间约为1503秒,约25分钟。这可能表明模型在处理数据或生成结果时的效率需要改进。
  19. 每秒样本数 (predict_samples_per_second):
  20. 值:0.665
  21. 含义:该指标表示模型每秒处理的样本数量为0.665,说明模型的处理速度较慢,可能影响实际应用的效率。
  22. 每秒步骤数 (predict_steps_per_second):
  23. 值:0.083
  24. 含义:该指标表示模型每秒完成的处理步骤数量为0.083,表明模型在预测时的效率很低,可能需要优化算法或减少计算复杂度。

综合分析

  • 性能评估:
  • 整体来看,模型在语言生成(BLEU和ROUGE指标)上表现不错,特别是在BLEU-4和ROUGE-1上得分较高,表明生成的文本质量较高。
  • 然而,ROUGE-2的得分较低,说明在更复杂的文本结构和短语匹配上存在改进的空间。
  • 效率问题:
  • 虽然模型的准备时间非常短,但整体运行时间和每秒处理的样本数量相对较低,表明在实际应用中可能会面临性能瓶颈。
  • 为了提高模型的实用性,可能需要在模型架构或硬件上进行优化,增加处理速度。

4.4 模型比较

Qwencode模型

{

"predict_bleu-4": 44.68601459999999,

"predict_model_preparation_time": 0.0058,

"predict_rouge-1": 49.7882477,

"predict_rouge-2": 26.957137900000003,

"predict_rouge-l": 30.3741434,

"predict_runtime": 3057.2057,

"predict_samples_per_second": 0.327,

"predict_steps_per_second": 0.082

}

deepseekcode模型

{

"predict_bleu-4": 42.672933300000004,

"predict_model_preparation_time": 0.0047,

"predict_rouge-1": 46.4543909,

"predict_rouge-2": 23.707810300000002,

"predict_rouge-l": 25.441353300000003,

"predict_runtime": 1503.1623,

"predict_samples_per_second": 0.665,

"predict_steps_per_second": 0.083

}

deepseekcodeQwencode 模型的性能进行比较,主要从多个指标入手,包括文本生成质量和处理效率。以下是详细的比较分析:

1. 文本生成质量

  • BLEU-4 分数:
  • deepseekcode: 42.67
  • Qwencode: 44.69
  • 分析: Qwencode 的 BLEU-4 分数高于 deepseekcode,表明 Qwencode 在生成文本的匹配程度上表现更好,生成的文本与参考文本的相似度更高。
  • ROUGE-1 分数:
  • deepseekcode: 46.45
  • Qwencode: 49.79
  • 分析: Qwencode 的 ROUGE-1 分数也高于 deepseekcode,说明 Qwencode 在生成摘要时与参考摘要的重合度更高。
  • ROUGE-2 分数:
  • deepseekcode: 23.71
  • Qwencode: 26.96
  • 分析: Qwencode 在 ROUGE-2 上的得分显著高于 deepseekcode,表明 Qwencode 在短语匹配方面表现更优。
  • ROUGE-L 分数:
  • deepseekcode: 25.44
  • Qwencode: 30.37
  • 分析: Qwencode 的 ROUGE-L 得分高,表示其生成文本在结构和流畅性方面表现更佳。

2. 模型准备时间

  • 模型准备时间:
  • deepseekcode: 0.0047秒
  • Qwencode: 0.0058秒
  • 分析: deepseekcode 的准备时间略低于 Qwencode,表明 deepseekcode 在模型加载或初始化时效率略高。

3. 运行时间

  • 预测运行时间:
  • deepseekcode: 1503.16秒
  • Qwencode: 3057.21秒
  • 分析: deepseekcode 的运行时间显著低于 Qwencode,表明 deepseekcode 在处理数据时效率更高。

4. 处理效率

  • 每秒样本数:
  • deepseekcode: 0.665
  • Qwencode: 0.327
  • 分析: deepseekcode 每秒处理的样本数大约是 Qwencode 的两倍,显示了 deepseekcode 在处理速度上的优势。
  • 每秒步骤数:
  • deepseekcode: 0.083
  • Qwencode: 0.082
  • 分析: 两个模型的每秒步骤数相似,基本持平。

综合比较

  • 生成质量:
  • Qwencode 在 BLEU 和 ROUGE 指标上均高于 deepseekcode,表明 Qwencode 在文本生成质量方面表现更优。
  • 效率:
  • deepseekcode 在模型准备时间、预测运行时间以及每秒样本数方面表现更好,显示了其在处理速度和效率上的优势。

结论

  • 如果 生成文本的质量 是最重要的考量因素,Qwencode 是更优的选择,因为其 BLEU 和 ROUGE 分数更高。
  • 如果 处理效率响应时间 是优先考虑的因素,deepseekcode 是更佳选择,因为其在处理速度和模型准备上都表现得更快。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件安全测试报告如何编写?CMA、CNAS软件安全测试机构推荐

随着软件产品的增多,产品安全成为软件企业留住用户的方法之一。安全测试是验证和检查软件安全的重要手段,而软件安全测试报告则是测试人员工作成果的最好体现,那么软件安全测试报告该如何编写呢?权威的CMA、CNAS软件安全测试机构又有哪些? …

WeMapEngine开发实战,创建你的第一个GIS项目

我们在《WeMapEngine可快速构建的GIS应用功能》一文中为你分享了WeMapEngine可快速建的GIS应用功能。 今天再为你分享基于WeMapEngine的开发实战,演示如何快速创建第一个GIS项目。 创建你的第一个GIS项目 现在,我们开始构建第一个项目。 在这个项目中…

emulator -version报错解决方案

使用android studio安装安卓环境之后,会发现emulator -version报如下错 [14960]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ..\emulator\lib64\qt\lib Could not launch C:\Users\litbai\..\emulator\qemu\windows-x86_64\qe…

【Java小白图文教程】-04-循环结构

精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

深入理解计算机系统--计算机系统漫游

对于一段最基础代码的文件hello.c&#xff0c;解释程序的运行 #include <stdio.h>int main() {printf ( "Hello, world\n") ;return 0; }1.1、信息就是位上下文 源程序是由值 0 和 1 组成的位&#xff08;比特&#xff09;序列&#xff0c;8 个位被组织成一组…

springboot048校园资料分享平台(论文+源码)_kaic

校园资料分享平台 摘要 随着信息互联网购物的飞速发展&#xff0c;国内放开了自媒体的政策&#xff0c;一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求&#xff0c;创建了一个计算机管理校园…

无人机的电池放电详解!

一、定义与表示方法 无人机的电池放电率是指电池在一定时间内放出其储存电能的能力&#xff0c;这一参数通常用C数来表示。C数越大&#xff0c;表示放电速率越快。 例如&#xff0c;一个2C的电池可以在1/2小时内放完其全部电量&#xff0c;而一个10C的电池则可以在1/10小时内…

喜讯!望繁信科技荣膺2022年中国超自动化先锋企业TOP20

36氪重磅发布「2022中国超自动化先锋企业」调研结果。凭借多年在流程挖掘领域过硬的技术实力和突出的产品创新力&#xff0c;望繁信科技在众多调研样本企业中脱颖而出&#xff0c;赢得了专家评委的充分认可&#xff0c;成功入选2022年中国超自动化先锋企业TOP20。 什么是超自动…

【书生大模型实战营】闯关任务1-入关岛

这里写自定义目录标题 第一关 L0G1000 Linux 基础知识 第一关 L0G1000 Linux 基础知识 SSH连接与端口映射并运行hello_world.py 关键截图&#xff1a;

502 错误码通常出现在什么场景?

服务器过载场景 高流量访问&#xff1a;当网站遇到突发的高流量情况&#xff0c;如热门产品促销活动、新闻热点事件导致网站访问量激增时&#xff0c;服务器可能会因承受过多请求而无法及时响应。例如&#xff0c;电商平台在 “双十一” 等购物节期间&#xff0c;大量用户同时…

Windows解决localhost拒绝了连接请求

最近&#xff0c;在开发前端Vue项目时&#xff0c;Vue项目启动成功&#xff0c;没有任何报错&#xff0c;服务控制台已出现APP访问地址&#xff0c;如下图所示。 览器打开后页面先是空白&#xff0c;然后过了一会儿显示无法访问此网站&#xff0c;localhost拒绝了我们的连接请…

WPF MVVM模式实现DataGrid编辑

本文是一个MVVM模式开发的基础教程&#xff0c;完全手写实现&#xff0c;未借助三方框架&#xff0c;适用于初学者 要实现DataGrid的编辑&#xff0c;步骤如下&#xff1a; 1、创建两个窗口&#xff0c;第一个窗口用于显示DataGrid&#xff0c; 布局如下&#xff1a; 这个界…

Data+AI下的云数仓未来已来!

DataAI下的云数仓未来已来&#xff01; 前言云数仓是什么&#xff1f;云数仓的概念与背景数据孤岛问题与云数仓的优势 现代数仓如何建设&#xff1f;灵活架构与弹性扩展实时与离线处理并存安全与合规性&#xff1a;现代数仓的基石 AI如何助力数仓建设&#xff1f;AI驱动的数据处…

《探索 NESMA:软件度量领域的璀璨之星》

《探索 NESMA&#xff1a;软件度量领域的璀璨之星》 一、NESMA 初印象 NESMA&#xff08;Netherland Software Measurement Association&#xff09;&#xff0c;作为荷兰软件度量协会的简称&#xff0c;在软件规模度量领域占据着重要地位。它是五种 ISO 国际功能点标准之一&am…

C++学习路线(二十二)

构造函数 构造函数作用 在创建一个新的对象时&#xff0c;自动调用的函数&#xff0c;用来进行“初始化”工作:对这个对象内部的数据成员进行初始化。 构造函数特点 1.自动调用(在创建新对象时&#xff0c;自动调用) 2.构造函数的函数名&#xff0c;和类名相同 3.构造函数…

visual studio设置修改文件字符集方法

该方法来自网文&#xff0c;特此记录备忘。 添加两个组件&#xff0c;分别是Force UTF-8,FileEncoding。 截图如下&#xff1a; 方法如下&#xff1a;vs中点击“扩展”->“管理扩展”&#xff0c;输入utf搜索&#xff0c;安装如下两个插件&#xff0c;然后重启vs&#xf…

Cursor零基础小白教程系列 - 创建你的第一个Cursor 项目

最适合小白零基础的Cursor教程 网站lookai.top相同作者&#xff0c;最新文章会在网站更新&#xff0c;欢迎收藏书签 创建你的第一个Cursor 项目 实操视频 概述 开始使用Cursor进行编程的第一步是创建或导入一个项目。本指南将帮助您了解如何在Cursor中创建新项目、导入现有项…

GPB外链:独立站SEO提升的必备利器!

为什么GPB外链这么受欢迎&#xff1f;这主要是因为它能显著提升网站的权威性和可见性。每一条GPB外链都来自高权重的独立域名&#xff0c;并附有一篇与网站主题高度相关的原创文章。这样的外链&#xff0c;不仅对提升网站排名有帮助&#xff0c;还能为你带来更多的精准流量。 与…

Konva框选移动

效果&#xff0c;可以单独点击控制大小&#xff0c;也可框选控制 代码&#xff1a; <template><div class"rect"><div id"canvas"></div> <!-- 画布容器 --></div> </template><script setup lang"ts&…

【JVM】—G1 GC日志详解

G1 GC日志详解 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 文章目录 G1 GC日志详解1 G1 GC周期2 G1日…