CodeGeeX虚拟机配置教程:VMware与VirtualBox详解
在虚拟机环境中成功部署并本地调用CodeGeeX模型,必须同时满足四个硬性前提:GPU加速直通、充足内存资源、隔离的Python环境、模型目录可写权限。缺一不可,没有捷径可走。
最容易踩的坑有四个:GPU直通缺失、内存不足10GB、Python环境未隔离、模型目录无写权限。每个环节都是硬性要求。若使用VMware Workstation,还需手动编辑.vmx配置文件;VirtualBox则彻底无缘CUDA加速,直接排除。
验证虚拟机GPU直通与CUDA加速能力
在终端执行nvidia-smi命令。若返回“NVIDIA-SMI has failed”报错,表明GPU直通未启用或驱动安装有误。此时CodeGeeX推理速度将极其缓慢,甚至无法启动。
关键注意:VMware Workstation Pro默认不支持GPU直通,仅ESXi和VMware Fusion(macOS)可配置。VirtualBox则完全不支持CUDA。因此,需使用GPU推理时,直接放弃VirtualBox,转用VMware ESXi或物理机部署,切勿在此浪费精力。
若使用VMware Workstation 17或更高版本,可在.vmx配置文件末尾手动追加以下三行:
mks.enableGL = "TRUE"
mks.gl.allowBlacklistedDrivers = "TRUE"
svga.vramSize = "2048"
注意:添加配置后需完全关闭虚拟机再重新启动,否则设置不会生效。
配置充足内存与交换分区
CodeGeeX-4(7B参数)至少需要12GB RAM完成加载。若宿主机总内存≤16GB,建议为虚拟机分配≥10GB内存,并额外创建4GB交换分区以应对突发需求。
以CentOS/RHEL系统为例,创建交换文件的命令如下:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
务必将该条目追加到/etc/fstab中,否则重启后交换分区将失效:
/swapfile none swap sw 0 0
搭建隔离的Python环境并安装依赖
提供两种方式,推荐使用conda创建独立环境,操作更简洁。
方法一:使用conda(推荐)
首先下载Miniconda3(Linux x86_64版):
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
$HOME/miniconda3/bin/conda init bash
关闭终端重新打开,然后执行:
conda create -n codegeex python=3.10
conda activate codegeex
方法二:pip + venv(适用于Ubuntu/Debian)
首先安装系统级依赖:
sudo apt update && sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
随后创建虚拟环境:
python3 -m venv ~/codegeex-env
source ~/codegeex-env/bin/activate
重要提醒:Ubuntu 22.04及后续版本默认Python 3.10+,部分wheel包仍需手动编译。必须在activate激活虚拟环境后执行pip install,否则依赖将安装至系统Python,环境隔离将失效。
下载并加载CodeGeeX模型权重文件
第一步,从智谱AI官方GitHub仓库克隆模型加载脚本:
git clone https://github.com/THUDM/CodeGeeX.git
cd CodeGeeX
第二步,下载模型权重。需先登录Hugging Face并同意许可协议,然后访问链接 https://huggingface.co/THUDM/codegeex-4,点击“Files and versions”,下载pytorch_model.bin和config.json,并放置到本地./models/codegeex-4/目录中。
第三步,验证模型加载是否正常:
python -c "from codegeex.model import load_model; load_model('models/codegeex-4')"
若没有任何报错,且输出“Model loaded successfully”,则路径、格式、权限全部正确。
第四步,启动Web UI(默认监听127.0.0.1:8000端口):
python web_server.py --model-path models/codegeex-4 --port 8000
第五步,从宿主机访问虚拟机中的Web UI。确保虚拟机网络配置为NAT模式,并在VMware/VirtualBox设置中启用端口转发:主机端口8000映射到虚拟机IP:8000。随后在宿主机浏览器内打开http://localhost:8000即可开始交互。
