如何优化GitHub Copilot的细节调整?

4
我们可以微调语言模型,例如BERT、GPT-3。
我能否微调GitHub Copilot模型?
我已经查看了来自https://copilot.github.com/的示例,但找不到细节。
如果有人微调了Github Copilot,我会非常感激。
3个回答

3
OpenAI API提供“Davinci Codex”机器学习模型,采用按点击次数付费的订阅方式,类似于davinci模型的非编码版本。
OpenAI应该也要将fine-tuning选项启用到Davinci Codex上。一旦他们这样做了,您就可以通过API调用来使用它。
在检查了前提条件之后,我认为您可以通过一些代码更改将OpenAI API链接到您本地安装的Github Copilot中,理论上应该是可能的。
第一步可能是拥有一个调用OpenAI Codex API的copilot VSCode扩展程序的分支(或完全自定义的插件,可以在您的代码中插入文本)。
然后,您将指向您精细调整过的模型版本。要了解有关精细调整OpenAI模型的信息,您应该查看他们的文档。 请注意,他们还有一个 openai 命令行界面,可以让您完成大部分数据加载和微调任务。
不幸的是,目前只能微调OpenAI非编码版本的模型,希望他们很快会推出Codex版本。

1
@makevoid,我很确定你错了。你不能微调Codex,你只能微调GPT。 - Exploring
1
@Exploring true,目前您还无法微调Davinci Codex,只能使用普通的Davinci。希望他们能尽快提供此功能。 - makevoid
你知道任何初步的时间表吗?谢谢。 - Exploring
1
探索中,我不知道 - 顺便提一下,还有GPT-J-6B(开源,模型更小),有人成功地对其进行了微调以生成代码,但这是一个更大的任务,并且不如Codex/Copilot好。 - makevoid
@makevoid 还有一个名为CodeGeeX的开源替代Codex的选择。 代码可在https://github.com/THUDM/CodeGeeX上获得。 模型权重可应用和下载。 - user1349923

2

似乎没有客户端功能可直接微调 Copilot。

以下是两个原因,解释为什么该功能现在(2022年第二季度)不可用。

Copilot 功能页面 最初包括以下内容:

GitHub Copilot 如何随时间变得更好?

GitHub Copilot 实际上并不测试它建议的代码,因此代码甚至可能无法编译或运行。 GitHub Copilot 只能保持非常有限的上下文,因此即使单个源文件超过几百行,也会被剪切,只使用前面的上下文。而且 GitHub Copilot 可能会建议使用已过时的库和语言。您可以在任何地方使用代码,但自行承担风险。

正如 Tomek KorbakTwitter 上 解释的那样:

实际上,Copilot 的自动补全功能总是优化为人类喜好,而不一定是编译器的喜好。这是因为语言模型训练目标(预测文本中的下一个标记)非常擅长捕捉短期依赖关系(这解释了生成片段的人类感觉)。但它很难捕捉生成序列的长期、全局、语义属性,如可编译性。并且没有简单的方法来将可编译性包含在其训练信号中。标准方法——使用可编译性作为奖励进行强化学习的语言模型微调——众所周知会导致灾难性遗忘:生成的完成度较少、准确性较低。Tomek 引用了 "Energy-Based Models for Code Generation under Compilability Constraints (pdf)"。
我们的解决方案(KL-DPG)将生成序列的可编译性率从55%提高到70%。RL微调可以做得更好,但代价是灾难性遗忘。总体而言,能量基模型(EBMs)在表达奇怪的序列级约束方面表现出色,这些约束作为自回归语言模型的规范化先验非常难以表达。EBMs为我们注入结构化的符号知识到大型语言模型中提供了一种方式,而不会破坏它们或牺牲它们的神奇能力。可控生成的进一步应用领域非常广阔。

因此并不容易。

Tanishq Mathew Abraham 在 "Coding with GitHub Copilot" 中进行了解释。

我想知道GitHub团队是否可以开发一种方法,以针对特定用例微调GitHub Copilot。例如,可能会有特定的GitHub Copilot模型适用于fastai、JAX等。它们将在使用这些库和代码库的源代码上进行微调。但是确保该工具不提供过时建议仍然是一个挑战。我认为不可能为没有足够代码库进行训练的全新库提供建议。此外,对于像fastai这样存在旧API和新API的情况,在微调模型时,必须筛选出使用旧API的代码库。

-1
不,完全没有。GitHub Pilot 的模型不会存储在客户端系统中,也不会提供对模型的访问,因为现在他们开始收费,这使得他们的项目不是开源的更加明显。

您可以对一些付费的OpenAI模型进行微调,这些模型不是开源的,也不存储在客户端机器上。https://platform.openai.com/docs/guides/fine-tuning - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接