单卡可推理CodeFuse-CodeLlama-34B 4bits量化版本魔搭开源!

简介: 继2023-09-11 CodeFuse-CodeLlama-34B发布,HumanEval pass@1指标达到74.4% (贪婪解码), 为当前开源SOTA。最近,CodeFuse-CodeLlama-34B 4bits量化版本发布,CodeFuse-CodeLlama-34B-4bits是CodeFuse-CodeLlama-34B模型的4bits量化版本,后者是通过QLoRA对基座模型CodeLlama-34b-Python进行多代码任务微调而得到的代码大模型,模型输入长度为4K。

导读

继2023-09-11 CodeFuse-CodeLlama-34B发布,HumanEval pass@1指标达到74.4% (贪婪解码), 为当前开源SOTA。最近,CodeFuse-CodeLlama-34B 4bits量化版本发布,CodeFuse-CodeLlama-34B-4bits是CodeFuse-CodeLlama-34B模型的4bits量化版本,后者是通过QLoRA对基座模型CodeLlama-34b-Python进行多代码任务微调而得到的代码大模型,模型输入长度为4K。


经4bits量化后,CodeFuse-CodeLlama-34B-4bits可用单张A10 (24GB显存)或者RTX 4090 (24GB显存)加载,同时,量化后的模型在Humaneval pass@1指标上仍取得了73.8%的表现。


评测表现(代码):

模型

HumanEval(pass@1)

日期

CodeFuse-CodeLlama-34B

74.4%

2023.9

CodeFuse-CodeLlama-34B-4bits

73.8%

2023.9

WizardCoder-Python-34B-V1.0

73.2%

2023.8

GPT-4(zero-shot)

67.0%

2023.3

PanGu-Coder2 15B

61.6%

2023.8

CodeLlama-34b-Python

53.7%

2023.8

CodeLlama-34b

48.8%

2023.8

GPT-3.5(zero-shot)

48.1%

2022.11

OctoCoder

46.2%

2023.8

StarCoder-15B

33.6%

2023.5

LLaMA 2 70B(zero-shot)

29.9%

2023.7


环境配置与安装

  1. python 3.8及以上版本
  2. pytorch 1.12及以上版本,推荐2.0及以上版本
  3. 建议使用CUDA 11.4及以上(GPU用户需考虑此选项)


使用步骤

本文在PAI-DSW运行 (可单卡运行)


模型链接和下载

CodeFuse量化模型现已在ModelScope社区开源,


CodeFuse-CodeLlama-34B 4bits:

https://modelscope.cn/models/codefuse-ai/CodeFuse-CodeLlama-34B-4bits/summary


社区支持直接下载模型的repo:

from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('codefuse-ai/CodeFuse-CodeLlama-34B-4bits', 'v1.0.0')

模型推理

依赖项:

依赖项:

pip install "modelscope>=1.9.1"
pip install auto_gptq


推理代码:

import os
import torch
import time
from modelscope import AutoTokenizer, snapshot_download
from auto_gptq import AutoGPTQForCausalLM
os.environ["TOKENIZERS_PARALLELISM"] = "false"
def load_model_tokenizer(model_path):
    """
    Load model and tokenizer based on the given model name or local path of downloaded model.
    """
    tokenizer = AutoTokenizer.from_pretrained(model_path, 
                                              trust_remote_code=True, 
                                              use_fast=False,
                                              lagecy=False)
    tokenizer.padding_side = "left"
    tokenizer.pad_token_id = tokenizer.convert_tokens_to_ids("<unk>")
    tokenizer.eos_token_id = tokenizer.convert_tokens_to_ids("</s>")
    model = AutoGPTQForCausalLM.from_quantized(model_path, 
                                                inject_fused_attention=False,
                                                inject_fused_mlp=False,
                                                use_cuda_fp16=True,
                                                disable_exllama=False,
                                                device_map='auto'   # Support multi-gpus
                                              )
    return model, tokenizer
def inference(model, tokenizer, prompt):
    """
    Uset the given model and tokenizer to generate an answer for the speicifed prompt.
    """
    st = time.time()
    prompt = prompt if prompt.endswith('\n') else f'{prompt}\n'
    inputs =  f"<|role_start|>human<|role_end|>{prompt}<|role_start|>bot<|role_end|>"
    input_ids = tokenizer.encode(inputs, 
                                  return_tensors="pt", 
                                  padding=True, 
                                  add_special_tokens=False).to("cuda")
    with torch.no_grad():
        generated_ids = model.generate(
            input_ids=input_ids,
            top_p=0.95,
            temperature=0.1,
            do_sample=True,
            max_new_tokens=512,
            eos_token_id=tokenizer.eos_token_id,
            pad_token_id=tokenizer.pad_token_id              
        )
    print(f'generated tokens num is {len(generated_ids[0][input_ids.size(1):])}')
    outputs = tokenizer.batch_decode(generated_ids, skip_special_tokens=True) 
    print(f'generate text is {outputs[0][len(inputs): ]}')
    latency = time.time() - st
    print('latency is {} seconds'.format(latency))
