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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 编程助手 | 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;
}

相关文章
|
8月前
|
人工智能 监控 Swift
魔搭社区LLM模型部署实践 —— 以ChatGLM3为例
本文将以ChatGLM3-6B为例,介绍在魔搭社区如何部署LLM
|
10月前
|
人工智能 Linux API
LangChain开发环境准备-AI大模型私有部署的技术指南
今天开始小智将开启系列AI应用开发课程,主要基于LangChain框架基于实战项目手把手教大家如何将AI这一新时代的基础设施应用到自己开发应用中来。欢迎大家持续关注
712 0
|
12月前
|
机器学习/深度学习
阿里云最新产品手册——阿里云核心产品——机器学习平台PAI——简介
阿里云最新产品手册——阿里云核心产品——机器学习平台PAI——简介自制脑图
179 1
|
机器学习/深度学习 人工智能 编解码
|
22天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能平台PAI产品使用合集之如何使用blade进行优化
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
11天前
|
JavaScript 前端开发 开发者
Copilot如何使用?开发者福音,代码助手来袭
Copilot如何使用?开发者福音,代码助手来袭
|
机器学习/深度学习 API 开发工具
|
2月前
|
算法 人工智能 缓存
CSDN官方创作助手InsCode AI 教你分分钟搞定一篇好文章
CSDN官方创作助手InsCode AI 教你分分钟搞定一篇好文章
49 0
CSDN官方创作助手InsCode AI 教你分分钟搞定一篇好文章
|
2月前
|
自然语言处理 算法 Swift
浪潮信息开源 源2.0 基础大模型,魔搭社区最佳实践教程来啦!
浪潮信息发布源2.0基础大模型,参数量包括1026亿、518亿、21亿三个大模型,从源2.0的论文上可以看到,源2.0不仅在数理逻辑、数学计算、代码生成能力上,再次超强进化,还在算法、数据、算力方面,提出了三项创新。
|
2月前
|
机器学习/深度学习 自然语言处理 JavaScript
Copilot概述
Copilot概述
103 0