Skip to content

Azure OpenAI 官方指南04|Codex的模型结构和应用场景

Azure OpenAI 官方指南04|Codex的模型结构和应用场景

Codex是OpenAI公司推出的GPT-3(Generative Pre-trained Transformer–3)的多个派生模型之一。它是基于GPT语言模型,使用代码数据进行Fine-Tune(微调)而训练出的专门用于代码生成/文档生成的模型。Codex模型参数从12M到12B不等,是目前最强的编程语言预训练模型。Codex能够帮助程序员根据函数名和注释自动补全代码、直接生成代码、自动补充测试样例,并支持多种编程语言。本期Azure OpenAI官方指南将详解Codex的模型结构如何帮助程序员实现自动代码生成。

Codex的模型结构╱01

Azure Codex模型家族简介╱02

Codex的应用场景示例╱03

01

Codex的模型结构

OpenAI CTO兼联合创始人Greg Brockman表示,“Codex将是一款能够施展程序员力量的重要工具”。Codex项目负责人Wojciech Zaremba则将Codex视为编码历史演变的下一阶段。那么,Codex是如何颠覆编码的?

编程主要分为两个阶段,第一个阶段是认真思考问题并尝试理解,第二个阶段是把这些小片段与现有代码映射起来,包括库、函数以及API。通过自然语言模型结构与代码数据集训练,在第二个阶段,Codex模型的优势显露无疑。“Codex的出现,让专业程序员们告别了不少令人头痛的苦差事。”

模型结构 在GPT模型上加入额外token

Codex的模型结构和GPT完全一样,为了尽可能地利用GPT的文本表示,Codex使用了和GPT-3一样的分词器。但因为代码中词的分布和自然语言中词的分布有很大区别,GPT-3的分词器在表示代码时可能不是非常有效。Codex论文显示在GPT-3的分词器中加入了额外的一些token来表示不同长度的空格,这样在表示代码时可以少使用30%的token。

推理时,使用核采样不断采样Codex生成的token,直到碰见以下字符中的任何一个:”nclass”,”ndef”,”n#”,”nif”,’nprint’。这样可以大大减小模型第一和最后一层的参数量。实验证明Codex可以通过增加模型规模持续精进。如下图所示:

数据集 用于微调与评测

·Fine-Tuning数据集

首先是用来做Fine-Tuning的code数据集。在2020年5月,Codex从Github的54,000,000个公开代码仓上收集了数据,包括179 GB大小在1 MB以下的独一无二的python文件,在经过过滤后,最终的数据集大小为159GB。

·评测数据集

Codex将生成代码的功能正确性作为评测指标,关注从docstrings生成python函数的任务,并通过unit tests的方法来评测生成代码的正确性。评测指标采用的是pass k。评测数据集包含HumanEval和APPS两个数据集。

HumanEval构建了一个包括164个人工手写的编程问题的数据集,其中每个编程问题包括函数头、docstrings、函数体和几个unit tests。HumanEval中的编程问题可以用来评估语言理解能力、推理能力、算法能力和简单的数学能力,该数据集已经开源。人工手写是非常重要的:因为如果直接从网上找,比如说从leetcode上去扒,很有可能导致数据穿越。

Codex、GPT-Neo、GPT-J和TabNine在HumanEval上的实验结果对比如下图所示,可以发现Codex-300M的效果优于GPT-J 6B。

02 Azure Codex模型家族

Codex擅长Python,精通十多种语言,包括c#、JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL和Shell。Codex的模型包含:code-davinci-002、code-cushman-001(按能力大小排列)。

·Davinci

与GPT-3类似,Davinci是最强大的Codex模型,可以执行其他模型能够执行的任何任务,而需要更少的指令。对于需要深入理解内容的应用程序,Davinci可以产生最好的结果。更强大的功能需要更多的计算资源,因此Davinci的成本更高,速度也不如其它模型。

·Cushman

很强大,同时速度很快。当谈到分析复杂任务时,Davinci更强,而Cushman是许多代码生成任务的能干模型。Cushman通常也比Davinci跑得更快、更便宜。

上图为Azure Codex模型概要

1该模型仅可根据要求进行微调。目前我们不接受微调模型的新请求。

2由于需求量大,美国东部目前无法为新客户提供微调服务。请使用美国中南部地区进行培训。

03

Codex应用场景示例

Codex模型主要应用在IT科技部门的代码研发流程自动化上。

·编写程序

比如开发小游戏,准确率高达72%!Codex不仅能够收到指令后自行编程,还能够开发小游戏。

·辅助编程

微软、OpenAI、GitHub联合推出了自动代码生成AI Copilot,Copilot能够在用户输入过程中随时提供补全代码行内容的建议。

相关推荐: 亚马逊AWS计划未来15年泰国投资超50亿美元

厦门商城系统开发 近日,亚马逊公司旗下的亚马逊网络服务日前宣布,计划在泰国开设一个基础设施区域。新的AWS亚太(曼谷)区域将包括三个可用区,在27个地理区域现有的87个可用区基础上再增加一个。 在全球范围内,AWS现已宣布计划在澳大利亚、加拿大、印度、以色列、…

    码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.

    电子商务网站建设的重要性和好处