override使用开源代码补全模型的测试情况

今天看到了
【分享开源】Copilot后端代理服务|本地中转服务|离线Copilot本地|FIM模型本地补全
能够实现脱离cocopilot认证的而且自带转发的方式,经过部署后发现确实可用
因此具备了完全内网环境下的copilot条件,于是测试了下override使用近期的一些开源代码补全模型的测试情况(以下模型均采用ollama部署)

使用模型 参数大小 镜像大小 代码补全情况 对话情况
llama3.2 3B 2.0GB 不支持 生成无意义的换行
qwen2.5-coder 7B 4.7GB 支持,但不按注释生成 支持,但无法读取当前文件
qwen2.5-coder(非量化版) 7B 15GB 支持,但不按注释生成 支持,但无法读取当前文件
deepseek-coder-v2 16B 8.9GB 支持,但不按注释生成 不支持
mike/deepseek-coder-v2 16B 10GB 支持,但不按注释生成 不支持
starcoder2:7b 7B 4.0GB 支持,但不按注释生成 支持,但无法读取当前文件
yi-coder 9B 5.0GB 支持,但不按注释生成 不支持

简而言之就是,小模型全部翻车 :rofl: :rofl: :rofl:不推荐override搭配本地部署小模型使用

看了后台日志,使用github copoilot插件进行代码补全时,因为上下文都会传入当做prompt和suffix传递,在文件行数较多的情况下,即使写明注释,补全也会莫名其妙跑偏,但是如果新开一个空文件写同样的注释,又能正常生成了。

下面是多行文件下本地模型补全的情况

但是传递当前文件的对话情况就很奇怪,模型只响应了提问内容,但是对附加的附件内容完全处于不知情的状态

相比之下,使用deepseek 2.5版本的在线api完全没有上述模型的问题,能够正常在项目文件中间打注释生成代码且不会有胡言乱语的内容,chat功能也能正确读取当前文件回答,因此目前的本地模型是完全无法替代在线接口的。
下面是多行文件下deepseek API接口补全的情况


近期deepseek也开源了2.5版本的开源模型,但是236B哪怕Q4量化后也需要133GB的显存,我司内网也只能流出80G的卡能给我折腾,因此此次的内网摸鱼计划正式破产 :rofl: :rofl:

内网使用continue.dev仍然是目前的最优解

希望deepseek能尽快放出2.5版本的小模型,同时也解决2.0版本没法在override下使用的问题 :star_struck:

===================2024.10.18更新=======================================
今天抽空把各个工具模型都更新到最新,重新尝试了下Qwen-2.5-Coder
ollama版本:0.3.13 (0.3.12版本官方已经适配了Qwen-2.5-Coder的FIM功能)
Copilot后端代理服务 版本: v0.0.12-alpha
使用模型10月10号更新的 qwen2.5-coder:7b-instruct-fp16 (即官网完整版的15G模型)

使用结果如下


好吧。Qwen-2.5-Coder完整非量化的7B的模型在上下文多行的情况下还是无法克制的脑补过多,生成注释以外的内容。

本地部署情况下,还是使用continue.dev吧

23 Likes

很有参考价值,感谢佬的测试分享

1 Like

感谢大佬的测试!

其实ollama并没有做FIM与OpenAI接口兼容的适配工作,一些特有的参数都是无效的,结果就造成了代码补全也无法正常

2 Likes

牛哇佬,很有价值的经验贴

其实其实普通的chat模型效果就很好 你用错方式了

1 Like

应该这样接入补全

感谢分享,大佬你这种方式昨天其实也都测试过了,也是同样的问题,这种方法确实补全了对话模型没法FIM的问题,但是还是解决不了上下文太多的情况下,中间脑补太多的问题。

上下文太多的时候,只用FIM补全我注释需要的方法,就目前我测试的情况下,本地部署的都失败了,只有deepseek2.5的api能控制住自己不写一大段

当然我测试的是极端情况,如果是新开一个文档写的注释,或者文件文本行数短,本地模型也是可以正常用的。

感谢分享经验,我会尝试用普通方法部署再试试

就是ollama的问题

阿里的闭源的qwen-coder-turbo-latest可以,已经在使用,效果不错,有机会开一个公车。

通义灵码现在更新的也挺好用了,本地+云端同时,补全结果的其实已经不比Deepseek逊色了
外网其实折腾override没有太多必要了
只不过我想弄一套能完全再内网用的方案

我刚刚糊了一个帖子,关于如何配置Override+阿里大模型的
https://linux.do/t/topic/218149/12

在线的闭源效果肯定是没的说的,主要还是内网用不了。
这个方法我看看接入本地模型能不能好点

正在进行本地代码补全部署,很有价值

值得尝试一下

马克一下我也在搞

最新版本的qwen2.5-coder:7b-instruct-fp16还是无法正常使用

前排围观支持一下