9B参数写代码秒杀百亿大模型?CodeGeeX4全实测:从游戏开发到AI架构解读
在开发AI应用时,一个绕不开的环节就是测试大语言模型在实际场景中的表现,目的是摸清
模型的能力边界究竟在哪里
实测模型介绍
在软件开发领域,高性能的代码模型一直是开发者追求的目标。而开源的代码模型,又额外给了一层保障:代码和数据的隐私可以得到有效保护。
CodeGeeX4-ALL-9B是智谱新开源的多语言代码生成模型,
支持128K上下文

为了更直观地了解它的真实水平,我们围绕代码生成、补全和解释这几项核心能力,
设计了几个具体场景进行测试
- 开发俄罗斯方块游戏
- 基于表和需求生成SQL查询
- 补全数据分析Python代码
- 解释Llama3模型结构
显卡消耗
按模型推理所需显存的常规公式来算——显存占用(GB)≈ 模型参数(B)× 2——CodeGeeX4-ALL-9B的显存占用大约在18GB左右。
我们使用了清湛算力平台提供的环境进行部署(Tesla V100-PCIE-32GB×1,32G显存,2核CPU,4G内存,Python 3.10,Pytorch 2.3,CUDA 12.1)。在实际部署中,
不启用任何量化技术的情况下,模型占用显存约为17.98GB,推理速度达到26.65 tokens/s
推理代码参考如下:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
device = "cuda" if torch.cuda.is_a vailable() else "cpu"
tokenizer = AutoTokenizer.from_pretrained("/useropt167/codegeex4-all-9b", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
"/useropt167/codegeex4-all-9b",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True
).to(device).eval()
model_version = 'codegeex4-all-9b'
def inference(prompt: str):
inputs = tokenizer.apply_chat_template([{"role": "user", "content": prompt}], add_generation_prompt=True, tokenize=True, return_tensors="pt", return_dict=True).to(device)
generation_config = {
'max_new_tokens': 4096
}
with torch.no_grad():
outputs = model.generate(**inputs, **generation_config)
outputs = outputs[:, inputs['input_ids'].shape[1]:]
results = tokenizer.decode(outputs[0], skip_special_tokens=True)
return results
代码生成能力实测
先看代码生成能力:我们让模型开发一个小游戏,并根据用户需求生成SQL查询语句。总的来看,CodeGeeX4-ALL-9B能生成相对完整的俄罗斯方块游戏代码,涵盖主要的游戏逻辑和界面绘制,
但细节实现上还有优化空间——比如会漏掉检测方块碰撞的方法
01. 写小游戏
让模型完成一个俄罗斯方块小游戏。之前测试过不少开源代码模型,它们容易缺失部分模块的实现。
从最终结果来看,CodeGeeX4-ALL-9B能按要求提供一个相对完整的俄罗斯方块游戏,包含主要逻辑和界面绘制。

不过,在细节和功能上仍有改进之处。例如,Block 类中
没有添加 move_up 方法,运行时调用会导致报错
02. 根据用户需求生成SQL语句
让LLM理解用户需求并生成对应的SQL语句,可以大幅提升数据分析和查询的效率。结合工具调用,就能直接把查询结果返回给用户。
我们给定了数据表的结构和需求,来看模型能否生成正确的SQL查询。
结果很清晰:模型
能正确理解需求

代码补全能力实测
代码补全方面,我们让CodeGeeX4-ALL-9B完成两个任务:补全Flask框架开发的网页框架,以及补全数据分析用的Python脚本。测试结果表明,模型都能
准确地按需完成代码补全
01. Web应用开发中的代码补全
下面是一个基于Flask框架的Web页面代码,用途是在网页上显示欢迎用户的消息。在已有初步框架的基础上,让模型按要求补齐代码。
可以看到,CodeGeeX4-ALL-9B能准确补全代码:通过调用正确的模块实现需求,比如用`render_template`渲染页面,通过`request.form`获取表单数据。

值得一提的是,
它还会兼顾完整项目开发的实现
02. 数据分析中的代码补全
在数据分析中,pandas是处理数据并制作图表的常用工具。我们给出CSV文件读取代码和已导入的模块,让模型按要求完成剩余分析任务:计算总销售额、找出销售额最高的产品、绘制每种产品的销售额柱状图。
模型输出的代码完全符合要求,准确补全了缺失部分。

运行脚本后,成功得到了每类产品的销售额柱状图。
代码解释能力实测
代码解释能力强的模型,能帮助我们快速为各类编程语言生成注释和文档。此外,用它解读模型架构代码,也能加深对架构设计的理解。
下面我们测试了模型对Ja vaScript函数的解释,以及对Llama3模型架构的解读。
在测试案例中,CodeGeeX4-ALL-9B都能准确、清晰地解释每一部分代码。
01. 解释Ja vaScript函数的作用和工作原理
这段代码的功能是发送一个HTTP请求到指定URL,并返回一个包含响应数据的Promise对象。模型的解释基本正确,覆盖了主要功能和工作原理,表述清晰,并且逐步描述了函数的工作流程。

02. 解释Llama3模型架构代码
我们给出一段Llama3模型架构中Transformer初始化的代码,让模型进行解释。

模型对Llama3这一部分实现给出了清晰且详细的解释。它准确描述了每个模块的功能,并说明了这些模块在整个架构中的作用和工作原理,能有效帮助我们理解模型架构。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名