开放科学合作组织BigCode发布了一个用于程序开发,具有1.1B参数的多语言开源语言模型SantaCoder,能够产生比更大型开源模型,更好的Python、Java与JavaScript程序代码生成和填充建议。BigCode现在于Huggingface网站提供SantaCoder演示,供任何人研究试用。
SantaCoder使用The Stack资料集训练,由于研究人员想要训练出一个相对小的模型,因此仅选择目前流行的三种语言Python、Java与JavaScript。在训练模型之前,研究人员先注解400个范例,并且构建完善的正规表达式规则,从程序代码中删除了诸如电子邮件、密钥和IP地址等敏感资讯。
研究人员借由实验不同的因素对模型造成的影响,发现有两个做法能够显著提高模型性能,第一是积极过滤重复项目,另一项则是不筛选GitHub项目星数,研究人员表示,如果只选择GitHub 5星项目的文件,模型性能反而会明显降低。
模型训练完成后,研究人员使用MultiPL-E基准评估模型,MultiPL-E是一个支持18种程序语言的文本转程序代码基准。SantaCoder从左至右生成和填充MultiPL-E中Python、Java与JavaScript部分程序代码,评估实验证明,尽管SantaCoder只有1.1B,但性能优于规模较大拥有6.7B参数的InCoder,以及参数2.7B的模型CodeGen-multi。
SantaCoder使用开发和负责任人工智能授权OpenRAIL,更重要的是,由于要让开发者可以安心的使用SantaCoder,研究人员开发了一个程序代码归属查询接口,让用户可以查询SantaCoder生成程序代码的归属。
当开发者使用SantaCoder产生程序代码的时候,结果可能包含预训练资料集程序代码的副本,研究人员提到,在这种情况下,程序代码的授权可能会要求开发者遵守部分要求,而通过使用程序代码归属查询功能,用户便可以找到程序代码的来源,遵守程序代码库特定授权要求。