Ubuntu本地部署大模型环境指南
-
Ubuntu本地部署各种大模型环境
本教程基于:
**Ubuntu Server 22.04.3 LTS
Driver 550.144.03 / CUDA 12.41. 系统配置
1.1 root账户设置密码
当前普通用户界面下输入命令,然后按提示两次输入密码即可。
sudo passwd root
1.2 SSH配置
# 查看是否安装了SSH服务 ps -ef | grep ssh # 没有安装的话,执行下面语句 sudo apt update # 先更新下资源列表 sudo apt install openssh-server # 安装openssh-server sudo ps -ef | grep ssh # 查看是否安装成功 sudo systemctl restart ssh # 重新启动SSH服务 # 进入ssh配置文件 sudo vim /etc/ssh/sshd_config
PermitRootLogin是一个用于配置SSH服务器的选项。这个选项决定了是否允许root用户通过SSH直接登录到服务器。通常情况下,为了提高安全性,最好禁止root用户通过SSH直接登录,而是使用一个普通用户登录后再通过su或者sudo切换到root用户来执行需要特权的操作。这样可以降低系统受到攻击的风险。
常见的PermitRootLogin选项取值包括:
yes
:允许root用户通过SSH直接登录no
:禁止root用户通过SSH直接登录without-password
:允许root用户通过SSH密钥登录,但不允许使用密码登录
按i进入编辑模式,找到
#PermitRootLogin prohibit-password
,默认是注释掉的。
把PermitRootLogin without-password
改为PermitRootLogin yes
,注意PermitRootLogin without-password
被注释掉了,要去掉注释。如果没有找到PermitRootLogin without-password
,直接文件末尾添加PermitRootLogin yes
即可。然后按esc,输入:wq保存并退出。1.3 重启sshd服务
sudo systemctl restart ssh
2. 安装Docker
2.1 准备条件
# 安装前先卸载操作系统默认安装的docker apt remove docker docker-engine docker.io containerd runc # 安装必要支持 apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
2.2 准备安装
# 添加Docker官方GPG key(可能国内现在访问会存在问题) curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 阿里源(推荐使用阿里的gpg KEY) curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 添加apt源: # Docker官方源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null # 阿里apt源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null # 更新源 apt update apt-get update
2.3 安装Docker
# 安装最新版本的Docker apt install docker-ce docker-ce-cli containerd.io # 等待安装完成 # 查看Docker版本 docker version # 查看Docker运行状态 systemctl status docker
3. 安装NVIDIA驱动
3.1 更新系统
# 确保系统已更新到最新版本 apt update apt upgrade -y
3.2 安装依赖项
apt install -y build-essential dkms
3.3 禁用Nouveau驱动
Nouveau是开源的NVIDIA驱动,可能与官方驱动冲突。
# 创建配置文件: vim /etc/modprobe.d/blacklist.conf # 添加以下内容: blacklist nouveau options nouveau modeset=0 # 更新initramfs: update-initramfs -u # 重启服务器: reboot # 检查nouveau是否关闭成功,应当无输出 lsmod | grep nouveau
3.4 安装驱动
3.4.1 在线安装
apt install nvidia-driver-550 -y apt update # 安装完成后,重启服务器
3.4.2 本地安装
# 下载并安装NVIDIA驱动包 # 下载的文件放在:/data/program/目录下 cd /data/program dpkg -i nvidia-linux-grid-550_550.144.03_amd64.deb apt install -y cuda-drivers apt update # 安装完成后,重启服务器
3.5 验证安装
nvidia-smi
4. 安装CUDA
4.1 在线安装
# 安装zlib1g库 apt install zlib1g -y # 下载cuda wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run # 安装cuda sh cuda_12.4.1_550.54.15_linux.run
4.2 离线安装
cd /data/program # 添加执行权限 chmod +x cuda_12.4.0_550.54.14_linux.run # 执行脚本 ./cuda_12.4.0_550.54.14_linux.run
执行后要等一会加载,然后进入交互式界面,按如下步骤操作:
- 提示已经存在驱动…选择continue
- 阅读并接受协议,输入accept回车
- 上下光标选中 Driver列,按空格以取消勾选驱动,再选择Install回车
- 等待安装完成
4.3 更新环境
# 在/root/.bashrc文件末尾输入: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.4/lib64 export PATH=$PATH:/usr/local/cuda-12.4/bin export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-12.4 # 执行 source /root/.bashrc # 验证 nvcc --version systemctl status nvidia-persistenced
5. Docker Nvidia部署
5.1 安装NVIDIA Container Toolkit
Docker默认不支持GPU,需先安装NVIDIA官方提供的容器工具包:
# 添加NVIDIA仓库 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list apt update apt install -y nvidia-container-toolkit nvidia-container-runtime
5.2 检查Docker默认运行时配置
确保Docker的默认运行时为
nvidia
,编辑/etc/docker/daemon.json
:{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
重启Docker服务
systemctl daemon-reload systemctl restart docker
6. 部署modelscope下载模型
#安装pip apt install python3-pip # 安装modelscope #官方源 pip install modelscope #清华源 pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple # 下载模型 # 参考例子 modelscope download --model Valdemardi/DeepSeek-R1-Distill-Llama-70B-AWQ modelscope download --model Valdemardi/DeepSeek-R1-Distill-Qwen-32B-AWQ modelscope download --model Qwen/QwQ-32B-AWQ modelscope download --model Qwen/Qwen3-32B-AWQ modelscope download --model Qwen/Qwen2.5-VL-32B-Instruct-AWQ modelscope download --model Qwen/Qwen3-Reranker-0.6B # 如果不设置下载路径将默认保存在下面路径(user为实际用户名) # /home/user/.cache/modelscope/hub/models/Qwen/QwQ-32B-AWQ # 我是root用户,是以下路径 # /root/.cache/modelscope/hub/models/Qwen/QwQ-32B-AWQ
7. Xinference Docker部署
7.1 安装Xinference
7.1.1拉取镜像
#Dockerhub docker pull xprobe/xinference:latest #阿里源 docker pull registry.cn-hangzhou.aliyuncs.com/xprobe_xinference/xinference:latest #1 docker pull docker.1ms.run/xprobe/xinference:latest docker pull docker-pull.ygxz.in/xprobe/xinference:latest
7.1.2运行docker
docker run -d \ --name xinference \ --restart=always \ -v /root/.xinference:/root/.xinference \ -v /root/.cache/huggingface:/root/.cache/huggingface \ -v /root/.cache/modelscope:/root/.cache/modelscope \ -v /root/.xinference/log:/root/models/logs \ -e VLLM_WORKER_MULTIPROC_METHOD=spawn \ -e HF_ENDPOINT=https://hf-mirror.com \ -p 9997:9997 \ --shm-size=16g \ --gpus all \ --ipc=host \ xprobe/xinference:latest \ xinference-local -H 0.0.0.0 --log-level debug
OAuth2 系统(待更新)
参考配置文件
# 大佬的配置 xinference launch --model-name qwen2.5-instruct --model-type LLM --model-engine vLLM --model-format awq --size-in-billions 72 --quantization Int4 --n-gpu 4 --replica 1 --n-worker 1 --model-path /root/models/Qwen2.5-72B-Instruct-AWQ --tensor_parallel_size 4 --gpu_memory_utilization 0.85 --max_model_len 16384 --block_size 32 --dtype half --disable_custom_all_reduce true # QWQ-AWQ xinference launch --model-name QwQ-32B --model-type LLM --model-engine vLLM --model-format awq --size-in-billions 32 --quantization Int4 --n-gpu 4 --replica 1 --n-worker 1 --download-hub modelscope --model-path /root/.cache/modelscope/hub/models/Qwen/QwQ-32B-AWQ --block_size 32 --gpu_memory_utilization 0.85 --max_model_len 40960 --tensor_parallel_size 4 --dtype half #DeepSeek-R1-Distill-Llama-70B xinference launch --model-name deepseek-r1-distill-llama --model-type LLM --model-engine vLLM --model-format awq --size-in-billions 70 --quantization Int4 --n-gpu 4 --replica 1 --n-worker 1 --download-hub modelscope --model-path /root/.cache/modelscope/hub/models/Valdemardi/DeepSeek-R1-Distill-Llama-70B-AWQ --reasoning-content false --block_size 32 --gpu_memory_utilization 0.85 --max_model_len 16384 --tensor_parallel_size 4 --dtype half #DeepSeek-R1-Distill-Qwen-32B xinference launch --model-name deepseek-r1-distill-qwen --model-type LLM --model-engine vLLM --model-format awq --size-in-billions 32 --quantization Int4 --n-gpu 4 --replica 1 --n-worker 1 --download-hub modelscope --model-path /root/.cache/modelscope/hub/models/Valdemardi/DeepSeek-R1-Distill-Qwen-32B-AWQ --reasoning-content false --block_size 32 --gpu_memory_utilization 0.8 --max_model_len 40960 --tensor_parallel_size 4 --dtype half xinference launch --model-name bge-m3 --model-type embedding --replica 1
查看日志
# 查看日志 docker logs -f xinference
8. Lmdeploy部署
8.1 Docker部署(推荐)
8.1.1 拉取镜像
docker pull openmmlab/lmdeploy:latest
8.1.2 启动镜像
参数详解
参数 值 说明 --model-name
Qwen/QwQ-32B-AWQ
服务中模型名称 --model-format
awq
指定模型格式为AWQ量化 --tp
4
张量并行(需要4块GPU) --server-port
8080
服务端口号 --api-keys
llm2025
API访问密钥 --log-level
INFO
日志记录级别 --cache-max-entry-count
0.75
KV Cache缓存比例(0~1之间) --max-batch-size
32
最大批处理大小 --session-len
12000
最大会话长度(tokens数) --quant-policy
8
KV量化策略:4表示int4量化,8表示int8量化 Qwen/QwQ-32B
docker run -d\ --it \ --name lmdeploy-QwQ-32B-AWQ \ --gpus all \ --shm-size 16g \ -v /root/.cache/modelscope/:/root/.cache/modelscope/ \ -v /root/.cache/huggingface/:/root/.cache/huggingface/ \ -p 23333:23333 \ --ipc=host \ openmmlab/lmdeploy:latest \ lmdeploy serve api_server /root/.cache/modelscope/hub/models/Qwen/QwQ-32B-AWQ \ --model-name Qwen/QwQ-32B-AWQ \ --model-format awq \ --tp 4 \ --server-port 23333 \ --api-keys llm2025 \ --log-level INFO \ --cache-max-entry-count 0.8 \ --max-batch-size 32 \ --session-len 16384 \ --quant-policy 8 \
Qwen/Qwen3-32B
docker run -d\ --it \ --name lmdeploy-Qwen3-32B-AWQ \ --gpus all \ --shm-size 16g \ -v /root/.cache/modelscope/:/root/.cache/modelscope/ \ -v /root/.cache/huggingface/:/root/.cache/huggingface/ \ -p 23333:23333 \ --ipc=host \ openmmlab/lmdeploy:latest \ lmdeploy serve api_server /root/.cache/modelscope/hub/models/Qwen/Qwen3-32B-AWQ \ --model-name Qwen/Qwen3-32B-AWQ \ --model-format awq \ --tp 4 \ --server-port 23333 \ --api-keys llm2025 \ --log-level INFO \ --cache-max-entry-count 0.75 \ --max-batch-size 64 \ --session-len 131072 \ --quant-policy 8 \
Qwen/Qwen2.5-VL-32B-Instruct-AWQ
docker run -d\ --it \ --name lmdeploy-Qwen2.5-VL-32B-AWQ \ --gpus all \ --shm-size 16g \ -v /root/.cache/modelscope/:/root/.cache/modelscope/ \ -v /root/.cache/huggingface/:/root/.cache/huggingface/ \ -p 23333:23333 \ --ipc=host \ openmmlab/lmdeploy:latest \ lmdeploy serve api_server /root/.cache/modelscope/hub/models/Qwen/Qwen2___5-VL-32B-Instruct-AWQ \ --model-name Qwen/Qwen2.5-VL-32B-AWQ \ --model-format awq \ --tp 4 \ --server-port 23333 \ --api-keys llm2025 \ --log-level INFO \ --cache-max-entry-count 0.2 \ --max-batch-size 32 \ --min-pixels 256 * 28 * 28 --max-pixels 1280 * 28 * 28 \ --session-len 32768 \ --quant-policy 8 \
8.2. conda环境下部署
8.2.1 安装miniconda环境
# 下载miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 执行安装 bash Miniconda3-latest-Linux-x86_64.sh
阅读许可协议并按Enter,然后输入yes接受许可协议。安装过程中,建议选择默认路径(如~/miniconda3)。
初始化环境变量:输入yes自动将Miniconda添加到~/.bashrc。# 运行脚本 source ~/.bashrc # 安装完成后,重新启动终端,或者手动执行下面 source ~/miniconda3/bin/activate # 完成后检测版本号 conda --version # 成功后升级conda文件 conda update conda
8.2.2 安装partial_json_parser(可选)
# 注意,如果出现ModuleNotFoundError: No module named 'partial_json_parser'报错,手动安装即可 pip install partial_json_parser
8.2.3 conda中部署Lmdeploy
# 创建conda环境 conda create -n lmdeploy python=3.11 -y # 在环境中安装lmdeploy conda activate lmdeploy # 官方pip下载 pip install lmdeploy # 清华镜像下载 pip install lmdeploy -i https://pypi.tuna.tsinghua.edu.cn/simple # 华为镜像下载 pip install lmdeploy -i https://mirrors.huaweicloud.com/repository/pypi/simple/
8.2.4 加载模型
# QWQ lmdeploy serve api_server /root/.cache/modelscope/hub/models/Qwen/QwQ-32B-AWQ \ --model-name Qwen/QwQ-32B-AWQ \ --model-format awq \ --tp 4 \ --server-port 23333 \ --api-keys llm2025 \ --log-level INFO \ --cache-max-entry-count 0.8 \ --max-batch-size 32 \ --session-len 16384 \ # Qwen/Qwen2.5-72B-Instruct lmdeploy serve api_server /root/.cache/modelscope/hub/models/Qwen/Qwen2.5-72B-Instruct-AWQ \ --model-name Qwen/Qwen2.5-72B-Instruct-AWQ \ --model-format awq \ --tp 4 \ --server-port 23333 \ --api-keys llm2025 \ --log-level INFO \ --cache-max-entry-count 0.8 \ --max-batch-size 32 \ --session-len 16384 \ --quant-policy 8