本地部署LLM

1.为什么要本地部署LLM,这样做的优劣势有哪些

本地部署大模型的优劣势分析如下,结合技术实现与实用场景:

优势

  1. 数据安全可控

    隐私保护:敏感数据无需上传第三方服务器,避免泄露风险(如医疗、金融场景)。
    合规性:满足数据本地化存储的法规要求。

  2. 定制化能力

    模型微调:便于微调,可针对垂直领域数据二次训练(如法律条文、专业术语优化)。
    功能扩展:自由修改模型架构或接入本地API(如企业内部数据库)。

  3. 长期成本优势

    避免API计费:尤其适合高频调用场景(如每日百万级请求)。
    硬件复用:利用现有GPU服务器集群,分摊部署成本。

  4. 离线可用性:无网络依赖:在隔离环境(如内网、实验室)中稳定运行。

劣势

  1. 硬件门槛高:前期一次性投入高

显存需求:7B(全量)模型需24GB+显存(如A10G显卡),70B模型需多卡并行。
推理延迟:消费级GPU(如RTX 4090)可能无法满足实时性要求。

  1. 技术复杂度:需掌握模型量化(GGUF格式)、vLLM推理优化等技术。

  2. 资源消耗大

    电力成本:单卡A100运行24小时耗电约5-10度。
    散热要求:高负载下需专业机房或散热设备。

  3. 模型性能局限

    可能落后于云端版本:无法实时更新到最新版本,特别是针对于未开源的模型。
    功能缩减:本地部署通常需阉割多模态等能力如Qwen3。

2. LLM本地或云端部署有哪些可选择的框架(应用)

特性分析

特性

Ollama

LMStudio

Xinference

vLLM

开源情况

开源

不开源免费使用

开源

开源

开源协议

MIT

-

Apache2

Apache2

部署环境

多种

多种

linux/docker

linux

部署模型容易程度

简单

简单

复杂

复杂

模型格式

gguf

gguf

safetensors等

safetensors等

可调用模型多样性

单一

单一

多样

多样

模型推理效率

一般

一般

一般

较高

模型并发支持情况

一般

一般

一般

较好

多卡支持情况

一般

一般

一般

较好

部署教程

  1. Ollama:https://www.eogee.com/article/detail/9

  2. LMStudio: https://www.eogee.com/article/detail/10

  3. Xinference: https://www.eogee.com/article/detail/33

  4. vLLM: https://www.eogee.com/article/detail/37

3.有哪些基础概念需要了解

开源

指的是该框架(应用)代码是否开放,是否可以获得源代码,是否可以修改,是否可以商业使用,是否可以了解运行原理,有无数据泄露或侵犯隐私的可能。

开源协议

  • Apache2.0:

    • 允许商用、修改和专利授权

    • 要求保留原始版权声明和许可证文件

    • 修改文件必须标注变更说明

    • 衍生作品可闭源(无需强制开源)

  • MIT:

    • 极简许可(仅需保留版权声明)

    • 允许任意使用/修改/商用/闭源

    • 无专利相关条款

    • 不要求衍生作品开源

运行环境

Linux/Windows/MacOS/Docker等,前3者是主流的操作系统,我们把运行在windows中的WSL2中的ubuntu也认为是Linux环境。而在该Linux环境中安装的docker,我们认为是docker环境。

Docker容器

Docker是一个开源的应用容器引擎,可以轻松打包、部署和运行应用程序,Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,以供其他用户一键式安装和运行。
一般情况下,docker与宿主环境是隔离的,所以会有网络链接桥的概念,即宿主环境与docker容器之间通过localhost/127.0.0.1可能无法直接进行通信,即不能实现请求的发送和响应。

局域网IP

局域网IP是指在同一个局域网内的计算机的IP地址,它是由网络管理员在网络中为局域网内的计算机分配的,是唯一的,可以被路由器识别和分配。
局域网IP地址通常以192.168.x.x、172.x.x.x、10.x.x.x开头。大部分情况下,我们可以通过不同环境、不同容器中的服务或客户端去访问局域网IP地址以避免前述问题。

大模型文件格式

  • gguf:(GPT-Generated Unified Format)是大语言模型的一种文件存储格式,主要特点如下:

    • 量化支持:支持多种量化级别(如Q4、Q8等),可在保持模型性能的同时大幅减小文件体积。

    • 快速加载:优化了模型加载速度,适合资源受限的环境使用。

    • 元数据集成:可包含模型架构、训练信息等元数据。

    • CPU推理优化:针对CPU推理进行了优化,可提升CPU推理速度。

  • safetensors:safetensors 是 Hugging Face 推出的一种安全高效的模型存储格式,存储原始浮点权重时体积较大,但可通过外部工具量化。Hugging Face 官方推荐,集成到 transformers 库支持 PyTorch/TensorFlow 原生加载。

Transformers

Transformers 是 Hugging Face 团队开发的开源 Python 库,专为自然语言处理(NLP)和计算机视觉(CV)任务设计,核心功能是提供预训练的 Transformer 架构模型及其工具链。以下是关键特性:

1、核心功能

  1. 预训练模型库:集成数千种模型,涵盖文本生成、分类、翻译等任务。
    统一接口:可以一键加载模型和分词器。
    多框架支持:兼容 PyTorch、TensorFlow等,支持跨框架模型转换。