if __name__ == "__main__":
    model_dir = snapshot_download('codefuse-ai/CodeFuse-CodeLlama-34B-4bits', revision='v1.0.0')
    prompt = 'Please write a QuickSort program in Python'
    model, tokenizer = load_model_tokenizer(model_dir)
    inference(model, tokenizer, prompt)


资源消耗:

我们测量了模型加载后占用的显存占用情况,以及输入2048/1024 tokens并输出1024/2048 tokens时的显存使用情况,如下表所示

精度

模型空载

输入

2048 tokens + 输出1024 tokens

输入

1024 tokens + 输出2048 tokens

bfloat16

64.89GB

69.31GB

66.41GB

int4

19.09GB

22.19GB

20.78GB


int4示例代码显存占用:



魔搭投稿地址:https://survey.alibaba.com/apps/zhiliao/--lb2a9di


相关文章
|
并行计算 算法 异构计算
antv/g6之图布局及切换布局
antv/g6之图布局及切换布局
1828 0
|
移动开发 Android开发 HTML5
uniapp视频播放功能
uniapp视频播放功能
2009 0
|
人工智能 物联网 测试技术
CodeFuse发布34B-4bit单卡4090可部署模型
CodeFuse 是蚂蚁集团自研的代码生成专属大模型,可以根据开发者的输入提供智能建议和实时支持,帮助开发者自动生成代码、自动增加注释、自动生成测试用例、修复和优化代码等,以提升研发效率。
922 0
CodeFuse发布34B-4bit单卡4090可部署模型
|
3月前
|
存储 SQL 关系型数据库
AI时代,当 MySQL 遇见列式存储引擎 DuckDB
在AI浪潮席卷全球的今天,有人认为关系型数据库已走向黄昏,MySQL 的生命力正在被边缘化。但事实真的如此吗?AliSQL,作为 MySQL 的重要分支,自2010年诞生以来,始终默默支撑着阿里巴巴集团核心业务的高并发、高可用需求。它从未消失,只是沉寂太久。 2026年,AliSQL社区的一帮开发者们,开始为AliSQL注入创新的血液!这是他们的第一篇,系统阐述了MySQL深度融合DuckDB的重大技术实践。这不仅是对“MySQL 只擅长 TP”这一行业共识的突破性回应,更是一次兼具工程魄力与架构远见的创新。
AI时代,当 MySQL 遇见列式存储引擎 DuckDB
|
运维 并行计算 C语言
TensorRT-LLM在CodeFuse-CodeLlama-34B上的int4量化实践
Codefuse是由蚂蚁集团开发的专门用于支持整个软件开发生命周期的大型代码语言模型(Code LLMs),涵盖设计、需求、编码、测试、部署、运维等关键阶段。致力于打造创新的解决方案,让软件开发者们在研发的过程中如丝般顺滑。
772 0
|
人工智能 API Python
Python 技术篇-有道翻译api接口调用详细讲解、实战演示,有道智云·AI开放平台
Python 技术篇-有道翻译api接口调用详细讲解、实战演示,有道智云·AI开放平台
4105 0
Python 技术篇-有道翻译api接口调用详细讲解、实战演示,有道智云·AI开放平台
|
3月前
|
SQL 存储 关系型数据库
别再嫌弃MySQL了!AI时代,当DuckDB拥抱MySQL
阿里云RDS MySQL DuckDB引擎推出两种形态:只读实例(HTAP读扩展)与分析主实例(支持写入/多源汇聚)。通过内核级集成,兼顾MySQL兼容性与DuckDB列式分析性能,在Binlog同步、高可用、数据安全、入库性能及SQL兼容性等方面全面增强,助力用户构建低成本、高性能的实时分析平台。(239字)
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
26224 71
|
5月前
|
人工智能 自然语言处理 数据可视化
用Dify工作流打造你的AI测试智能体,效率提升500%
Dify助力测试智能化升级,通过可视化AI工作流实现测试用例自动生成,提升效率500%。告别手工编写,覆盖边界场景,降低维护成本,推动测试从“手工作坊”迈向自动化、智能化新时代,全面提升质量与交付速度。
|
机器学习/深度学习 人工智能 编解码
Text to Bark:让狗狗听懂人话!全球首个AI"狗语"生成器,137种狗狗口音任君挑选
ElevenLabs推出的Text to Bark是全球首个能将文本转换为逼真狗吠声的AI模型,支持多种犬种选择并适配智能家居设备,其核心技术基于深度神经网络训练。
2311 15
Text to Bark:让狗狗听懂人话!全球首个AI"狗语"生成器,137种狗狗口音任君挑选

热门文章

最新文章