大模型部署文档

一、系统准备
例:x86-64,NVIDIA GPU,16G+ RAM,50G+ System SSD,Data Volume。
系统:Ubuntu20.04
1. 配置网络
尽可能确保系统能够顺利访问Github、HuggingFace。
推荐:Clash
clash-for-linux-master/.env文件内配置订阅链接 & 自定义UI访问密码(可选)
配置wget代理:
1 | # /etc/wgetrc |
2. 更新系统
在开始安装之前,先更新系统软件包:
1 | sudo apt update |
3. 安装NVIDIA驱动程序(以driver 555 & CUDA 12.5为例)
完整教程:NVIDIA CUDA Installation Guide for Linux
确认gcc已安装 :
1
2apt -y install gcc
gcc --version-
1
2dpkg -l | grep nvidia
apt-get --purge remove "*nvidia*" 安装驱动 :
1
2
3
4
5
6
7
8
9> Base Installer:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.5.1/local_installers/cuda-repo-ubuntu2004-12-5-local_12.5.1-555.42.06-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-5-local_12.5.1-555.42.06-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-5-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-51
2
3> Driver Installer:
sudo apt-get install -y cuda-drivers重启系统以应用更改:
1
sudo reboot
确认驱动程序安装成功:
1
nvidia-smi
如果安装成功,将看到GPU的相关信息。
4. 安装Miniconda
由于不同的大模型所需的环境各不相同,为了保护系统、避免冲突,可以使用Miniconda 灵活创建多个虚拟环境。
自定义conda安装路径
1
mkdir -p /path/to/your/conda #自定义conda安装位置,若系统盘小于50G将很快全部占满,强烈建议将conda安装在数据盘
下载conda安装脚本
1
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /path/to/your/conda/miniconda.sh
安装conda
1
2bash /path/to/your/conda/miniconda.sh #按照脚本提示一步步完成安装
rm -f /path/to/your/conda/miniconda.sh #安装完成后,安装脚本可删去初始化bash环境
1
/path/to/your/conda/bin/conda init bash
确认环境存储目录与包存储目录都在设定的路径:
1 | conda info |
查看当前环境列表:
1 | conda info -e |
二、部署自带Web Demo的模型
以百川大模型Baichuan2 为例
选择模型为:例Baichuan2-13B-Chat
1. 创建新环境
首先确认要部署的大模型的python版本要求。例:3.12
1 | conda create -n baichuan2 python=3.12 #虚拟环境名字自拟 |
2. 激活环境
进入该环境下。
1 | conda activate baichuan2 |
3. 克隆仓库
模型不要存放在系统盘。
目录结构为:/yourpath/Baichuan2/Baichuan2-13B-Chat/
克隆Github仓库
1
2cd /yourpath/
git clone [email protected]:baichuan-inc/Baichuan2.git克隆模型仓库
需要为git安装git-lfs 才可支持直接克隆大文件;也可手动wget大文件。可根据官方文档任选合适的git-lfs安装方法
若模型在魔塔社区 有仓库,强烈建议直接拉取魔塔社区的仓库。
1
2
3
4
5cd /yourpath/Baichuan2/
# ModelScope
git clone https://www.modelscope.cn/baichuan-inc/Baichuan2-13B-Chat.git
# HuggingFace
git clone https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat
4. 安装依赖
现在,/yourpath/Baichuan2/ 内应当有:
1 | . |
按照仓库要求安装需要的包
1
2# 其中未明确版本的包先参考 `4.2.解决可能出现的报错` 的稳定包版本👇
pip install -r requirements.txt解决可能出现的报错
已知百川2的requirements对版本要求不严格,安装的包版本过新可能导致报错,
如下是第三方包的稳定版本 。1
2
3
4
5
6pip install triton==2.0.0
pip install torch==2.0.1
pip install transformers==4.33.3
pip install xFormers==0.0.20
pip install bitsandbytes==0.41.3.post2
pip install scipy==1.11.4不同的大模型部署时可能出现的报错也不同,需根据log具体分析。
多数启动时的报错都是缺少依赖导致的,还有少数是因为包版本不兼容。
5. 启动模型
命令行工具方式
本命令行工具是为 Chat 场景设计,不支持使用该工具调用 Base 模型。
首先需修改cli_demo文件内的模型路径:
1
2
3
4
5
6
7
8
9
10
11
12# cli_demo.py
...
def init_model():
print("init model ...")
model = AutoModelForCausalLM.from_pretrained(
"baichuan-inc/Baichuan2-13B-Chat", # 将这里改为实际本地路径
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
...
# 其余位置同理启动模型:
1
python cli_demo.py
网页 demo 方式
依靠 streamlit 运行以下命令,会在本地启动一个 web 服务,浏览器可直接访问log中给出的地址。
本网页 demo 工具是为 Chat 场景设计,不支持使用该工具调用 Base 模型。首先需修改cli_demo文件内的模型路径:
1
2
3
4
5
6
7
8
9
10
11# web_demo.py
...
def init_model():
model = AutoModelForCausalLM.from_pretrained(
"baichuan-inc/Baichuan2-13B-Chat", # 将这里改为实际本地路径
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
...
# 其余位置同理启动模型:
1
streamlit run web_demo.py
三、部署Ollama & Open-WebUI
通过部署Ollama与Open-WebUI,运行并快速切换多个大模型(例:llama3 及Llama3-70B-Chinese-Chat-GGUF-4bit )。
1. 创建新环境
Open-WebUI的pip install安装方式要求Python版本>=3.11,
因此假设新环境安装Python版本3.12。
1 | conda create -n ollama python=3.12 #虚拟环境名字自拟 |
2. 激活环境
进入该环境下。
1 | conda activate ollama |
3. 部署Ollama
Ollama 是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。
以下是其主要特点和功能概述:
- 简化部署:Ollama 目标在于简化在 Docker 容器中部署大型语言模型的过程,使得非专业用户也能方便地管理和运行这些复杂的模型。
- 轻量级与可扩展:作为轻量级框架,Ollama 保持了较小的资源占用,同时具备良好的可扩展性,允许用户根据需要调整配置以适应不同规模的项目和硬件条件。
- API支持:提供了一个简洁的 API,使得开发者能够轻松创建、运行和管理大型语言模型实例,降低了与模型交互的技术门槛。
- 预构建模型库:包含一系列预先训练好的大型语言模型,用户可以直接选用这些模型应用于自己的应用程序,无需从头训练或自行寻找模型源。
- 模型导入与定制:
从 GGUF 导入:支持从特定平台(如GGUF,假设这是一个模型托管平台)导入已有的大型语言模型。
从 PyTorch 或 Safetensors 导入:兼容这两种深度学习框架,允许用户将基于这些框架训练的模型集成到 Ollama 中。
自定义提示:允许用户为模型添加或修改提示(prompt engineering),以引导模型生成特定类型或风格的文本输出。- 跨平台支持:提供针对 macOS、Windows(预览版)、Linux 以及 Docker 的安装指南,确保用户能在多种操作系统环境下顺利部署和使用 Ollama。
- 命令行工具与环境变量:
命令行启动:通过命令 ollama serve 或其别名 start 可以启动 Ollama 服务。
环境变量配置:如 OLLAMA_HOST,用于指定服务绑定的主机地址和端口,默认值为 127.0.0.1:11434,用户可以根据需要进行修改。
安装Ollama:
1
curl -fsSL https://ollama.com/install.sh | sh
自定义Ollama模型存储路径:
1
2# ollama默认将模型存储在/usr/share/ollama/.ollama/models/下,强烈建议将模型存储路径设置在数据盘
export OLLAMA_MODELS=/yourpath/ollama/models # 自定义启动Ollama:
1
2
3
4
5ollama serve
# 后台运行:
ollama serve &
# 确认服务已启动:
ss -ntlp | grep ollamaOllama常用命令:
1
2
3
4# 查看模型列表
ollama list
# 查看正在运行的模型
ollama ps
4. 部署Open-WebUI
Open WebUI (以前称为Ollama WebUI)是一款面向大型语言模型(LLMs)的用户友好型Web界面,支持Ollama和兼容OpenAI的API运行。通过一个直观的界面,它为用户提供了一种便捷的方式,与语言模型进行交互、训练和管理。
其主要特点有:
- 用户界面:仿照 ChatGPT 设计的聊天界面,直观易用。
- 响应设计:无论是桌面还是移动设备,都能提供流畅的体验。
- 高效响应:快速且响应敏捷的性能。
- 简易设置:支持通过 Docker 或 Kubernetes 进行无忧安装。
- 代码语法高亮:改善代码的可读性。
- Markdown 和 LaTeX 支持:丰富的交互体验。
- 集成文档互动:支持从聊天中直接加载文档或文件。
- Web 浏览功能:在聊天中直接集成网页内容。
安装Open-WebUI:
Open-WebUI支持多种部署方式。
根据官方文档 ,Open-WebUI推荐使用Docker部署,也支持k8s、Helm部署,
pip安装(Beta阶段)、Github仓库部署、编译安装以及Docker Compose。
在网络通畅的情况下,实测pip install方式省心省力,运行正常。1
pip install open-webui
启动Open-WebUI:
1
2
3
4# 建议首次启动不要后台运行,便于查看log:
open-webui serve
# 后台静默运行:
nohup open-webui serve >/dev/null 2>&1 &浏览器打开 ip:8080 即可访问。
5. 添加大模型
Ollama支持直接从官方仓库拉取模型(类似拉取Docker镜像),也支持模型导入与定制。
直接拉取模型:
例:llama3:latest。1
2# 请先确认Ollama模型存储路径!若未配置成功,Ollama将会存储模型到默认位置。
ollama pull llama3拉取成功后,Open-WebUI将会自动检测到该模型,选择新对话——>选择该模型,此时已直接可用。
从GGUF文件导入:
例:shenzhi-wang/Llama3-70B-Chinese-Chat-GGUF-4bit1
2
3git clone https://huggingface.co/shenzhi-wang/Llama3-70B-Chinese-Chat-GGUF-4bit
# or just:
wget https://huggingface.co/shenzhi-wang/Llama3-70B-Chinese-Chat-GGUF-4bit/resolve/main/Llama3-70B-Chinese-Chat-q4_0.gguf?download=true创建ModelFile文件(文件名自拟):
1
2# ./ModelFile
FROM /yourpath/Llama3-70B-Chinese-Chat-GGUF-4bit/Llama3-70B-Chinese-Chat-q4_0.gguf将Llama3-70B-Chinese-Chat-q4_0.gguf导入Ollama
1
ollama create Llama3-70B-Chinese-Chat-GGUF-4bit --file ./ModelFile
等待时间可能很长。完成后,Open-WebUI将会自动检测到该模型,选择新对话——>选择该模型,此时已直接可用。
从Safetensors文件导入:
如果导入的模型是以下架构之一,则可以通过 Modelfile 直接导入 Ollama:- LlamaForCausalLM
- MistralForCausalLM
- GemmaForCausalLM
1
2# ./ModelFile
FROM /path/to/safetensors/directory