Qwen3-Coder的发布带给我们带来了一个极强的编程模型,难能可贵的是它还提供了一个足够轻量的Qwen3-Coder-Flash版本,也就是Qwen3-Coder-30B-A3B-Instruct-FP8,它能在一般消千问 Qwen 教程费级硬件上部署。
更值得高兴的是它除了支持工具调用外还像Qwen2.5-Coder一样,继续支持FIM,这意味单个模型可以完成从Chatbot,Agent到代码补全的全部功能。
我最终选择使用vLLM部署Qwen3-Coder-30B-A3B-Instruct-FP8而不是Ollama很大程度上是出于性能的考量。你问我为什么不用SGLang?那是因为截止我写稿时,SGLang在Qwen3-Coder-30B-A3B-Instruct-FP8上的工具调用还是有点问题我没搞定。
安装过程我这里省略,可以参考官方的文档。以我的设备,单张RTX 4090 48G为例。它在使用90%显存运行Qwen3-Coder-30B-A3B-Instruct-FP8的时候可以处理差不多256K长,FP8类型的上下文。
我这里保守一点就设置成200K上下文,85%显存占用,如果需要更长的上下文可以增加和,同时适当减少。
其中,
- 是模型的路径
- 以及是我设置的上下文长度,对Qwen3-Coder-Flash而言,原生支持256K,配置YaRN方法后可以到1M
- 则配置针对KV Cache的量化,默认是fp16精度,换成fp8可以显著减少显存占用
- 参数用于指定CUDA graphs可以覆盖的最大序列长度。如果序列长度超过了这个值,系统会回退到eager模式。为了最好的性能,我这里把它设置成和上下文一样长
更改Continue的配置文件,添加或修改成如下形式
大部分都很好理解,其中比较坑的是用于autocomplete的Prompt Templates。
一开始我按照qwen2.5-coder的默认模板进行配置。
发现效果不佳。经过一段时间研究后,发现正确的使用方式类似于
换句话说,我们应该向端点发送一条以为内容的对话,此时响应内容就是补全的代码。
而Continue的策略是把这个模板直接发送到。这对未经对话微调的Base模型是正确的,但我们这是对话模型。所以我们只能手动套用对话模板了
实测效果非常好。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/257125.html原文链接:https://javaforall.net
