从 CodeGemma 到 CodeQwen1.5:开源编程大模型百家争鸣

2024-04-18 20:44

本文主要是介绍从 CodeGemma 到 CodeQwen1.5:开源编程大模型百家争鸣,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

笔者最近刚刚试用完 CodeGemma ,准备分享我的心得时,通义千问的 CodeQwen1.5 就也悄然发布。本文主要介绍 CodeQwen1.5 这款开源编程大模型,并展示如何在 VSCode 中使用它帮你提升编程体验。

1. 开源编程大模型的必要性

大型语言模型(LLMs)在各行各业扰动风云的今天,在编程领域也是首当其冲,掀起了一场变革,为开发者带来了显著的效率和准确性提升。然而,像 Github Copilot 这样的基于专有 LLMs 的流行编码助手,却因其成本、隐私、安全和潜在的版权侵权问题而备受诟病。因为除了参与的开源项目外,我们也总会有很多私有和需要保密的商业项目需要处理,这就使得将代码库完全暴露给第三方服务变得颇为敏感。

这些担忧催生了开源社区的积极响应,促进了对更加透明、更易于访问的替代方案的开发,并已经取得了显著成果。具体来说,如 Codegemma、StarCoder2、CodeLlama 和DeepSeek-Coder 等开源模型的出现标志着这一领域的重大进步。也让普通的开发人员可以更加自由地选择适合自己的工具,而不必受限于专有模型的局限。

2. 开源编程大模型的优势

  • 透明度: 开源模型的代码和开发过程公开透明,允许任何人审查和改进模型,确保其安全性和可靠性。这与专有模型的封闭性质形成鲜明对比,后者可能会隐藏潜在的缺陷或安全漏洞。
  • 可访问性: 开源模型通常是免费提供的,降低了门槛,使来自世界各地的人,无论经济状况或背景如何,都能使用和贡献。这对于促进全球范围内的技术进步和创新至关重要。
  • 协作: 开源模型鼓励协作和共同开发,汇聚来自不同背景和专业知识的贡献者,共同完善模型。这种集体智慧可以推动更快速、更有效的创新,并最终带来更强大的模型。
  • 道德规范: 开源社区致力于开发负责任和符合道德规范的 AI 技术。开源模型可以更容易地进行审查和修改,以确保它们符合道德准则,并避免偏见或歧视。
  • 灵活性: 开源模型可以根据特定需求进行定制和调整,使其适用于各种应用场景。通过加入自己或自己组织的专有代码库进行训练微调,可以使其更适应自己的编码风格。

开源编程大模型为编程工具的未来开辟了令人兴奋的可能性。通过透明、协作和创新的精神,我们可以共同构建更强大、更有用且更具道德责任感的编程工具,造福所有人,而不仅仅是开发人员,也包括不会编程的人。相信未来,越来越多的普通人会通过编程大模型让他们的创意和想法变为现实。

3. CodeQwen1.5 的特点

请添加图片描述

CodeQwen1.5 是通义千问的开源编程大模型,它具有以下几个特点:

  • 强大的代码生成能力: 能够生成自然、准确且符合语法规范的代码。
  • 优秀的长序列建模能力: 可以处理长达 64K 的上下文输入,在处理复杂代码时表现出色。
  • 出色的代码修改能力: 可以根据需求对现有代码进行修改或优化。
  • 强大的 SQL 能力: 可以生成 SQL 语句,并对数据库进行查询和操作。
  • 支持多种编程语言: 支持 92 种编程语言,覆盖了主流的编程语言。
  • 高效的参数规模: 拥有 7B 参数,在保证性能的同时,模型大小也相对适中。

Qwen 语言模型是一个经过中文良好训练的大型语言模型,这为 CodeQwen1.5 提供了良好的基础。GQA 架构是一种先进的模型架构,可以提高模型的性能和效率。同时,CodeQwen1.5 是在 ~3T tokens 的代码相关数据上进行预训练的,这使得它能够更好地理解和处理代码。支持 92 种编程语言,具有很强的通用性。

基于以上的特点和优势,CodeQwen1.5 在编程辅助工具中具有广泛的应用前景,可以帮助开发人员提高编程效率,减少编码错误,加速项目开发进程。

  • 自动代码生成: 可以根据需求自动生成代码,帮助开发人员节省时间和精力。
  • 代码优化: 可以对现有代码进行优化,提高代码的可读性和可维护性。
  • 代码测试: 可以自动生成测试用例,帮助开发人员发现代码中的缺陷。
  • 代码文档生成: 可以自动生成代码文档,帮助开发人员了解代码的结构和功能。

4. 模型获取和部署

CodeQwen1.5 是一个开源模型,可以通过 GitHub 获取源代码,并获取相关资料和介绍:https://github.com/QwenLM/CodeQwen1.5?wt.mc_id=DT-MVP-5005195。

