模型的不同部署方式
一、应用程序ollama
-
Ollama是一个应用程序,让用户能够轻松下载、运行和使用各种大型语言模型
-
它在底层使用llama.cpp作为推理引擎,增加了模型管理、会话管理等功能

二、模型推理框架
市面上有许多模型推理框架,如llama vllm等
vLLM 的 --model 指向文件夹(内含 config.json、*.safetensors 等多个文件),而 llama.cpp 的 -m 指向单个 .gguf 文件
| 框架名称 | 核心特点与定位 | 硬件与环境 | 模型格式 | 性能与场景 |
|---|---|---|---|---|
| vLLM | 高吞吐、内存管理标杆 核心是 PagedAttention 技术,可显著提升显存利用率和并发能力。 |
NVIDIA GPU (CUDA) | Safetensors, PyTorch | 极高吞吐,适合高并发API、大规模生产部署。 |
| TensorRT-LLM | NVIDIA 生态的极致性能 NVIDIA官方出品,通过算子融合和FP8等深度优化,将GPU性能压榨到极限。 |
NVIDIA GPU (专用) | 需转换为TensorRT格式 | 极致延迟,适合对响应速度要求极高的场景。 |
| TGI | Hugging Face 官方方案 与HF生态无缝集成,开箱即用,提供Docker镜像,部署最便捷。 |
NVIDIA, AMD GPU | Safetensors, PyTorch | 性能稳定可靠,适合快速部署和企业级应用。 |
| llama.cpp | 轻量级、本地运行首选 主打一个“能跑”,无需高端显卡,在CPU、Mac (Metal) 上就能流畅运行。 |
CPU, Apple Silicon, GPU | GGUF (专属) | 资源占用极低,适合个人设备、边缘计算。 |
| LMDeploy | 一站式LLM部署工具箱 由上海人工智能实验室开源,集成了高效的 TurboMind推理引擎,功能全面。 |
NVIDIA GPU | HuggingFace格式 | 均衡且强大,在推理性能和功能丰富度上表现出色。 |
| SGLang | 复杂逻辑与结构化输出 擅长处理多轮对话、工具调用,其 RadixAttention技术在多轮场景下吞吐量极高。 |
NVIDIA GPU | Safetensors, PyTorch | 缓存效率极高,适合复杂逻辑编排和结构化数据生成(如JSON)。 |
| Triton | 企业级推理服务器 NVIDIA出品,支持多模型、多框架、动态批处理,是云原生环境下的全能选手。 |
NVIDIA GPU (为主) | 支持PyT, TF, ONNX等 | 功能最全面,适合大型系统集成和复杂流水线。 |
2.1.模型文件类型
| 格式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| GGUF | 本地推理、CPU/GPU 部署 | 轻量、跨平台、量化成熟 | 主要用于推理,不适合训练 |
| PyTorch/Safetensors | 训练、高精度服务 | 完整、官方支持 | 体量大、显存要求高 |
| ONNX | 跨框架推理 | 通用 | 大模型优化不如 GGUF |
| MLX | Apple 生态 | 极致优化 | 平台锁定 |
2.2.模型文件下载
可到模搭社区找到模型文件ModelScope 魔搭社区
2.2.1安装modelscope
前提:安装python环境,安装modelscope,配置python、modelscope环境变量
pip install -U modelscope
2.2.2下载模型文件(llama.cpp举例)
modelscope download --model=qwen/Qwen2.5-7B-Instruct-GGUF --include "qwen2.5-7b-instruct-q5_k_m*.gguf" --local_dir .

2.2.2下载结果

2.2.1合并
对于分割的文件,你需要首先使用 llama-gguf-split 命令进行合并
linux指令
# ./llama-gguf-split --merge <第一个分割文件路径> <合并后文件路径>
./llama-gguf-split --merge qwen2.5-7b-instruct-q5_k_m-00001-of-00002.gguf qwen2.5-7b-instruct-q5_k_m.gguf
2.3启动
llama-cli -m Llama-3.2-3B-Instruct-Q8_0.gguf
三.docker model
Docker 官方推出的、专门用于AI 大模型容器化管理与一键推理运行的工具
1.拉取模型文件及环境
docker model pull 拉取模型权重文件且带运行环境
docker pull 拉取的话只能拉有模型权重文件的镜像,不带运行环境(镜像不允许同时有模型文件和环境)

2.运行模型文件
docker model run
(我这里内存不够了)

四、docker
4.1运行框架环境,挂载模型
docker运行vllm镜像,并且挂载模型位置
docker run --gpus all \ -p 8000:8000 \ --ipc=host \ -v /path/to/your/models:/models \ vllm/vllm-openai:latest \ --model /models/Qwen2.5-7B-Instruct
模型实例:
my_local_model/ # 这是你的模型文件夹,文件夹名字可以随意起
├── config.json # 【必需】模型的核心配置文件(如层数、注意力头数等)
├── model.gguf # 【必需】模型权重文件,也可能叫 pytorch_model.bin
├── tokenizer_config.json # 【必需】分词器的配置文件
├── tokenizer.json # 【必需】分词器需要的词表文件
└── special_tokens_map.json # 【可选】特殊标记的映射配置
4.2docker compose
环境变量修改方便:只需要修改一个环境变量,就能切换不同的模型。
version: '3.8'
services:
vllm:
image: vllm/vllm-openai:latest
container_name: vllm-server
restart: unless-stopped
ports:
- "8000:8000"
environment:
- HUGGING_FACE_HUB_TOKEN=${HF_TOKEN:-} # 可选:私有模型需要
volumes:
# 挂载模型缓存目录,避免重复下载
- ~/.cache/huggingface:/root/.cache/huggingface
# 如果你有本地下载好的模型,也可以挂载本地目录
- /path/to/your/local/models:/models
command:
- --model ${MODEL_NAME:-Qwen/Qwen2.5-7B-Instruct} # 通过环境变量指定模型
- --served-model-name ${SERVED_NAME:-my-model}
- --max-model-len ${MAX_MODEL_LEN:-4096}
- --tensor-parallel-size ${TP_SIZE:-1}
- --gpu-memory-utilization ${GPU_MEM_UTIL:-0.9}
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
ipc: host
stdin_open: true
tty: true
更多推荐



所有评论(0)