-
Notifications
You must be signed in to change notification settings - Fork 85
Python部署教程
Sakura模型要求GPU至少有12G显存,显存不够的话可以尝试使用llama.cpp将模型部分或全部卸载到CPU/内存上运行。
考虑到大部分用户使用的是Windows系统,本教程将主要从Windows系统的视角提供部署教程。
建议选择预打包的Windows环境,方便部署。如果您具备一定的Python基础,也可以尝试手动安装。
Linux用户请参考手动安装一章自行配置。
-
在releases页面根据你的CUDA版本下载对应的压缩包(记得是分卷压缩的两个文件.001和.002)并解压缩到文件夹。
-
解压缩后,你现在应该有一个叫做
sakura.exe
的程序和一个文件夹。这个sakura.exe
程序的使用与server.py
基本相同。假设要使用llama-cpp-python
后端加载一个模型并启动Sakura API,只需要将server.py
的指令中的python server.py
改成./server.exe
即可,如下面所示:
./server.exe --model_name_or_path sakura-13b-lnovel-v0.9.0pre2-Q4_K_M.gguf --trust_remote_code --no-auth --log info --model_version 0.9 --llama_cpp --use_gpu
-
安装 Python。要求安装 Python3.10 或以上版本,推荐 Python3.10。
-
安装 torch。打开终端,输入指令
nvcc -V
,并查看此处release后面显示的版本。如果你的CUDA版本是12.0以上,则运行以下命令:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
如果你的CUDA版本是11.x,则运行以下命令:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
-
安装 bitsandbytes 和 auto-gptq。
- bitsandbytes:
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.40.2-py3-none-win_amd64.whl
- auto-gptq:根据你的CUDA版本和Python版本进行安装,这里使用Python3.10作为例子:
# CUDA 11.7(11.7及以前) pip install https://github.com/PanQiWei/AutoGPTQ/releases/download/v0.4.2/auto_gptq-0.4.2+cu117-cp310-cp310-win_amd64.whl # CUDA 11.8(11.8及以后) pip install https://github.com/PanQiWei/AutoGPTQ/releases/download/v0.4.2/auto_gptq-0.4.2+cu118-cp310-cp310-win_amd64.whl
如果出现CUDA版本问题,可先尝试将CudaToolkit更新/降级至11.7/11.8版本
-
安装其他依赖。
运行以下命令:
pip3 install transformers==4.33.2 sentencepiece xformers
-
安装 Python。要求安装 Python3.10 或以上版本,推荐 Python3.10。
-
安装
llama-cpp-python
库。
python -m pip install llama-cpp-python --prefer-binary --extra-index-url=https://jllllll.github.io/llama-cpp-python-cuBLAS-wheels/AVX2/cu117
指令中的AVX2
和cu117
需要根据自己的硬件情况进行调整。CPU支持到AVX、AVX2或AVX512的,可以将AVX2
分别替换成AVX
、AVX2
或AVX512
。不存在CUDA运行环境(纯CPU)、存在CUDA运行环境11.7、11.8、12.1、12.2的,可以将cu117
分别替换成CPU
、cu117
、cu118
、cu121
或cu122
。
例如,电脑的CPU支持AVX2,且存在12.1版本的CUDA环境,应使用如下指令进行安装:
python -m pip install llama-cpp-python --prefer-binary --extra-index-url=https://jllllll.github.io/llama-cpp-python-cuBLAS-wheels/AVX2/cu121
常见问题
llama 模式启动后提示不支持 qwen2,报错为:unknown model architecture: 'qwen2'
原因:旧版本 llama_cpp_python 不支持 qwen2,需要更新。
# 卸载原有旧版本 llama-cpp-python
pip uninstall llama-cpp-python
# 安装新版,cuda-version 为 cu121、cu122、cu123、cu124,python 版本仅支持 3.10、3.11、3.12
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/
#假设为 cuda 12.1
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
发布时间-底模-参数量-版本 | Transformers模型 | GGUF量化模型 | GPTQ 8bit量化 | GPTQ 4bit量化 | GPTQ 3bit量化 | AWQ量化 |
---|---|---|---|---|---|---|
20231026-Baichuan2 13B v0.8 | 🤗 Sakura-13B-LNovel-v0.8 | 🤗 Sakura-13B-LNovel-v0_8-GGUF | 🤗 Sakura-13B-LNovel-v0_8-8bit | 🤗 Sakura-13B-LNovel-v0_8-4bit | 🤗 Sakura-13B-LNovel-v0_8-3bit | 🤗 Sakura-13B-LNovel-v0_8-AWQ |
20240111-Qwen-14B-v0.9 | 🤗 Sakura-13B-LNovel-v0.9 | 🤗 Sakura-13B-LNovel-v0.9b-GGUF | - | - | - | - |
20240116-Qwen-7B-v0.9 | - | 🤗 Sakura-7B-LNovel-v0.9-GGUF | - | - | - | - |
20240213-Qwen1.5-14B-v0.9 | 🤗 Sakura-14B-Qwen2beta-v0.9 | 🤗 Sakura-14B-Qwen2beta-v0.9-GGUF | - | - | - | |
20240214-Qwen1.5-1.8B-v0.9.1 | 🤗 Sakura-1B8-Qwen2beta-v0.9.1 | 🤗 Sakura-1B8-Qwen2beta-v0.9.1 | - | - | - | |
20240303-Qwen1.5-14B-v0.10pre0 | 🤗 Sakura-14B-Qwen2beta-v0.10pre0 | 🤗 Sakura-14B-Qwen2beta-v0.10pre0-GGUF | - | - | - | - |
-
如果你想直接本地翻译轻小说Epub或文本:
执行以下命令克隆项目仓库
git clone https://github.com/SakuraLLM/Sakura-13B-Galgame.git
克隆后进入该目录,将你想翻译的Epub文件或文本文件放入仓库根目录中,并重命名为novel.epub(或novel.txt),如果你想翻译Epub文件,还需要创建一个文件夹output。
完成后打开终端,执行以下命令(注意系统):
-
如果你想翻译Epub文件:
# 参数说明: # 模型参数: # --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,即将删除。 # 翻译参数: # --text_length:文本分块的最大单块文字数量。 # --data_path:日文原文Epub小说文件路径。 # --data_folder:批量翻译Epub小说时,小说所在的文件夹路径 # --output_folder:翻译后的Epub文件输出路径(注意是文件夹路径)。 # --translate_title:是否翻译标题。 # 以下为一个例子 # Linux的例子 python translate_epub.py \ --model_name_or_path SakuraLLM/Sakura-13B-LNovel-v0_8-4bit \ --trust_remote_code \ --model_version 0.8 \ --use_gptq_model \ --text_length 512 \ --data_path novel.epub \ --output_folder output # Windows的例子 python translate_epub.py --model_name_or_path SakuraLLM/Sakura-13B-LNovel-v0_8-4bit --trust_remote_code --model_version 0.8 --use_gptq_model --text_length 512 --data_path novel.epub --output_folder output
-
如果你想翻译文本文件:
# 参数说明: # 模型参数: # --model_name_or_path:模型本地路径或者huggingface仓库id。 # --model_version:模型版本,本仓库README表格中即可查看。可选范围:['0.1', '0.4', '0.5', '0.7', '0.8'] # --use_gptq_model:如果模型为gptq量化模型,则需加此项;如是全量模型,则不需要添加。 # --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,即将删除。 # 翻译参数: # --text_length:文本分块的最大单块文字数量。每块文本量将最大不超过text_length。 # --compare_text:是否需要输出中日对照文本,如需要,则需加此项;如不需要则不要添加。 # --data_path:日文原文文件路径 # --output_path:翻译(或对照)文本输出文件路径 # 以下为一个例子 # Linux的例子 python translate_novel.py \ --model_name_or_path SakuraLLM/Sakura-13B-LNovel-v0_8-4bit \ --trust_remote_code \ --model_version 0.8 \ --use_gptq_model \ --text_length 512 \ --data_path novel.txt \ --output_path novel_translated.txt # Windows的例子 python translate_novel.py --model_name_or_path SakuraLLM/Sakura-13B-LNovel-v0_8-4bit --trust_remote_code --model_version 0.8 --use_gptq_model --text_length 512 --data_path novel.txt --output_path novel_translated.txt
如果你所在地区无法连接huggingface.co,可以从modelscope仓库拉取模型并存到本地,并将上文命令里的
--model_name_or_path
的值改为本地模型文件夹的路径。 -
-
克隆Github仓库,并进入仓库目录
git clone https://github.com/SakuraLLM/Sakura-13B-Galgame
-
安装所需的环境(Windows):先按照上文《安装环境(Windows)》安装完成后,执行下面的命令:
pip install scipy numpy fastapi[all] hypercorn coloredlogs dacite asyncio sse-starlette
-
安装所需的环境(Linux):可以直接执行下面的指令。需要上文中提到的cuda版本,如果是12.x则无需操作,如果是11.x请在requirements.txt里将第一行注释掉,并将第二行取消注释。
pip install -r requirements.txt
-
运行程序
# 参数解释: # 模型参数 # --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:设置日志等级。 # 下面为一个使用AutoGPTQ v0.8-4bit模型,同时不使用认证,监听127.0.0.1:5000的命令示例。 # 这里模型默认从huggingface拉取,如果你已经将模型下载至本地,可以将--model_name_or_path参数的值指定为本地目录。 python server.py --model_name_or_path SakuraLLM/Sakura-13B-LNovel-v0_8-4bit --use_gptq_model --model_version 0.8 --trust_remote_code --no-auth
-
打开轻小说翻译机器人,将你的API后端链接输入到下图的输入框中。举个例子,假设Api监听的是5000端口,那么链接就是
http://127.0.0.1:5000/api/v1/generate
。 -
点击“测试Sakura”可以进行简单的测试。如果没有问题,则可以上传EPUB/TXT文件并点击“更新Sakura”开始翻译。
-
ModuleNotFoundError: No module named ‘sampler_hijack’
少下了一个文件
sampler_hijack.py
,请完整克隆仓库。 -
出现类似
SSLError/ConnectionError/MaxRetryError
等连接不上huggingface.co的报错中国大陆网络问题导致的,可重试或使用魔法;或者检查
model_name_or_path
参数有没有写错。