qwen2.5-coder 发布,实测有点用,又好像没用
大陆时间 2024 年 11 月 12 日凌晨 3 点左右,阿里千问团队发布 Qwen2.5-Coder 系列模型
模型特色
新模型主打强大、多样和实用三大特点。
强大
Qwen2.5-Coder-32B-Instruct 成为目前 SOTA 的开源代码模型,代码能力追平 GPT-4o
,展现出强大且全面的代码能力,同时具备良好的通用和数学能力
。
多样
10 月开源了 1.5B
和7B
两个尺寸,本次又带来 0.5B、3B、14B、32B 四个尺寸。
截至目前, Qwen2.5-Coder 已经覆盖了主流的 6 个模型尺寸,以满足不同开发者的需要。
不同尺寸 Instruct 模型的表现:
实用
官方探索了 Qwen2.5-Coder 在代码助手
和 Artifacts
两种场景下的实用性,并用一些样例来展示 Qwen2.5-Coder 在实际场景中的应用潜力。
模型许可
- Qwen2.5-Coder 0.5B/1.5B/7B/14B/32B 模型均采用 Apache 2.0 许可证。
- 3B 模型使用 Research Only 许可。
实测
笔者从 官方博客演示视频 中抽取了提示词,在 本地 ChatNio 分别进行了测试。
官网 demo:三体模拟
模型:qwen2.5-coder:14b
提示词:
Create a complete HTML page using Canvas and JavaScript to simulate a three-body effect.
Using the following planet resources:
1. https://img.alicdn.com/imgextra/i4/O1CN01R6wlzD1lhhMlBcGLg_!!6000000000925-2-tps-800-800.png
2. https://img.alicdn.com/imgextra/i4/O1CN01Ad5SeB20tv1nfRoA2_!!6000000006908-2-tps-800-800.png
3. https://img.alicdn.com/imgextra/i1/O1CN01OlZAk81OVEHJ0pazq_!!6000000001710-2-tps-800-800.png
Requirements:
1. set size of images as 100px * 100px
2. add "Start" and "Reset" button
3. When it is not started, allow drag to place the planets, and "start" to simulate
4. "Reset" place the three planets to the default location
Draw both acceleration and velocity vectors on each planet, assume all the planets are stationary at the beginning.
1. Add a slider to control the update speed.
2. Set largely different mass to make the movement obvious, set G constant large enough to make the animation obvious too.
Write the entire code in a single HTML
使用 14B coder 模型生成的单网页应用,有基本的轮廓,但是点击开始后,模拟过程并不流畅,和官网 demo 中的效果有差距。
换 32B coder 模型,生成的代码有 bug,有 2 个变量重复声明了
,改好后可以运行。
官网 demo:Lissajous Curve(利萨茹曲线)
模型:qwen2.5-coder:14b
提示词:
Use HTML to draw Lissajous diagrams, provide sliders to control the ratio, and make delta change automatically to make the graph rotate like 3D. All codes are written in one file. Requirements: Make sure the starting point of the curve is at a reasonable position, draw enough phases to ensure the curve is closed, and the slider only handles integers
这个生成的效果是最好的,和官方 demo 基本一致,可以正确模拟出曲线,并且能调整曲线参数,实时生效。
官网 demo:表情雨
模型:qwen2.5-coder:14b
提示词:
Write code in a single HTML file:
capture the "click" event, drop random numbers of random emojis on the click point, initially flying to random directions, add gravity and collision effect on each emoji, add this picture to emoji list, take care of this picture size: https://qianwen-res.oss-cn-bejing.aliyuncs.com/Qwen2.5/Qwen2.5-Coder/logo.png, using caching method to avoid massive load of this
这个生成的效果也很好,和官方 demo 基本一致。
个人 demo:俄罗斯方块
模型:qwen2.5-coder:14b
提示词:
生成一个网页版俄罗斯方块游戏,提供暂停按钮,提供上、下、左、右四个方向键控制方向,提供一个按钮用来旋转方块。全部代码放在一个 html 文件中。
效果不好,有 bug,无法正常运行,可能是我的提示词不够清晰、明确,而且我的提示词是中文,英文提示词效果估计更好。
个人 demo:贪吃蛇
模型:qwen2.5-coder:14b
提示词:
Use HTML to draw Lissajous diagrams, provide sliders to control the ratio, and make delta change automatically to make the graph rotate like 3D. All codes are written in one file. Requirements: Make sure the starting point of the curve is at a reasonable position, draw enough phases to ensure the curve is closed, and the slider only handles integers
效果不好,有 bug,无法正常运行。
个人 demo:生成 golang 测试代码
模型:qwen2.5-coder:32b
提示词:
为下面的 golang 代码生成测试:
```golang
func formatQuoteKeys(keys []string) []string {
res := make([]string, 0, len(keys))
for _, key := range keys {
var newKey string
if strings.HasPrefix(key, "hk") {
reg := regexp.MustCompile("^hk")
tmp := reg.ReplaceAllString(key, "")
newKey = "rt_hk" + strings.ToUpper(tmp)
} else if strings.HasPrefix(key, "$") {
newKey = strings.ReplaceAll(key, "$", "gb_")
} else {
newKey = strings.ToLower(key)
}
res = append(res, newKey)
}
return res
}
```
生成的效果有点超出个人预期了,毕竟前面 2 个都有 bug。
这里生成了完整的代码,测试样例很丰富,覆盖面广,并对代码进行了解释,可以更好的理解代码。
实际运行代码,也能运行通过。
功耗
qwen2.5-coder:32b 在推理时功耗还是很大的,下面是nvidia-smi
命令的数据,笔者 RTX 2080Ti 22G
的显卡,基本是满功耗 (248W/250W) 在运行了。
而且 32B 模型在 RTX 2080Ti 22G
的显存占用在 19G 左右。
$ nvidia-smi
Tue Nov 12 09:02:14 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 555.42.06 Driver Version: 555.42.06 CUDA Version: 12.5 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 2080 Ti Off | 00000000:01:00.0 Off | N/A |
| 55% 64C P2 248W / 250W | 19527MiB / 22528MiB | 96% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 1235 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 973908 C ...unners/cuda_v12/ollama_llama_server 0MiB |
+-----------------------------------------------------------------------------------------+
总结
使用官方 Demo 中的提示词,生成的网页基本能够正确运行。
但是用自己的提示词,生成的俄罗斯方块、贪吃蛇游戏,都存在 bug,无法正确运行。可能是笔者自己的提示词水平需要提高,同时笔者发现生成代码方面模型对英文提示词效果更好一些。
在开发辅助方面,比如生成测试样例,使用 qwen-coder 还是可以的。