对于模型文件,可以非常方便的通过抱抱脸(Hugging Face)和魔搭(ModelScope) 获取。同时,CodeQwen1.5 也提供了 Guff 和 AWQ 格式的量化版本,可以方便的使用不同的方式部署使用。

对于普通用户,低成本,简单易操作的方式我推荐使用 Ollama 提供的 Windows 客户端,自带 Cuda 环境,可以直接使用 GPU 进行推理,提供了非常好的使用体验,只需要下载安装即可:https://ollama.com/。

请添加图片描述

在运行 Ollama 程序后,需要我们打开控制台自行拉取模型文件运行,即可开始使用 CodeQwen1.5 进行编程辅助。

模型有两类,一类是 code 用于代码补全,一类是 chat 用于对话生成。在使用时,我们可以根据自己的需求选择不同的模型进行使用。

ollama pull codeqwen:chat
ollama pull codeqwen:code

请添加图片描述

我们可以使用上面的命令拉取这两种模型文件,当然你也可以前往 Ollama 的 CodeQwen 模型库,寻找不同量化精度的版本,这样可以根据自己的需求选择合适的模型文件,当然模型的文件大小和推理速度也会有所不同。

模型拉取完成后,我们可以使用下面的命令来运行模型,当然也可以直接使用下面的命令,会自动完成模型拉取和运行。关于 Olamma 的更多的使用方法,大家可以自行搜索学习,相关文章非常多,这里不做过多的介绍。

ollama run codeqwen:chat

运行后我们就可以在控制台中与大模型进行交流了,CodeQwen1.5 除了代码生成,技术文档的生成也是非常的出色。

请添加图片描述

5. 在 VSCode 中使用

对于开发人员来说,最便捷的使用当然是集成到 IDE 中。最常用的 IDE 莫过于 VSCode 了,那么如何在 VSCode 中使用 CodeQwen1.5 呢?这里笔者推荐使用 Twinny 插件,这是一个非常好用的插件,可以帮助我们在 VSCode 中使用 CodeQwen1.5 进行编程辅助。

请添加图片描述

作为一个开源项目,Twinny 插件提供了丰富的功能,包括代码补全、代码生成、代码优化、代码测试、代码文档生成等。通过简单的配置,我们就可以在 VSCode 中使用 CodeQwen1.5,提高编程效率,减少编码错误,加速项目开发进程。

最重要的一点是,该插件支持多种模型的部署提供方案,并且允许我们自行修改提示词,以优化我们在不同模型中的使用表现。这为我们提供了更多的选择和灵活性,使我们能够更好地适应不同的编程场景。

5.1 插件配置

插件默认使用的 Codegemma ,我们需要通过以下操作修改配置。在侧边的对话功能页,点击类似插头的配置图标:

请添加图片描述

之后我们会看到两个默认的配置,一个用于 Chat 对话,一个用于 FIM 补全,我们需要逐个将其修改为刚刚拉取的 CodeQwen 模型即可。

请添加图片描述

需要注意的是,FIM 模型的配置时,CodeQwen 的 Fim Template 需要设置为 stable-code。其使用的格式准则涉及使用三个专用标记,表示代码结构的相应段:<fim_prefix><fim_suffix><fim_middle>

请添加图片描述

5.2 使用示例

配置完成后,我们即可以开始使用 CodeQwen1.5 进行编程辅助。在编辑器中输入代码时,插件会自动弹出提示,只需要编写注释即可自动生成代码,非常方便。当然,我们也可以通过对话的方式与大模型进行交流,获取更多的帮助和建议。

请添加图片描述

5.2 高级功能

此外,CodeQwen1.5 还提供了一些当前 Twinny 插件尚未支持的能力,比如:存储库级代码完成。这个功能可以通过推理输入工作区的整个文件,帮助大模型更好地理解和处理代码。这对于处理复杂的代码文件和项目非常有用,可以帮助我们更快地找到问题和解决方案。

这个功能通过特殊的标记,可以输入多个代码文件:

<reponame>{repo_name}
<file_sep>{file_path1} 
{file_content1}
<file_sep>{file_path2} 
{file_content2}

这个功能类似于 Github Copilot 的 @workspace 指令,在官方的存储我们可以看到代码示例。

6. 总结

你的私人编码副驾驶已准备就绪,CodeQwen1.5 为你提供了一个强大的编程助手,它将成为你开发之旅中不可或缺的伙伴。如果你因为种种原因而无法使用 Github Copilot,那么 CodeQwen1.5 将是你的最佳选择。它的开源、透明、可访问、协作、道德规范、灵活性等优势,将为你的编程工作带来更多的便利和效率。

这篇关于从 CodeGemma 到 CodeQwen1.5:开源编程大模型百家争鸣的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915801

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}