当前位置: 首页 > ops >正文

大模型本地部署

概要:总结ollama、vllm部署大模型的特点、步骤及注意事项。

零、基础准备

如果你只有CPU,只想做一些简单测试,那么这步可以跳过。如果你想使用GPU,则需要先安装驱动。Windows就去官网下载安装包,如:NVIDIA-GRID-WHQL-512.95.exe。ubuntu推荐在【软件和更新】里的【附件驱动】里选择你要的版本,一键安装。通过命令行安装比较麻烦,容易出错。

一、ollama

ollama部署大模型,过程比较简单,不易出错。但缺点是并发性能较差,前段时间还爆出安全性问题。适合个人或实验阶段。支持llama、deepseek、千问等模型,框架支持mac、Linux、Windows。

mac和windows安装应用,可视化操作,没什么额外需要讲的。这里总结基于容器的部署。

1、拉取官方镜像

docker pull ollama/ollama

 如果不了解docker的,可以先看下这篇总结:

docker安装使用基础_docker 安装使用-CSDN博客

2、创建容器

# -v 是路径挂载,主要为了同步模型文件。/llm/models是宿主机的路径,名字无所谓
docker run -d --gpus=all -v /llm/models:/llm/models -v /llm/ollama:/root/.ollama -p 22515:11434 --restart=always --name ollama ollama/ollama

3、启动模型

# 进入容器
docker exec -it ollama /bin/bash/
# 执行,会自动下载模型文件,也可以自行下载后上传,将deepseek-r1:70b替换为你的路径
ollama run deepseek-r1:70b

 4、使用

启动后会自动进入对话窗,可以做一些简单测试。另外,默认开启API接口,使用postman测试如下:(注意:我对外的端口不是默认的11434)

二、vllm

相对于ollama,vllm部署大模型稍微复杂一点。但优势在于能够更好的使用多张显卡,提供多种加速推理的技术,如混合精度(FP16)和张量并行(Tensor Parallelism)等。推理速度和并发性能更强,适合企业正式部署。

1、拉取包含驱动的基础镜像

其实最复杂的就是驱动的问题,所以有现成的镜像可用,直接解决了一半问题。如果不想研究版本的,可以直接参考我的。

# 更多版本详见https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda-dl-base/tags
docker pull nvcr.io/nvidia/24.10-cuda12.6-devel-ubuntu22.04

2、创建容器

# --mount 路径挂载的另一种方式
docker run --restart=unless-stopped --mount type=bind,source=/AI-Agent/models,target=/AI-Agent/models --gpus all --name ai_model -p 22525:22525 -it your_image_id /bin/bash

3、配置容器环境

# 安装python环境,推荐conda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh  
# 创建一个新的python环境
conda create --name python311 python=3.11.11
conda activate python311
# 安装vllm
pip install vllm==0.8.0

4、启动模型

前面创建容器时,做了路径挂载,你需要把下载好的模型放到这个路径。

# CUDA_VISIBLE_DEVICES:指定使用的显卡编号
# tensor-parallel-size:张量并行数,和前面指定的显卡对应
# swap-space:每个GPU配置的内存交换 G
# max-num-seqs:并发数
# gpu-memory-utilization:每张显卡占用的上限
# --dtype half:半精度
# --max-model-len:输入token长度限制
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python -m vllm.entrypoints.openai.api_server --model /AI-Agent/models/deepseek-r1-70b --port 22525 --tensor-parallel-size 8 --swap-space 32 --max-num-seqs 16 --gpu-memory-utilization 0.8 --dtype half --max-model-len 10240

5、问题解决

如果你跟着上述步骤操作,那么大概率会遇到NCCL运行错误,通过增加参NCCL_DEBUG=INFO可以大致看到,启动时往路径/dev/shm写入文件失败。这是因为这个文件夹是默认的临时文件夹,容量受限,可以根据自己的模型大小修改。

重新生成容器:

docker run --shm-size=128G ……

 模型启动后,通过nvidia-smi命令查看显卡占用情况:

 6、调用接口

因为vllm的接口部分使用的是fastapi,其提供了一个文档接口,其中v1/chat就是对话窗口。兼容langchain中的ChatOpenAI接口。

http://www.xdnf.cn/news/9451.html

相关文章:

  • 内网穿透,代理服务,NAT
  • HTTP Accept简介
  • 鸿蒙---使用真机模拟器的时候,图片不加载问题
  • NV295NV306美光固态闪存NV313NW830
  • 决胜2025:企业级BI产品深度评测与选型指南
  • vue+elementUi+axios实现分页(MyBatis、Servlet)
  • Linux进程调度的理解
  • Web攻防-SQL注入增删改查HTTP头UAXFFRefererCookie无回显报错
  • Redis集群热点Key问题解决方案
  • 通过mailto:实现web/html邮件模板唤起新建邮件并填写内容
  • LabVIEW双光子荧光成像软件开发
  • 关于余数的定理
  • 【计算机网络】第1章:概述—分组延时、丢失和吞吐量
  • 大模型-高通性能测试工具介绍-1
  • 基于ESP-IDF的ESP32开发记录——如何建立一个队列
  • 使用Spring AI集成Perplexity AI实现智能对话(详细配置指南)
  • 【PhysUnits】13 改进减法(sub.rs)
  • Vue开发系列——Vue 生命周期钩子 及常见知识点
  • STP(生成树协议)原理与配置
  • XCTF-web-easyphp
  • BugKu Web渗透之source
  • 虚幻GamePlay框架
  • 《函数栈帧的创建和销毁》
  • AI--知识库RAG实战
  • @Transactional高级用法之传播机制
  • 基于对比学习的推荐系统开发方案,使用Python在PyCharm中实现
  • CSS3实现的账号密码输入框提示效果
  • 【25-cv-05894】Keith律所代理Jennifer Le Feuvre版权画
  • 大数据-273 Spark MLib - 基础介绍 机器学习算法 决策树 分类原则 分类原理 基尼系数 熵
  • pikachu靶场通关笔记06 XSS关卡02-反射型POST