编程助手 | CodeGeeX2-6B模型发布及魔搭最佳实践

简介: 编程助手 | CodeGeeX2-6B模型发布及魔搭最佳实践

一、导读

今日,智谱AI发布了最新的代码模型CodeGeeX2-6B(https://mp.weixin.qq.com/s/qw31ThM4AjG6RrjNwsfZwg),并已在魔搭社区开源。

CodeGeeX2作为多语言代码生成模型CodeGeeX的第二代模型,使用ChatGLM2架构注入代码实现,具有多种特性,如更强大的代码能力、更优秀的模型特性、更全面的AI编程助手和更开放的协议等。

image.png

本文提供了CodeGeeX2的微调教程,希望更多开发者基于开源和数据集微调CodeGeeX2,共同创造AI生态。期待通过这一开源,让CodeGeeX2能成为每一位程序员的编程助手

魔搭开源链接:https://modelscope.cn/models/ZhipuAI/codegeex2-6b/summary

二、环境配置与安装

本文使用ModelScope的Notebook免费环境测试python>=3.8

升级ModelScope环境:

ModelScope需要升级到github上最新的master版本(预计8月1号发布版本),进入Notebook的Terminal环境:

更新ModelScope版本:

git clone https://github.com/modelscope/modelscope.git
cd modelscope
pip install .

三、模型链接及下载

CodeGeeX2-6B

模型链接:https://modelscope.cn/models/ZhipuAI/codegeex2-6b/summary

使用notebook进行模型weights下载(飞一样的速度,可以达到百兆每秒):

from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('ZhipuAI/codegeex2-6b', revision='v1.0.0')

四、模型推理

CodeGeeX2-6B推理代码,版本更新前,需要在Notebook的Terminal里面执行

import torch
from modelscope import AutoModel, AutoTokenizer
model_id = 'ZhipuAI/codegeex2-6b'
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModel.from_pretrained(model_id, device_map={'': 'cuda:0'},  # or device_map='auto'
                                  torch_dtype=torch.bfloat16, trust_remote_code=True)
model = model.eval()
# remember adding a language tag for better performance
prompt = "# language: python\n# write a bubble sort function\n"
inputs = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(inputs, max_length=256)
response = tokenizer.decode(outputs[0])
print(response)

推理运行显存:13G

五、效果体验

体验了一下使用python解决八皇后问题,效果还是不错的!

>>> prompt = "# language: python\n# solve eight queen problem\n"
>>> inputs = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
>>> outputs = model.generate(inputs, max_length=512)
>>> response = tokenizer.decode(outputs[0])
>>> print(response)
# language: python
# solve eight queen problem
def conflict(state, nextX):
    nextY = len(state)
    for i in range(nextY):
        if abs(state[i] - nextX) in (0, nextY - i):
            return True
    return False
def queens(num=8, state=()):
    for pos in range(num):
        if not conflict(state, pos):
            if len(state) == num - 1:
                yield (pos,)
            else:
                for result in queens(num, state + (pos,)):
                    yield (pos,) + result
if __name__ == "__main__":
    print(list(queens(8)))

使用C++解决快排问题

>>> prompt = "// language: C++\n// write a quick sort function\n"
>>> inputs = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
>>> outputs = model.generate(inputs, max_length=512)
>>> response = tokenizer.decode(outputs[0])
>>> print(response)
// language: C++
// write a quick sort function
#include <iostream>
#include <vector>
using namespace std;
void quickSort(vector<int> &arr, int start, int end) {
    if (start >= end) {
        return;
    }
    int pivot = arr[start];
    int left = start;
    int right = end;
    while (left < right) {
        while (left < right && arr[right] >= pivot) {
            right--;
        }
        while (left < right && arr[left] <= pivot) {
            left++;
        }
        if (left < right) {
            swap(arr[left], arr[right]);
        }
    }
    swap(arr[left], arr[start]);
    quickSort(arr, start, left - 1);
    quickSort(arr, left + 1, end);
}
int main() {
    vector<int> arr = {5, 3, 4, 1, 2, 8, 7, 9, 6, 0};
    quickSort(arr, 0, arr.size() - 1);
    for (int i = 0; i < arr.size(); i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

相关文章
|
数据可视化 测试技术 持续交付
自动化测试神器:Python之Pytest库入门使用
自动化测试神器:Python之Pytest库入门使用
596 4
|
存储 域名解析 负载均衡
负载均衡是什么,负载均衡有什么作用
负载均衡是什么,负载均衡有什么作用
|
存储 固态存储
磁盘和内存的区别
存储特性: • 磁盘:非易失性存储,数据在断电后不会丢失,适合长期存储数据。 • 内存:易失性存储,数据在断电后会丢失,适合临时存储当前运行的程序和数据。 容量: • 磁盘:容量通常较大,从几百GB到数TB不等,适合存储大量的文件和数据。 • 内存:容量相对较小,一般在几GB到几十GB之间,用于提供快速的临时存储空间。 速度: • 磁盘:读写速度较慢,HDD一般在几十MB/s,SSD可以达到几百MB/s甚至数GB/s。 • 内存:读写速度非常快,通常在几十纳秒到几百纳秒之间,能够快速响应CPU的指令。
959 2
|
6月前
|
数据采集 存储 人工智能
拆解AI-Agentforce企业级智能体中台:如何让企业AI落地从“噱头”到“实效”
在GDMS峰会上,迈富时集团尹思源指出41.3%中国企业尚未布局AI Agent,已应用者亦陷“Demo化、孤岛化”困局。其发布的AI-Agentforce智能体中台,以“冰山模型”重构架构,打通认知、价值、能力三重鸿沟,覆盖内容、获客、销售、陪练、分析五大场景,助力企业实现AI从“工具”到“数字员工”的全链路协同升级。
|
4月前
|
人工智能 自然语言处理 安全
程序员都在偷偷用的AI编程神器!2025高效自动写代码工具全解析
AI编程革命正悄然兴起。李响团队调研显示,AI助手大幅提升开发效率,GitHub Copilot、CodeWhisperer、Tabnine各具优势,而新兴的Lynx AI更以自然语言生成全栈应用,零门槛、多端适配,助力开发者从重复劳动中解放,专注创新。
程序员都在偷偷用的AI编程神器!2025高效自动写代码工具全解析
|
监控 BI 数据库
打工人救星!来看看这两家企业如何用Quick BI让业务更高效
Quick BI专业版监控告警助力企业高效运作,通过灵活配置规则与多渠道推送,让数据异常早发现、快响应,推动业务敏捷决策与持续增长。
|
设计模式 算法 Java
Springboot 使用设计模式- 策略模式
Springboot 使用设计模式- 策略模式
1236 0
Springboot 使用设计模式- 策略模式
|
11月前
|
机器学习/深度学习 小程序 测试技术
全新GLM模型登场:9B/32B系列模型全面开源,性能媲美顶尖选手,MIT协议商用无忧!
智谱开源 32B/9B 系列 GLM 模型,涵盖基座、推理、沉思模型,均遵循 MIT 许可协议。该系列模型现已发布魔搭社区。其中,推理模型 GLM-Z1-32B-0414 性能媲美 DeepSeek-R1 等顶尖模型,实测推理速度可达 200 Tokens/秒。
799 3
全新GLM模型登场:9B/32B系列模型全面开源,性能媲美顶尖选手,MIT协议商用无忧!
|
人工智能 架构师 程序员
通义灵码上线一周年:超 600 万下载量,国内用户规模第一,新功能有奖测评
通义灵码一周年,新功能有奖测评火热开启!参与活动就有机会获得机械键盘、华为手环等好礼哦,快来了解吧。
|
机器学习/深度学习 自然语言处理 搜索推荐
1024——通义·灵码的功能以应用以及实践案例测评
本文档介绍了阿里巴巴旗下的通义·灵码大模型产品,涵盖其核心功能如文本生成、语义理解、情感分析、多模态处理等,并展示了在智能客服、金融智能投顾、电商推荐系统等多个领域的应用实例。通过具体代码示例,演示了如何调用通义·灵码的API实现自动回复、投资建议、新闻摘要生成等功能。最后,通过实际案例解析,评估了通义·灵码的新功能及其优化建议,包括安全性改进和代码优化策略。
1747 0
1024——通义·灵码的功能以应用以及实践案例测评

热门文章

最新文章