Deploy_LLMs_ON_PC

如何搭建运行在本地的 LLMs 🤔

[TOC]

🤗 1. 基于 LM-Studio

  1. 访问 LM-Studio,网址:LM Studio - Discover, download, and run local LLMs

    下载对应系统的安装包,然后双击运行即可。

  1. 访问 ModelScope魔搭社区 或者 🤗Hugging FaceHugging Face,这里以 ModelScope 为例,进入模型库,下载相应模型。
魔搭社区官网
找到需要的模型并下载
  1. 下载好响应的模型后,将模型组织好,放到相应的文件夹中,这里按照 models/Publisher/Repository/*.gguf 的路径组织模型路径,然后选择 Change 更改模型的位置。如果不按照该路径组织,则会出现 You have 1 uncategorized model files. 错误,如下图所示:
  1. 但是那种方式是不太推荐的,我们组织 USER/MODEL_NAME/*.gguf 的结构,这种结构会比较明了:
  1. 完成模型文件的下载和组织后,我们可以进入聊天页面,选择模型进行加载。这里为了节约空间,我删除了 nilera/Qwen1.5-7B-Chat-Q4-GGUF 目录下的文件。
  1. 选择模型加载,等待加载完成即可像平时使用其他大模型的时候一样使用这些模型。
  1. 但是如果我们想在代码中使用我们的大模型应该怎么做呢?我们可以选择 LM-StudioLocal Server 菜单项,选择 Start Server 即可部署到一个本地指定的端口(默认是 1234)。
  1. 右侧有许多样例,我们可以选择一段样例,如:chat(python),这里对这段代码进行简单的解释。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Example: reuse your existing OpenAI setup
from openai import OpenAI

# Point to the local server
client = OpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio")

completion = client.chat.completions.create(
model="Publisher/Repository", # 可以理解为模型路径, 这里以启动在这个端口的模型为准
messages=[
{"role": "system", "content": "Always answer in Chinese."}, # 系统设置: 每次都用中文回答
{"role": "user", "content": "Introduce yourself."} # 对话设置: 这里希望 AI 介绍一下他自己
],
temperature=0.7,
)

print(completion.choices[0].message) # 获取模型的回复
  1. 然后我们就可以愉快的使用 Python 调用我们的本地大模型了。

⛵ 2. 使用 PowerInfer 框架

PowerInfer 框架 GitHub 链接:SJTU-IPADS/PowerInfer: High-speed Large Language Model Serving on PCs with Consumer-grade GPUs (github.com)

$2024$ 年发布论文 PowerInfer-2[2406.06282] PowerInfer-2: Fast Large Language Model Inference on a Smartphone (arxiv.org)

Anaconda 命令使用:【anaconda】conda创建、查看、删除虚拟环境(anaconda命令集)_conda 创建环境-CSDN博客

参考博客:大模型笔记之-3090显卡推理70B参数模型|基于PowerInfer 一个 CPU/GPU LLM 推理引擎-CSDN博客

  1. 使用 Conda 创建环境,这里 Python 版本需要大于 3.8
1
conda create -n powerinfer1 python=3.8
  1. 激活 Conda 环境:
1
conda activate powerinfer1
  1. 克隆 PowerInfer 框架代码:
1
git clone git@github.com:SJTU-IPADS/PowerInfer.git
  1. 安装所需依赖:
1
pip install -r requirements.txt
  1. 使用 CMake 进行编译(CMake 版本需要大于:3.17+

    这里很大概率可能会出现编译器版本与 CUDA 版本不一致的情况,解决方案:fatal error C1189: #error: – unsupported Microsoft Visual Studio version! - CSDN博客

    这里我有三个 CUDA 版本,貌似修改其中任意一个就可以,这里我修改的是 CUDA v11.6 版本。

    ① 如果是 NVIDIA GPUs,需要使用如下方式进行编译:

    1
    2
    cmake -S . -B build -DLLAMA_CUBLAS=ON
    cmake --build build --config Release

    ② 如果是 AMD GPUs,需要使用下面的方式进行编译:

    1
    2
    3
    4
    # Replace '1100' to your card architecture name, you can get it by rocminfo
    CC=/opt/rocm/llvm/bin/clang CXX=/opt/rocm/llvm/bin/clang++ cmake -S . -B build -
    DLLAMA_HIPBLAS=ON -DAMDGPU_TARGETS=gfx1100
    cmake --build build --config Release

    ③ 如果是 CPU ONLY,需要使用下面的方式进行编译:

    1
    2
    cmake -S . -B build
    cmake --build build --config Release

    这里我有一块 Nvidia 1050ti 所以我使用方式 ①进行编译。

  2. 对于我们下载的模型,可以使用提供的方式进行转化,转化为 PowerInfer 可以使用的类型:

1
2
3
# make sure that you have done `pip install -r requirements.txt`
python convert.py --outfile /PATH/TO/POWERINFER/GGUF/REPO/MODELNAME.powerinfer.gguf /PATH/TO/ORIGINAL/MODEL /PATH/TO/PREDICTOR
# python convert.py --outfile ./ReluLLaMA-70B-PowerInfer-GGUF/llama-70b-relu.powerinfer.gguf ./SparseLLM/ReluLLaMA-70B ./PowerInfer/ReluLLaMA-70B-Predictor
1
python convert.py --outfile D:/LMStudio/models/Publisher/Repository/qwen1_5-7b-chat-q4_0.gguf ./SparseLLM/ReluLLaMA-70B ./PowerInfer/ReluLLaMA-70B-Predictor
  1. 或者将要 原始模型转化为 GGUF 模型
1
python convert-dense.py --outfile /PATH/TO/DENSE/GGUF/REPO/MODELNAME.gguf /PATH/TO/ORIGINAL/MODEL
  1. 运行模型
1
2
3
./build/bin/Release/main.exe -m C:/Users/NilEra/Downloads/llama-7b-relu.powerinfer.gguf -n 128 -t 2 -p "Once upon a time"

# 其中/home/user/data/ReluLLaMA-70B-PowerInfer-GGUF/llama-70b-relu.q4.powerinfer.gguf为GPTQ量化过的模型文件
  1. 一些问题:

Issus22

🔧 3. 在 Windows 上搭建 llama.cpp

  1. 在 Windows 上搭建 llama.cpp 是需要安装很多工具,且安装完成后也存在无法正常成功编译的情况(存在依赖、库等各种问题),因此这里我们可以使用 w64devkit 工具,使用他可以方便我们进行 llama.cpp 的编译。首先我们先下载 w64devkit

    参考网址01

    参考网址02

  2. 然后再 make 可以了