0


如何搭建免费的GitHub Copilot?

前不久,GitHub和OpenAI联合为程序员们送上了编程神器——GitHub Copilot,能根据用户输入的部分代码或注释自动生成完整代码。适用后效果的确很惊艳,但但但是近期开始收费了,现以每月 10 美元(人民币约 67 元)或每年 100 美元(人民币约 669 元)的价格出售,实在是太贵了!Copilot 是建立在 OpenAI Codex 之上,也就是 OpenAI 的旗舰 GPT-3 语言生成算法的后代,但目前还暂未开源。

最近发现一款开源的神器,可以自己搭建代码生成的服务,同时可以通过Github Copilot来调用,完美复刻。底层模型是基于Salesforce团队提出的CodeGen模型,有多种大小:350M、2B、6B、16B,支持多种常见的代码语言,最赞的是16B模型效果已超越Codex。

废话不多说,先上链接。

PaddleNLP/examples/code_generation/codegen at develop · PaddlePaddle/PaddleNLP (github.com)https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/code_generation/codegen

可以按照上述说明自行配置,简单又快捷。配置完成后,体验了一把,下面是效果,还不错。

另外看官方给的使用案例,还挺有趣的,可以直接拿来补全LeetCode算法题。针对LeetCode原题:求解无重复字符的最长子串的长度,通过下方代码调用并生成补全结果:

from paddlenlp import Taskflow

prompt = "def lengthOfLongestSubstring(self, s: str) -> int:"
codegen = Taskflow("code_generation", model="Salesforce/codegen-2B-mono", decode_strategy="greedy_search", repetition_penalty=1.0)
print(codegen(prompt))

得到的输出是:

        if not s:
            return 0

        start = 0
        end = 0
        max_len = 0

        while end < len(s):
            if s[end] not in s[start:end]:
                max_len = max(max_len, end - start + 1)
                end += 1
            else:
                start += 1

        return max_len

提交到LeetCode,竟然还通过了,不知道是不是巧合😂

另外,还发现几个亮点:

  1. 该开源项目采用了FasterTransformer进行预测加速,在350M模型上,相对于HuggingFace加速比为10几倍!

  1. 支持在用户自己的代码数据上进行微调,让Copilot更加懂用户。

参考

  1. https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/code_generation/codegen
  2. https://github.com/features/copilot/
  3. Nijkamp, Erik, et al. "A conversational paradigm for program synthesis." arXiv preprint arXiv:2203.13474 (2022)

本文转载自: https://blog.csdn.net/gel1234/article/details/127050405
版权归原作者 gongel 所有, 如有侵权,请联系我们删除。

“如何搭建免费的GitHub Copilot?”的评论:

还没有评论