近日,CodeGeeX模型迭代v1.5版本上线,用户反馈模型效果和使用效率较之前有大幅提升。

恰逢CodeGeeX团队在arxiv上发布了论文,详细介绍了CodeGeeX AI编程辅助工具背后的代码生成大模型的架构、训练过程及推理加速等工作。

今天我们对这篇论文的核心信息进行解读,让更多的开发者了解CodeGeeX背后大模型的演进历程,以便更好的使用CodeGeeX作为开发者新一代的生产力工具。
基于Transformer的技术展现代码生成潜力
机器是否能够根据人类意图的描述,例如“编写一个阶乘函数”,自动生成解决该需求的可执行程序?这就是自动程序编写的问题,自20世纪60年代计算机科学的早期就开始了各种探索。
从「LISP-based pioneering deductive synthesis approaches」到「Modern Program Synthesis Systems」,再到通过深度神经网络进行探索,为了使机器能够自动编写正确的程序,研究者们一直在寻找正确的方向。
直到2020年,基于Transformer的技术开始展现出自动生成代码的潜力,这些生成的代码既有语法正确性又具有上下文的一致性。紧接着,大规模语言模型,遇到了大规模开源代码数据,代码生成的进展再次得到了显著的推动。
在这当中,非常值得我们注意的是:OpenAI的Codex模型,具有120亿(12B)参数。在2021年,首次展示出了在数十亿行公共代码上进行预训练后,大型代码生成模型的潜力。通过使用生成式预训练(GPT)策略,Codex以很高的概率解决Python入门级编程问题。此后,大型预训练的代码模型,得到了广泛发展。
CodeGeeX模型的3个重要特点
本文的主人公:CodeGeeX模型,是一个具有130亿参数的多编程语言代码生成预训练模型,完全使用国产平台和框架实现,在20多种编程语言的代码语料库历时两个月训练而成。
CodeGeeX对代码自动生成的研究,在大语言模型正确的方向下,又与Codex有所不同,具备自己的特点:

首先,CodeGeeX本身以及如何预训练这种规模的代码模型都是开源的,这有助于理解和推进预训练代码生成模型的发展。CodeGeeX还支持在Ascend和NVIDIA GPU上进行跨平台推理。

其次,除了像Codex和其他工具一样支持代码生成和代码补全之外,CodeGeeX还支持代码解释和多语言之间的代码翻译任务。
第三,它在类似规模的知名多语言代码生成模型中,具有一致的性能优势,这些知名模型包括 CodeGen-16B, GPT-NeoX-20B, InCode-6.7B, and GPT-J-6B 等。

CodeGeeX还在多个IDE中构建了免费的CodeGeeX插件,包括Visual Studio Code、JetBrains IDEs和Tencent Cloud Studio(Web IDE)。
它支持几种不同的模式——代码自动补全、函数级别生成、代码翻译、代码解释和可自定义提示,以帮助用户实时完成编程任务。

发布以来,每天都有数万名活跃用户,每个用户平均每个工作日发起250多个API调用。截至本文撰写时,CodeGeeX模型每周生成47亿个token。我们的用户调研表明,83.4%的用户认为CodeGeeX提高了他们的编程效率。

CodeGeeX获得HumanEval-X的充分验证
除了CodeGeeX模型外,团队还构建了多编程语言代码生成评价基准HumanEval-X。HumanEval-X是第一个支持功能正确性评测的多语言、多任务的基准,包含820个人工编写的高质量代码生成题目、测试用例与参考答案,覆盖5种编程语言(Python、C++、Java、JavaScript、Go),支持代码生成与代码翻译能力的评测。CodeGeeX模型的能力在HumanEval-X得到充分验证。

论文全文见:https://arxiv.org/abs/2303.17568
点击阅读原文,了解并试用基于CodeGeeX大模型的AI编程辅助工具(VS Code插件,JetBrains IDEs插件):https://codegeex.cn
本文由博客一文多发平台 OpenWrite 发布!
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
我有一个Controller,我想为这个Controller创建一个助手,我可以在不包含它的情况下使用它。我尝试像这样创建一个与Controller同名的助手classCars::EnginesController我创建的助手是moduleCars::EnginesHelperdefcheck_fuellogger.debug("chekingfuel")endend我得到的错误是undefinedlocalvariableormethod`check_fuel'for#有没有我遗漏的约定? 最佳答案 如果你真的想在Controll
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
我正在尝试上传文件。一个简单的hello.txt。我正在关注文档,但无法将其上传到我的存储桶。#STARTAWSCLIENTs3=Aws::S3::Resource.newbucket=s3.bucket(BUCKET_NAME)begins3.buckets[BUCKET_NAME].objects[KEY].write(:file=>FILE_NAME)puts"Uploadingfile#{FILE_NAME}tobucket#{BUCKET_NAME}."bucket.objects.eachdo|obj|puts"#{obj.key}=>#{obj.etag}"endresc
我有一个Highstock图表(带有标记和阴影的线条),并且想以编程方式显示一个highstock工具提示,例如,当我选择某个表上的一行(包含图表数据)我想显示相应的highstock工具提示。这可能吗? 最佳答案 股票图表thissolution不起作用:在thisexample你必须更换这个:chart.tooltip.refresh(chart.series[0].data[i]);为此:chart.tooltip.refresh([chart.series[0].points[i]]);解决方案可用here.
我正在学习Rails,我注意到Rails不断地使用诸如link_to之类的辅助方法,而不是仅仅使用普通的html。现在我可以理解为什么他们会使用他们会使用一些辅助方法,但我不明白为什么他们更喜欢辅助方法而不是直接编码html。为什么Rails更喜欢辅助方法而不是您必须手动编写html?为什么Rails团队做出这样的设计选择? 最佳答案 在Rails应用程序中,通常使用URL方法和内容方法生成链接,例如这绝对比将它们放入中更易于管理手动标记。">(您正在使用路由器生成这些URL,对吗?如果您硬编码/users/1并决定稍后将其设为/u
一、机器人介绍 此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接