littlebot
Published on 2025-04-07 / 6 Visits
0

【源码】基于Python的InternLM2Chat7B(4bit量化)本地搭建项目

项目简介

本项目聚焦于在Windows系统的小显存机器(如LAPTOP RTX 3060)上,实现InternLM2-Chat-7B模型的4bit量化并本地搭建运行。通过解决bitsandbytes与triton只能在Linux上运行的限制,以及利用共享GPU显存等方法,让低配置机器也能体验大语言模型的对话功能。

项目的主要特性和功能

  1. 低显存运行:借助4bit量化技术,降低模型运行时的显存需求,使小显存机器可运行7B大语言模型。
  2. Windows系统适配:解决了bitsandbytes与triton在Windows系统下无法直接使用的问题,实现量化运行。
  3. 共享GPU利用:通过更新显卡驱动和创建张量的方式,利用共享GPU显存,缓解显存不足问题。
  4. 本地网页端对话:搭建完成后,可在本地网页端与模型进行对话交互。

安装使用步骤

环境准备

  1. 确保GPU为LAPTOP RTX 3060 ,系统为Windows 11,CUDA版本为11.7.64,显卡驱动版本为551.23,Python版本为3.10.13。
  2. 安装以下依赖库:
    • pytorch: 2.0.1
    • transformers:4.37.2
    • streamlit:1.30.0
    • bitsandbytes: 0.41.1
    • triton: 2.0.0

下载InternLM

  1. 创建项目目录如下(命名仅供参考): InternLM_Try │ └── ... └── InternLM2-Chat-7B └── ...
  2. 访问 InternLM2 HuggingFace 项目地址,下载项目文件至目录 InternLM_Try/InternLM2-Chat-7B
  3. 创建环境,假设虚拟环境名为 InternLM-env,执行以下命令安装依赖库: pip install modelscope pip install transformers pip install streamlit pip install sentencepiece pip install accelerate

修改配置并运行

python @st.cache_resource def load_model(): model = (AutoModelForCausalLM.from_pretrained('internlm/internlm2-chat-7b', trust_remote_code=True).to( torch.bfloat16).cuda()) tokenizer = AutoTokenizer.from_pretrained('internlm/internlm2-chat-7b', trust_remote_code=True) return model, tokenizer 调用命令: activate InternLM-env streamlit run web_demo.py --server.address 127.0.0.1 --server.port 6006 打开 https://127.0.0.1:6006 即可进行本地网页端对话。

4-bit量化

如果显存不够,需要进行4-bit量化: 1. 执行pip install -U bitsandbytes,并在函数加载时指定load_in_4bit=True。 2. Windows系统下量化大模型: - 确保bitsandbytes不报错:参考官方issues和一些有用的issue和comment进行相关修改,如修改site-packages\bitsandbytes\cuda_setup\main.py中函数返回值为.dll,修改编码问题等。 - 下载libbitsandbytes_cuda117.dll,并放到site-packages\bitsandbytes内。 - 在下载bitsandbytes前手动在环境变量LD_LIBRARY_PATH中添加CUDA的lib路径,可使用 set 在 cmd 内临时设置环境变量。 - 拷贝 CUDA 的 bin 内的文件至site-packages\bitsandbytes。 - 遇到No module报错直接pip安装(除非是linux专属)。 3. 下载triton:如果报错No Module 'triton',根据相关教程下载triton的.whl文件triton-2.0.0-cp310-cp310-win_amd64.whl

使用共享GPU

如果LAPTOP3060显存不足,可使用共享GPU: 1. 更新Nvidia显卡驱动至536.40+,可通过打开 GeForce Experience 软件直接下载。 2. 创建张量: activate InternLM-env python import torch a = torch.zeros((1000, 1000, 1000, 2), dtype = torch.int32, device = "cuda") 使用完后,释放张量和清理缓存: python del a torch.cuda.empty_cache() import gc gc.collect()

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】