背景
最近在做有关克隆代码检测的相关工作,克隆代码是软件开发过程中的常见现象,它在软件开发前期能够提升生产效率,产生一定的正面效益,然而随着系统规模变大,也会产生降低软件稳定性,软件bug传播,系统维护困难等负面作用。本次训练基于codeBERT的分类模型,任务是给定两个函数片段,判断这两个函数片段是否相似,TorchServe主要用于PyTorch模型的部署,现将使用TorchServe搭建克隆代码检测服务过程总结如下。
TorchServe简介
TorchServe是部署PyTorch模型服务的工具,由Facebook和AWS合作开发,是PyTorch开源项目的一部分。它可以使得用户更快地将模型用于生产,提供了低延迟推理API,支持模型的热插拔,多模型服务,A/B test版本控制,以及监控指标等功能。TorchServe架构图如下图所示:
TorchServe框架主要分为四个部分:Frontend是TorchServe的请求和响应的处理部分;Worker Process 指的是一组运行的模型实例,可以由管理API设定运行的数量;Model Store是模型存储加载的地方;Backend用于管理Worker Process。
codeBERT是什么?
codeBERT是一个预训练的语言模型,由微软和哈工大发布。我们知道传统的BERT模型是面向自然语言的,而codeBERT是面向自然语言和编程语言的模型,codeBERT可以处理Python,Java,JavaScript等,能够捕捉自然语言和编程语言的语义关系,可以用来做自然语言代码搜索,代码文档生成,代码bug检查以及代码克隆检测等任务。当然我们也可以利用CodeBERT直接提取编程语言的token embeddings,从而进行相关任务。
环境搭建
安装TorchServe
pip install torchserve
pip install torch-model-archiever
编写Handler类
Handler是我们自定义开发的类,Tor