美文网首页程序员@IT·互联网
window 安装大模型 chatglm-6b

window 安装大模型 chatglm-6b

作者: shengjk1 | 来源:发表于2024-04-26 10:08 被阅读0次

    你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

    1. 了解大厂经验
    2. 拥有和大厂相匹配的技术等

    希望看什么,评论或者私信告诉我!

    一、 前言

    有大模型以来一直想尝试通过本地安装大模型,主要的原因是GPT众所众知的原因没有办法通过 API 访问,而国内的所谓的开发平台一方面要么不兼容 openai 的 api 要么就是价格不够友好,要么两者兼有,另外的话,开发平台也有所谓的隐私问题。另外公司内部虽然有已经部署好的开源大模型,但相应的服务中的 Temperautre 或者 Top 都已经被固定了,用起来特别没意思。

    所以想自己搞一套,喜欢自己说了算。

    二、准备工作

    2.1 电脑

    这是我工作使用的电脑配置,16G内存,Intel(R) 集成显卡。这里要吐槽一下,程序员千万不要使用 window,随便装点什么东西就很麻烦,用不了 mac 就用 linux,我这是公司电脑,后悔没早点装 unbantu 系统

    2.2 组件安装

    VS studio 2022

    cmake

    TDM-GCC,注意,安装的时候直接选择全部安装就好。安装完在cmd中运行”gcc -v”测试是否成功即可( 我的电脑需要重启后才能执行 gcc -v )

    2.3 开始安装

    因为公司电脑性能不行,所以我选择了 ChatGLM-6B,另外ChatGLM-6B完整版本需要13GB显存做推理,但是INT4量化版本只需要6GB显存即可运行,这里选择 INT4量化版

    2.3.1下载官方代码,安装Python依赖的库

    首先,我们需要从GitHub上下载ChatGLM的requirements.txt来帮助我们安装依赖的库。大家只需要在GitHub上下载requirements.txt即可。下载地址:https://github.com/THUDM/ChatGLM-6B


    这个文件记录了ChatGLM-6B依赖的Python库及版本,大家点击右上角Code里面有Download ZIP,下载到本地解压之后就能获取这个文件。然后执行如下命令即可:
      pip install -r requirements.txt
    

    注意,这是从cmd进入到requirements.txt文件所在的目录执行的结果,这部分属于Python基础,就不赘述了。

    需要注意的是,ChatGLM依赖HuggingFace的transformers库,尽管官方说:

    使用 pip 安装依赖:pip install -r requirements.txt,其中 transformers 库版本推荐为 4.27.1,但理论上不低于 4.23.1 即可。
    

    但是实际上,必须是4.27.1及以上的版本才可以,更低版本的transformers会出现如下错误:

    AttributeError: 'Logger' object has no attribute "'warning_once'"

    所以,一定要查看自己的transformers版本是否正确。

    另外,ChatGLM-6B依赖torch,如果你有GPU,且高于6G内存,那么建议部署GPU版本,但是需要下载支持cuda的torch,而不是默认的CPU版本的torch。具体可参考 :
    关于 AssertionError: Torch not compiled with CUDA enabled 问题

    2.3.2 下载INT4量化后的预训练结果文件

    在上述的依赖环境安装完毕之后,大家接下来就要下载预训练结果。

    INT4量化的预训练文件下载地址:https://huggingface.co/THUDM/chatglm-6b-int4/tree/main,需要魔法,如果没有魔法,可去 modelscope 搜索合适的版本

    需要注意的是,在GitHub上,官方提供了模型在清华云上的下载地址,但是那个只包含预训练结果文件,即bin文件,但实际上ChatGLM-6B的运行需要模型的配置文件,即config.json等,如下图所示:

    因此建议大家全部从HuggingFace上下载所有文件到本地。上述文件全部下载之后保存到本地的一个目录下即可,比如:

    D:\LLM

    2.3.3 Windows+CPU部署方案

    我的机器不支持CUDA,所以我们直接来看CPU方式

    运行部署CPU版本的INT4量化的ChatGLM-6B模型

    CPU版本量化模型的代码与GPU版本稍微有点差异,代码如下:

    from transformers import AutoTokenizer, AutoModel
    tokenizer = AutoTokenizer.from_pretrained("D:\LLM\chatglm-6b-int4", trust_remote_code=True, revision="")
    model = AutoModel.from_pretrained("D:\LLM\chatglm-6b-int4",trust_remote_code=True, revision="").float()
    model = model.eval()
    response, history = model.chat(tokenizer, "你好", history=[])
    print(response)
    

    一般都会报错

    在运行中遇到了如下错误提示:

    No compiled kernel found.
    Compiling kernels : C:\Users\在、xxx\.cache\huggingface\modules\transformers_modules\chatglm-6b-int4\quantization_kernels_parallel.c
    Compiling gcc -O3 -fPIC -pthread -fopenmp -std=c99 C:\Users\xxx\.cache\huggingface\modules\transformers_modules\chatglm-6b-int4\quantization_kernels_parallel.c -shared -o C:\Users\xxx\.cache\huggingface\modules\transformers_modules\chatglm-6b-int4\quantization_kernels_parallel.so
    Kernels compiled : C:\Users\xxx\.cache\huggingface\modules\transformers_modules\chatglm-6b-int4\quantization_kernels_parallel.so
    

    CPU版本的ChatGLM-6B部署比GPU版本稍微麻烦一点,主要涉及到一个kernel的编译问题。

    在安装之前,除了上面需要安装好requirements.txt中所有的Python依赖外,torch需要安装好正常的CPU版本即可。

    安装这个主要是为了编译之前下载的文件中的quantization_kernels.c和quantization_kernels_parallel.c这两个文件。如果大家

    那么就是这两个文件编译出问题了。那么就需要我们手动去编译这两个文件:

    在C:\Users\xxx.cache\huggingface\modules\transformers_modules\chatglm-6b-int4\本地目录下进入cmd,运行如下两个编译命令:

    gcc -fPIC -pthread -fopenmp -std=c99 quantization_kernels.c -shared -o quantization_kernels.so
    gcc -fPIC -pthread -fopenmp -std=c99 quantization_kernels_parallel.c -shared -o quantization_kernels_parallel.so
    

    如下图所示即为运行成功

    然后就可以在C:\Users\xxx.cache\huggingface\modules\transformers_modules\chatglm-6b-int4\目录下看到下面两个新的文件:quantization_kernels_parallel.so和quantization_kernels.so。说明编译成功,后面我们手动载入即可。

    在原来代码的基础上添加

    model = model.quantize(bits=4, kernel_file="C:\Users\xxx\.cache\huggingface\modules\transformers_modules\chatglm-6b-int4\\quantization_kernels.so")
    

    一行手动加载的内容。

    接下来你就可以看到如下界面:
    我这里把 quantization_kernels.so 放在了 D:\LLM\chatglm2-6b-int4 下面了


    输出结果

    你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。

    也就是CPU版本的ChatGLM-6B运行成功了!但很慢,所以可以考虑 CPP 加速!待后续输出!

    三、总结

    通过本文,读者可以了解到如何在个人电脑上部署ChatGLM-6B的INT4量化版本,同时作者也分享了他在安装过程中遇到的问题和解决方法,帮助读者顺利完成安装并运行大模型

    相关文章

      网友评论

        本文标题:window 安装大模型 chatglm-6b

        本文链接:https://www.haomeiwen.com/subject/mqloxjtx.html