本地部署一只LLama大语言模型

本文主要以记录为主,所有的需要下载模型均可以在开源仓库找到,避免网盘进行传播(因为不知道第三方的上传者会不会加料)

本文参考 Chinese-LLaMA-Alpaca 文档以及 这篇博客 LLaMA大型语言模型的本地部署 >_< 写成,并在本机上实测运行(Windows)

本文目标是部署本地的对话模型,因此使用Chinese-Alpaca-Plus-7B模型,和llama.cpp进行本地部署

本人还在学习如何使用GPU生成以及如何在此基础上训练自己的模型(还在学习中。。。)

本文可能存在一些疏漏,后续会不断完善。(🚧 施工中 🚧 )

首先第一步下载原版的LLaMA模型 仓库地址 由于此仓库已经换为HF格式了,因此直接拿来用就好了。

因此你的目录应该是这样的

bash
│
│
└───llama-7b-hf  
        .gitattributes
        config.json
        generation_config.json
        LICENSE
        pytorch_model-00001-of-00033.bin
        pytorch_model-00002-of-00033.bin
        pytorch_model-00003-of-00033.bin
        pytorch_model-00004-of-00033.bin
        pytorch_model-00005-of-00033.bin
        pytorch_model-00006-of-00033.bin
        pytorch_model-00007-of-00033.bin
        pytorch_model-00008-of-00033.bin
        pytorch_model-00009-of-00033.bin
        pytorch_model-00010-of-00033.bin
        pytorch_model-00011-of-00033.bin
        pytorch_model-00012-of-00033.bin
        pytorch_model-00013-of-00033.bin
        pytorch_model-00014-of-00033.bin
        pytorch_model-00015-of-00033.bin
        pytorch_model-00016-of-00033.bin
        pytorch_model-00017-of-00033.bin
        pytorch_model-00018-of-00033.bin
        pytorch_model-00019-of-00033.bin
        pytorch_model-00020-of-00033.bin
        pytorch_model-00021-of-00033.bin
        pytorch_model-00022-of-00033.bin
        pytorch_model-00023-of-00033.bin
        pytorch_model-00024-of-00033.bin
        pytorch_model-00025-of-00033.bin
        pytorch_model-00026-of-00033.bin
        pytorch_model-00027-of-00033.bin
        pytorch_model-00028-of-00033.bin
        pytorch_model-00029-of-00033.bin
        pytorch_model-00030-of-00033.bin
        pytorch_model-00031-of-00033.bin
        pytorch_model-00032-of-00033.bin
        pytorch_model-00033-of-00033.bin
        pytorch_model.bin.index.json
        README.md
        special_tokens_map.json
        tokenizer_config.json
        tokenizer.model

下载chinese_llama_plus_lora_7b模型以及chinese_alpaca_plus_lora_7b 模型

当然你可以在🤗Model Hub下载以上所有模型:

ziqingyang/chinese-llama-plus-lora-7b ziqingyang/chinese-alpaca-plus-lora-7b

他们的目录结构应该看起来像这样

plaintext
│
│
└───chinese_llama_plus_lora_7b
          adapter_config.json
          adapter_model.bin
          special_tokens_map.json
          tokenizer_config.json
          tokenizer.model      
plaintext
│
│
└───chinese_llama_plus_lora_7b
         adapter_config.json
         adapter_model.bin
         special_tokens_map.json
         tokenizer_config.json
         tokenizer.model
         YOU_MUST_ALSO_DOWNLOAD_LLAMA_PLUS_7B.md   
          

接着进行模型的合并,为原版的模型添加中文的能力~

克隆仓库 https://github.com/ymcui/Chinese-LLaMA-Alpaca.git

进入 Chinese-LLaMA-Alpaca/scripts/ 目录下

找到merge_llama_with_chinese_lora.py脚本

在此处打开终端执行命令

bash
python merge_llama_with_chinese_lora.py --base_model llama-7b-hf --lora_model chinese_llama_plus_lora_7b,chinese_alpaca_plus_lora_7b --output_dir out

注意:此过程需要消耗15GB左右的内存(你没看错,是内存。)

合成后的目录应该像这样

plaintext
│
│
└───out
    config.json
    consolidated.00.pth
    generation_config.json
    params.json
    pytorch_model-00001-of-00002.bin
    pytorch_model-00002-of-00002.bin
    pytorch_model.bin.index.json
    special_tokens_map.json
    tokenizer_config.json
    tokenizer.model

之后就是需要量化模型

新建zh-models文件家夹,将Chinese-LLaMA-Alpaca文件夹中的tokenizer.model放入其中,然后在zh-models中建立7B文件夹,将上面合并生成的consolidated.00.pth和params.json放入其中

plaintext
zh-models
│   
│    tokenizer.model
|
└───7B
        consolidated.00.pth
        params.json

之后克隆仓库https://github.com/ggerganov/llama.cpp

找到 llama.cpp/convert-pth-to-ggml.py

执行命令python convert-pth-to-ggml.py zh-models/7B/ 1

你会在zh-models\7B下得到一个ggml-model-f16.bin文件

现在我们需要对它Q4量化,这里需要用到llama.cpp不想编译的可以直接在https://github.com/ggerganov/llama.cpp/releases下载

我们需要quantize.exe进行量化模型

执行命令./quantize.exe ./zh-models/7B/ggml-model-f16.bin ./zh-models/7B/ggml-model-q4_0.bin 2

最终你会得到ggml-model-q4_0.bin文件,这就是我们需要的了。

执行命令来启动./main.exe -m zh-models/7B/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3

效果图:

llamahangzhouques