当前位置: 首页 > 社会热点 > 正文>>

我在阿里云做前端代码智能

时间:2021-01-03 06:15:58
作为一个代码的伴生程序员,难免会接触到各种代码提示工具,但经过很长一段时间就会发现它们都有一个共同的分母,即模型庞大,往往几百兆字...

作为一个代码的伴生程序员,难免会接触到各种代码提示工具,但经过很长一段时间就会发现它们都有一个共同的分母,即模型庞大,往往几百兆字节;而该模型必须要有更多的计算能力,也会导致高内存占用,风扇调用转转,长时间会逐渐发现计算机存储不足,计算机卡等。

那么,是否有轻量级代码提示插件?或者,如何实现轻量级代码提示插件?

下面,我将从三个方面介绍我们在代码智能技巧中的一些实践:模型选择、模型实现和模型优化。

模式选择

如何衡量模型的效果是否好?

我们首先建立了一个基本的模型测量系统,如下图所示。

我们将从推荐的准确性、完整性、连续性、性能、个性化和智能六个维度全面评估模型的优缺点,然后进一步完善该系统,以便系统、全面地评估该模型的效果。

在实践中,我们选择了基于马尔可夫的gpt-2模型和n-g统计模型进行比较。

研究发现,gpt-2模型具有较好的精度和完备性,但在性能上需要很长的时间来推荐(这里我们尝试最小参数版本,训练后约500m,推荐一次大约需要10s)。由于目前还没有找到模型压缩的方法,我们只能暂时放弃。

另一种n克模型经过测试后发现,它在连续推荐和性能方面表现良好,模型尺寸只有40米,但并不完美,在准确性和完整性方面也不太好。

在实践中,我们发现在毫秒级推荐的时间消耗可以使用户写的流畅和不受阻碍,超过1s会导致用户的输入暂停。在此基础上,我们暂时选择n-gram作为我们的推荐模型。

示范实施

下面介绍了n-gram模型的基本原理和我们的实现。

首先,n-gram模型基于马尔可夫链的假设,即单词当前出现的概率仅与先前的有限单词有关。以最简单的n≤2为例,即下一个单词出现的概率仅与前一个单词有关。基于这个想法,我们分割了大量的代码,这样我们就可以得到很多的二重奏,在这里我们可以使用单词出现的次数来表示概率。这样,我们就可以根据一个词得到不同概率分布的推荐列表,然后用当前单词推荐每次推荐,然后生成连续推荐。切分效果请参阅此图片

以下是示范培训和提出建议的一般过程。

模型优化

在实际应用中,仅仅拥有这些还远远不够。模型只是其中的一部分,在应用过程中应该更多,根据实际经验和用户反馈,应该不断优化模型:

结论

当然,这些还远远不够轻巧易用的代码提示。目前,我们正在努力改进该模型的测量系统,我们正在尝试更轻量级的语言模型,希望为用户提供完美的体验。

本文是阿里云原创内容,未经许可不得转载。

------分隔线----------------------------
------分隔线----------------------------
推荐资讯
推荐内容