当前位置: 首页 > article >正文

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

目录

序言

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.kler.cn/news/363444.html

相关文章:

  • c++实现跳表
  • docker harbor
  • 【哈工大_操作系统理论】L282930 生磁盘的使用从生磁盘到文件文件使用磁盘的实现
  • 算法五大排序(Java)
  • [手机Linux PostmarketOS]七, Linux使用selenium爬虫
  • Linux笔记之文件查找和搜索命令which,find,locate,whereis总结
  • JavaWeb合集03-Maven
  • 九盾叉车高位显示器:重塑叉车视界,引领高位精准
  • 关于bp抓不到本地包
  • 数据结构编程实践20讲(Python版)—19字典树
  • CompletableFuture详解、什么是CompletableFuture类,怎么在java并发编程、多线程中使用(结合案例,保姆级教程))
  • 后端技术:有哪些常见的应用场景?
  • docker 发布镜像
  • springboot汉妆养生会馆网站-计算机毕业设计源码96229
  • 基于K8S的StatefulSet部署mysql主从
  • QGIS之三十二DEM地形导出三维模型gltf
  • 《嵌入式系统设计工程师-中级(Linux)》认证证书含金量如何?怎么考?
  • JavaScript 第24章:React 基础
  • Javascript算法(滑块窗口、螺旋矩阵)
  • Chainlit集成LlamaIndex和Chromadb实现RAG增强生成对话AI应用
  • 孤岛架构在安全性方面
  • 提升独立站排名?GPB外链才是王
  • 点云标注工具开发记录(五)之点云文件加载、视角转换
  • maven本地打jar包依赖
  • Spring事务的七种传播行为
  • AI带货主播如何打造真实视觉效果!