2、技术特点

  1. 模块化设计:可灵活调用模型组件(如注意力层、嵌入层)。
    自动优化:支持混合精度训练(FP16)、梯度检查点等技术。
    安全格式:默认使用 safetensors 格式存储模型权重。

  2. 生态工具

    Tokenizers:高性能分词库。
    Datasets:提供一站式数据集加载与预处理。
    Hub:huggingface.com 模型共享平台(类似 “GitHub”)。

PyTorch

PyTorch 是由 Facebook(现 Meta)人工智能研究院开发的开源深度学习框架,专为灵活性和高性能设计。

功能类别

核心特性

典型应用场景

动态计算图

即时执行的 eager mode 调试<br>可实时修改网络结构<br>自动微分机制

科研实验、原型开发

GPU加速

原生 CUDA 支持<br>多 GPU 并行训练<br>混合精度训练

大规模模型训练

预构建模块

torch.nn 网络层<br>torch.optim 优化器<br>torchvision 视觉工具集

快速模型搭建

生产部署

TorchScript 序列化<br>ONNX 导出<br>移动端支持 (LibTorch)

模型服务化、端侧部署

分布式训练

多机多卡支持 (NCCL)<br>RPC 参数服务器<br>弹性训练

超大规模分布式训练

生态扩展

HuggingFace 兼容<br>模型量化<br>CUDA 内核扩展

工业级优化与扩展

CUDA

CUDA(Compute Unified Device Architecture)是NVIDIA推出的并行计算平台和编程模型,核心作用是利用GPU的强大算力加速计算任务。以下是分点说明:

  1. 本质理解

    硬件层面:CUDA是NVIDIA GPU的指令集架构,直接操作GPU的数千个计算核心。
    软件层面:提供C/C++/Python等语言的扩展(如CUDA C),允许开发者编写在GPU上运行的代码。

  2. 核心功能

    并行计算:将任务分解为数千个线程,同时处理各类复杂的计算任务。
    显存管理:提供API手动控制GPU显存(cudaMalloc、cudaMemcpy)。
    异构计算:协调CPU(主机)与GPU(设备)的协作。

  3. 应用场景

    深度学习:框架(如PyTorch)底层依赖CUDA加速运算。
    科学计算:气候模拟、分子动力学等需要高吞吐的计算。
    图形处理:实时渲染、光线追踪。

  4. 与PyTorch的关系:PyTorch调用CUDA API将计算任务分配到GPU。

  5. 优势与限制

    优势:显著提升计算速度(相比CPU),尤其适合规则数据并行。
    限制:仅支持NVIDIA GPU;需处理数据迁移和线程同步。

Conda

Conda 是一个开源的包管理与环境管理工具,以下是其核心要点:

  1. 核心功能

    包管理:安装、更新、删除软件包(支持Python与非Python工具链)。
    环境隔离:创建独立环境,解决依赖冲突(如同时维护PyTorch 1.8和2.0项目)。
    跨平台:支持Windows/Linux/macOS。

  2. 关键命令

    • 创建环境
      conda create -n myenv python=3.8
      (创建名为myenv的Python 3.8环境)

    • 激活环境
      conda activate myenv
      (切换至指定环境)

    • 安装包
      conda install numpy pytorch
      (安装NumPy和PyTorch包)

    • 导出环境配置
      conda env export > environment.yml
      (生成环境配置文件)

    • 其他常用命令
      列出所有环境:conda env list
      删除环境:conda remove -n myenv —all
      更新包:conda update numpy

  3. 与PyTorch的协作

    通过Conda可快速安装PyTorch(自动解决CUDA依赖):
    conda install pytorch torchvision cudatoolkit=11.3 -c pytorch
    推荐为每个项目创建独立环境,避免版本污染。

WSL及WSL2

WSL(Windows Subsystem for Linux)及WSL2是微软推出的原生Linux兼容层,允许在Windows上直接运行Linux环境。以下是关键解析:

  1. 核心功能

    无缝集成:
    访问Windows文件:/mnt/c/Users对应C:\Users
    从Windows终端直接调用Linux命令(如wsl ls -l)
    GPU支持:WSL2可直通NVIDIA CUDA
    Docker集成:WSL2可作为Docker Desktop的后端引擎

  2. 安装与配置

    启用功能(管理员PowerShell):

     wsl --install  # 自动安装WSL2和默认Ubuntu

    手动指定版本:

     wsl --set-version Ubuntu 2  # 将Ubuntu转换为WSL2

    常用命令:

     wsl --list --verbose  # 查看已安装发行版及版本 wsl --shutdown        # 强制停止所有WSL实例
  3. 开发场景优势

    Python开发:在Linux环境中使用conda/pip避免Windows路径问题
    CUDA开发:配合WSL2的NVIDIA CUDA支持直接运行PyTorch/TensorFlow
    Web服务:部署Nginx/PostgreSQL等Linux原生服务

  4. 典型问题

    网络代理失效:WSL2使用独立虚拟网卡,需在Linux内重新配置代理


本地部署LLM
http://localhost:8090/archives/ben-di-bu-shu-llm
作者
Administrator
发布于
2025年05月06日
更新于
2025年05月06日
许可协议