Linux 环境下部署 SakuraLLM

SakuraLLM 是一款适配轻小说和 GalGame 的日中翻译大语言模型。

该项目的使用文档主要面向 Windows 用户,然而,大多数 GPU 服务器都运行 Linux 系统。本文将简单介绍在 Unbutu 系统中运行 SakuraLLM 的过程。

本文使用的软硬件环境如下:

  • 系统:Ubuntu 22.04
  • 部署方式:llama-cpp-python
  • CPU:Intel Xeon w7-3465X(分配 8 个虚拟核心)
  • 内存:分配 40 GB
  • 显卡:单卡 RTX 4090,CUDA 12.1
  • Python 版本:3.12
  • PyTorch 版本:2.3.0

下载代码和模型

克隆仓库:

git clone https://github.com/SakuraLLM/SakuraLLM.git

到 HuggingFace 下载需要的模型。链接可以在仓库的 README 中找到。

可以使用镜像站 hf-mirror.com 来加速下载

此处以 Qwen1.5-7B-Galtransl-v1.5 为例, HuggingFace Model card 给出了不同量化等级使用的显存大小,但在模型文件中只给出了 IQ4_KSQ6_K 两个等级。根据实测, Q6_K 在 llama-cpp-python 部署方式下搭配 GalTransl 使用时显存占用小于 8 GB。

将模型下载到 SakuraLLM/models/ 目录中即可。

准备环境

安装 Python、CUDA 环境和 PyTorch

略。Python 应当安装 3.10 或更新的版本,CUDA 建议使用 12.x 版本(11.x 也可以),PyTorch 选择最新版本即可。

安装 PyTorch 可以直接到 https://pytorch.org/ 选择需要的配置后复制命令进行安装,一般都不会出问题。

安装 llama-cpp-python

CUDA 12.x

https://github.com/abetlen/llama-cpp-python/releases 中寻找适配自己 CUDA 版本的 Release,然后在其中找到对应自己 Python 版本的项进行下载。

例如,我使用 CUDA 12.1,Python 版本是 3.12,本文撰稿时 llama-cpp-python 的最新版本是 0.2.83,那么就到 https://github.com/abetlen/llama-cpp-python/releases/tag/v0.2.83-cu121 中寻找带有 cp312 字段的 Linux 包下载,最终下载的包是 https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.83-cu121/llama_cpp_python-0.2.83-cp312-cp312-linux_x86_64.whl

下载后使用 pip 进行安装

# 把包名替换成你下载的包名
pip install llama_cpp_python-0.2.83-cp312-cp312-linux_x86_64.whl

CUDA 11.x

https://jllllll.github.io/llama-cpp-python-cuBLAS-wheels/ 中寻找适合自己 CPU 指令集、CUDA 版本和 Python 版本的包进行下载。

在 Linux 中,可以执行 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 来查看系统中安装的 CPU 的型号,然后到网络上搜索该型号来获得支持的指令集列表。

下载后参照前文进行安装。

安装其他依赖

通过 llama-cpp-python 部署的其他依赖可通过仓库根目录的 requirements.llamacpp.txt 进行安装,但此处我们已经安装过 PyTorch 和 llama-cpp-python,就手动安装这些依赖。

pip install transformers scipy numpy fastapi[all] asyncio sse-starlette hypercorn coloredlogs dacite

运行

SakuraLLM 需要指定参数运行,此处我们可以编写一个 shell 脚本来简化运行流程。

python server.py \
    --model_name_or_path ./models/GalTransl-7B-v1.5-Q6_K.gguf \ # 改成你下载的模型
    --llama_cpp \
    --use_gpu \
    --trust_remote_code \
    --listen 127.0.0.1:6006 \   # 改成你需要的IP和端口,如果不设置,则默认值是127.0.0.1:5000
    --no-auth

完整参数表如下:

# 模型参数
# --model_name_or_path:模型本地路径或者huggingface仓库id。
# --model_version:模型版本,本仓库README表格中即可查看。可选范围:['0.1', '0.4', '0.5', '0.7', '0.8']
# --use_gptq_model:如果模型为gptq量化模型,则需加此项;如是hf全量模型,则不需要添加。
# --llama_cpp:如果模型为gguf全量模型或其量化模型(如Q4_K_M等),且使用llama-cpp-python后端进行推理,则需加此项。注意:此项与--use_gptq_model冲突,二者只可选一。
# --use_gpu:如果你添加了--llama_cpp使用llama-cpp-python推理,该参数可以控制模型是否载入到GPU进行推理。添加该参数默认将所有层全部载入GPU进行推理。
# --n_gpu_layers:如果你添加了--use_gpu使用GPU推理,该参数可以控制模型有多少层载入到GPU进行推理。如果添加--use_gpu参数而不添加该参数,会默认将所有层全部载入GPU进行推理。
# --trust_remote_code:是否允许执行外部命令(对于0.5,0.7,0.8版本模型需要加上这个参数,否则报错)。
# --llama:如果你使用的模型是llama家族的模型(对于0.1,0.4版本),则需要加入此命令。Legacy,即将删除。

# Server API参数
# --listen:指定要监听的IP和端口,格式为<IP>:<Port>,如127.0.0.1:5000。默认为127.0.0.1:5000
# --auth:使用认证,访问API需要提供账户和密码。
# --no-auth:不使用认证,如果将API暴露在公网可能会降低安全性。
# --log:设置日志等级。
posted @ 2024-07-25 14:33  Eslzzyl  阅读(46)  评论(0编辑  收藏  举报