GLM-4v-9b保姆级教程:Ubuntu 22.04 LTS全环境依赖安装与验证
想在自己的电脑上跑一个能看懂图片、还能跟你聊天的AI吗?今天,我们就来手把手教你,在Ubuntu 22.04系统上,从零开始安装和运行一个强大的多模态模型——GLM-4v-9b。
这个模型只有90亿参数,但本事不小。它能同时理解文字和图片,支持中文和英文对话。最厉害的是,它能直接处理1120×1120的高清大图,连图片里的小字和表格细节都能看清楚。在一些专业的看图测试里,它的表现甚至超过了GPT-4 Turbo和Claude 3 Opus这些业界大佬。
而且,它对咱们普通玩家特别友好。经过简单压缩后,模型大小只有9GB左右,一张RTX 4090显卡就能流畅运行。这意味着,你不需要昂贵的专业设备,就能在本地体验前沿的多模态AI能力。
接下来,我会带你一步步完成所有环境的搭建和验证,确保你一次成功。咱们开始吧。
1. 准备工作:理清思路与检查清单
在动手安装之前,我们先花几分钟,搞清楚我们要做什么,以及需要准备什么。这能帮你避免很多“做到一半卡住”的尴尬情况。
1.1 教程目标与最终效果
通过这篇教程,你将完成以下事情:
- 搭建完整环境:在Ubuntu 22.04系统上,安装运行GLM-4v-9b所需的所有软件和依赖库。
- 验证核心功能:运行一个简单的测试脚本,确认模型能正确加载,并且具备图文理解的能力。
- 获得一个可用的起点:得到一个干净、可复现的基础环境,你可以基于它进行更复杂的应用开发。
完成之后,你将能运行一个Python脚本,给模型一张图片和一段文字提问,然后得到模型的理解和回答。
1.2 你的电脑需要满足这些条件
请对照检查你的电脑,确保满足以下要求:
- 操作系统:Ubuntu 22.04 LTS。这是本教程的基准系统,其他版本可能需要对命令进行微调。
- 显卡(GPU):这是最重要的部分。你需要一张NVIDIA显卡,并且显存至少要有16GB。例如:
- RTX 4090 (24GB):完美运行,推荐。
- RTX 3090 (24GB):完美运行。
- RTX 4080 Super (16GB):刚好满足最低要求,可以运行量化后的模型。
- 如果显存小于16GB,运行完整的模型会非常困难,你可能需要考虑使用更强的量化版本(如INT8)或在CPU上运行(速度会慢很多)。
- 硬盘空间:至少需要30GB的可用空间,用于存放模型文件、Python环境以及各种依赖库。
- 网络:需要稳定的网络连接以下载模型文件(约18GB)和安装包。
如果你的设备符合条件,那太好了!我们继续。如果不符合,你可能需要先升级硬件,或者寻找云服务来运行。
2. 基础环境搭建:安装系统级依赖
这一部分,我们要为后续的Python和深度学习环境打好地基。请打开你的终端(Terminal)。
2.1 更新系统软件包列表
首先,我们更新一下系统的软件包列表,确保能安装到最新版本的软件。
sudo apt update2.2 安装必要的编译工具和库
GLM-4v-9b的某些底层依赖(比如用来加速计算的flash-attn)需要编译安装。因此,我们需要提前安装好编译工具和一些基础库。
运行以下命令,一次性安装它们:
sudo apt install -y build-essential cmake git wget curl software-properties-commonbuild-essential:包含了GCC编译器、make等核心编译工具。cmake:一个跨平台的编译配置工具,很多C++项目用它。git:版本控制工具,用于克隆代码仓库。wget和curl:命令行下载工具。software-properties-common:方便我们添加和管理软件源。
2.3 安装并配置Python环境
Ubuntu 22.04默认可能安装了Python 3.10,但我们建议使用更新的Python 3.10或3.11。这里我们通过deadsnakes这个PPA(个人软件包存档)来安装Python 3.11。
- 添加
deadsnakesPPA源:sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update - 安装Python 3.11和虚拟环境管理工具
python3.11-venv:sudo apt install -y python3.11 python3.11-venv python3.11-devpython3.11-dev:包含了Python开发所需的头文件和静态库,编译某些Python包时会用到。
2.4 安装NVIDIA显卡驱动与CUDA
这是让模型能在GPU上飞驰的关键。我们将使用Ubuntu官方推荐的ubuntu-drivers工具来安装。
首先,检查你的显卡型号,并查看推荐的驱动版本:
ubuntu-drivers devices在输出结果中,找到带有“recommended”标识的那一行,记住驱动版本号(例如
nvidia-driver-550)。安装推荐的驱动版本(请将下面的
550替换成你看到的版本号):sudo apt install -y nvidia-driver-550安装完成后,必须重启电脑以使驱动生效。
sudo reboot重启后,重新打开终端,验证驱动是否安装成功:
nvidia-smi你应该能看到一个表格,显示了你的GPU型号、驱动版本、CUDA版本等信息。如果能看到,恭喜你,驱动安装成功!
安装CUDA Toolkit。深度学习框架(如PyTorch)需要CUDA来调用GPU进行计算。我们安装CUDA 12.1(这是一个与当前主流深度学习库兼容性很好的版本)。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda-12-1将CUDA添加到系统环境变量,这样系统才能找到它。编辑你的shell配置文件(例如
~/.bashrc):echo 'export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc source ~/.bashrc验证CUDA安装:
nvcc --version如果显示CUDA 12.1的版本信息,说明安装成功。
至此,最复杂的基础系统环境已经搭建完毕。接下来,我们进入Python的世界。
3. 创建与配置Python虚拟环境
使用虚拟环境是一个好习惯,它能将不同项目的依赖隔离开,避免版本冲突。我们为GLM-4v-9b单独创建一个环境。
创建一个新的目录来存放我们的项目,并进入该目录:
mkdir -p ~/projects/glm-4v-9b-demo cd ~/projects/glm-4v-9b-demo使用Python 3.11创建一个名为
venv的虚拟环境:python3.11 -m venv venv激活虚拟环境:
source venv/bin/activate激活后,你的命令行提示符前面通常会显示
(venv),表示你现在处于这个虚拟环境中。后续所有pip install命令都需要在激活的环境下执行。升级
pip和setuptools到最新版:pip install --upgrade pip setuptools wheel
4. 安装深度学习框架与模型依赖
现在,我们来安装运行模型所需的Python库。核心是PyTorch和Hugging Face的transformers库。
4.1 安装PyTorch
根据我们安装的CUDA 12.1,去PyTorch官网找到对应的安装命令。在虚拟环境中执行:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu1214.2 安装Transformers及其他核心库
transformers库是Hugging Face提供的,用于加载和运行各种预训练模型的核心工具。
pip install transformers accelerate sentencepieceaccelerate:Hugging Face的库,用于简化混合精度训练和分布式推理。sentencepiece:分词器依赖。
4.3 安装视觉处理与加速库
GLM-4v-9b需要处理图片,并且我们希望能更快地运行它。
pip install pillow opencv-python-headless flash-attn --no-build-isolationpillow(PIL):Python最常用的图像处理库。opencv-python-headless:OpenCV的无头版本,用于更专业的图像读取和预处理。flash-attn:一个非常重要的注意力机制加速库,能显著提升模型推理速度。安装它可能需要几分钟时间编译。
4.4 可选:安装Jupyter Notebook(用于交互式测试)
如果你习惯在Notebook里写代码和看结果,可以安装它。
pip install jupyter环境依赖全部安装完毕!接下来,就是最激动人心的环节——下载模型并运行测试。
5. 下载模型与编写测试脚本
5.1 下载GLM-4v-9b模型
模型开放在Hugging Face Hub上。我们可以直接用transformers库在代码中下载,但为了更稳定,我们先使用git-lfs(大文件存储)来克隆仓库。
- 安装
git-lfs:sudo apt install -y git-lfs git lfs install - 克隆模型仓库(请注意,模型较大,约18GB,下载需要较长时间和稳定网络):
你可以去喝杯咖啡,耐心等待。如果网络不稳定导致中断,可以使用git clone https://huggingface.co/THUDM/glm-4v-9bgit lfs pull命令继续拉取。
5.2 编写一个简单的验证脚本
在项目根目录下,创建一个名为test_glm4v9b.py的Python文件。
# test_glm4v9b.py import torch from PIL import Image from transformers import AutoModelForCausalLM, AutoTokenizer # 1. 指定模型路径(指向你刚刚克隆下来的文件夹) model_path = "./glm-4v-9b" # 2. 加载模型和分词器 print("正在加载模型和分词器,这可能需要几分钟...") # 使用半精度(fp16)加载以节省显存 model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.float16, # 使用半精度 device_map="auto", # 自动将模型层分配到可用的GPU/CPU上 trust_remote_code=True # 信任来自作者的远程代码(GLM系列需要) ).eval() # 设置为评估模式,关闭dropout等训练层 tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) print("模型加载完毕!") # 3. 准备一张测试图片和问题 # 这里我们使用PIL创建一个简单的纯色图片作为示例 # 在实际应用中,你可以用 `Image.open("你的图片路径.jpg")` 来加载自己的图片 width, height = 224, 224 test_image = Image.new('RGB', (width, height), color='lightblue') question = "请描述这张图片。" # 4. 构建模型输入 # GLM-4v-9b 使用特定的聊天模板 messages = [ {"role": "user", "content": [{"type": "image"}, {"type": "text", "text": question}]} ] # 使用tokenizer的apply_chat_template方法构建输入 input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False) # 将文本和图片一起进行tokenize inputs = tokenizer([input_text], images=[test_image], return_tensors="pt").to(model.device) # 5. 生成回答 print("正在生成回答...") with torch.no_grad(): # 禁用梯度计算,节省内存 generated_ids = model.generate( **inputs, max_new_tokens=512, # 生成的最大新token数 do_sample=False, # 使用贪婪解码,结果更确定 temperature=0.1, ) # 6. 解码并打印输出 # 跳过输入部分,只解码新生成的token generated_ids_trimmed = generated_ids[:, inputs['input_ids'].shape[1]:] if generated_ids.shape[1] > inputs['input_ids'].shape[1] else generated_ids output_text = tokenizer.batch_decode(generated_ids_trimmed, skip_special_tokens=True)[0] print("\n" + "="*50) print("用户问题:", question) print("模型回答:", output_text) print("="*50) # 7. 打印显存使用情况(可选) if torch.cuda.is_available(): print(f"\nGPU显存使用: {torch.cuda.memory_allocated() / 1024**3:.2f} GB")这个脚本做了以下几件事:
- 加载我们下载的模型和分词器。
- 创建一张简单的蓝色图片作为输入。
- 按照GLM-4v-9b要求的格式,把图片和文字问题组合起来。
- 让模型根据图片和问题生成一段描述。
- 把模型生成的结果打印出来。
6. 运行验证与结果分析
万事俱备,只欠东风。在终端里(确保虚拟环境venv是激活状态),运行我们的测试脚本:
python test_glm4v9b.py第一次运行会需要一些时间,因为transformers库会检查并可能下载一些额外的配置文件。模型本身已经在我们本地了,所以不会重复下载。
如果一切顺利,你将会看到类似以下的输出:
正在加载模型和分词器,这可能需要几分钟... 模型加载完毕! 正在生成回答... ================================================== 用户问题: 请描述这张图片。 模型回答: 这张图片是一个简单的纯色矩形,颜色是浅蓝色。它没有包含任何具体的物体、纹理或图案。 ================================================== GPU显存使用: 15.32 GB恭喜你!这标志着你的GLM-4v-9b环境已经成功安装并运行起来了!
6.1 结果解读与验证要点
- 功能验证成功:模型正确识别了我们用代码生成的“浅蓝色矩形”图片,并给出了合理的描述。这说明模型的视觉编码器和语言模型部分协同工作正常。
- 显存占用:脚本显示使用了约15.3GB显存。这符合GLM-4v-9b模型以
fp16精度加载时的预期(约18GB),剩余的显存用于计算过程中的中间变量。如果你的显存刚好16GB,这个占用是安全的。 - 响应速度:第一次生成可能稍慢,因为涉及模型加载和编译。后续在同一进程中的生成会快很多。
6.2 进行更多测试(可选)
为了进一步验证环境,你可以修改测试脚本:
- 使用真实图片:将创建
test_image的那行代码,替换为Image.open(“你的照片路径.jpg”)。 - 尝试不同问题:修改
question变量,例如:“图片里有什么?”“这张图片的背景色是什么?”“根据这张图片,写一个简短的故事。”
- 测试中文能力:直接用中文提问,例如
“描述一下这张图。”
7. 总结与后续步骤
回顾一下,我们完成了从零开始,在Ubuntu 22.04上部署GLM-4v-9b多模态模型的全部过程:
- 检查了硬件和系统要求。
- 安装了系统级依赖,包括编译工具、Python 3.11和NVIDIA驱动与CUDA。
- 创建了独立的Python虚拟环境,并安装了PyTorch、Transformers、Flash-Attn等所有必要的库。
- 下载了GLM-4v-9b模型权重。
- 编写并运行了验证脚本,成功让模型描述了一张图片,确认环境完全可用。
你现在拥有的是一个强大的本地多模态AI底座。接下来,你可以:
- 探索更多功能:查阅 GLM-4V-9B 官方文档,了解如何用它进行图表理解、文档问答等更复杂的任务。
- 集成到应用中:将模型封装成API服务(例如使用FastAPI),为你自己的应用提供视觉问答能力。
- 尝试量化:如果你的显存紧张,可以探索使用
bitsandbytes库进行INT8或INT4量化,进一步降低显存需求。 - 使用WebUI:部署类似Gradio或Streamlit的交互式网页界面,用更直观的方式和模型对话。
遇到问题别担心,这是学习过程的一部分。请确保所有步骤都严格按照教程进行,并仔细核对命令的输出信息。祝你玩得开心!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。