Categories: 编程

AIGC代码生成模型之Salesforce/codegen-6B-mono

CodeGen是一系列用于程序合成的自回归语言模型,摘自Erik Nijkamp、Bo、Hiroaki Hayashi、Lifu Tu、Huan Wang、Yingbo Zhou、Silvio Savarese、Caiming Xiong的论文《程序合成的对话范式》。模型最初在该存储库中发布,分为3种预训练数据变体(NL、Multi-、Mono)和4种模型大小变体(350M、2B、6B、16B)。

该存储库中包含的checkpoint在本文中表示为CodeGen Mono 6B,其中“Mono”表示使用CodeGen Multi 6B初始化模型,并在Python编程语言数据集上进一步预训练,“6B”表示可训练参数的数量。

GitHub: https://github.com/salesforce/CodeGen

数据训练

这个checkpoint(CodeGen Mono 6B)首先用CodeGen Multi 6B初始化,然后在BigPython数据集上进行预训练。该数据由71.7亿个Python编程语言的令牌组成。有关更多详细信息,请参阅本文第2.1节。

训练流程

CodeGen使用交叉熵损失进行训练,以最大限度地提高顺序输入的可能性。该系列模型由谷歌使用多个TPU-v4-512进行训练,利用数据和模型并行性。有关更多详细信息,请参阅本文第2.3节。

结果评估

两个代码生成基准上评估我们的模型:HumanEval和MTPB。有关更多详细信息,请参阅论文

使用场景和限制

作为一种自回归语言模型,CodeGen能够从给定的自然语言和编程语言文本中提取特征,并计算它们的可能性。然而,该模型旨在并最擅长程序合成,即在给定英文提示的情况下生成可执行代码,其中提示应以注释字符串的形式出现。该模型也可以完成部分生成的代码。

如何使用

使用AutoModelForCausalLM功能可以轻松加载此模型:

from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-6B-mono")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-6B-mono")

text = "def hello_world():"
input_ids = tokenizer(text, return_tensors="pt").input_ids

generated_ids = model.generate(input_ids, max_length=128)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
5.0
04
2023最新谷歌Google全球短信激活注册
Supervisor 的 Event & Listener进程监控告警
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

Tabnine是一款AI编程助手

Tabnine是一款最新的AI…

17小时 ago

Adrenaline一个AI开发工具

Adrenaline是一个革命…

17小时 ago

Kubeflow一个简化Kubernetes学习工作流程工具

在机器学习(ML)领域,有效地…

17小时 ago

CodiumAI一个AI测试工具

CodiumAI不完全依赖于手…

18小时 ago

Writesonic一个AI创作助手

Writesonic是一个先进…

18小时 ago

4个Linux终端清屏的命令

就像任何其他操作系统一样,Li…

1天 ago