详细简明懒人教程,含部署:Llama3-Chinese-8B-Instruct,cpp量化

本人随时在线,可以一起讨论学习。


0:前提知识介绍(不爱看可以跳过)

GGML
讲 GGML 之前要先说下llama-cpp这个项目,它是开发者 Georgi Gerganov 基于 Llama 模型手撸的纯 C/C++ 版本,它最大的优势是可以在 CPU 上快速地进行推理而不需要 GPU。然后作者将该项目中模型量化的部分提取出来做成了一个模型量化工具:GGML,项目名称中的GG其实就是作者的名字首字母。

在 HuggingFace 上,如果看到模型名称带有GGML字样的,比如Llama-2-13B-chat-GGML,说明这些模型是经过 GGML 量化的。有些 GGML 模型的名字除了带有GGML字样外,还带有q4、q4_0、q5等,比如Chinese-Llama-2-7b-ggml-q4,这里面的q4其实指的是 GGML 的量化方法,从q4_0开始往后扩展,有q4_0、q4_1、q5_0、q5_1和q8_0,在这里可以看到各种方法量化后的数据。                   
原文链接:https://blog.csdn.net/asdfaa/article/details/137941606


1:准备文件

无非:gh、hf、ms这三个里面找来找去,但是现在hf真的连不上,唉。。

首先从HF里面拷贝出文件:

git clone git@hf.co:FlagAlpha/Llama3-Chinese-8B-Instruct

如果你没有安装 git-lfs 安装包,就在命令行输入:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash

然后再安装安装包:

yum install git-lfs
git clone https://huggingface.co/FlagAlpha/Llama3-Chinese-8B-Instruct

安装不上就换方法(上魔塔找):

Llama3-Chinese-8B-Instruct · 模型库 (modelscope.cn)

git clone https://www.modelscope.cn/FlagAlpha/Llama3-Chinese-8B-Instruct.git

2:准备llama.cpp进行量化

参考:pcuenca/llama.cpp: LLM inference in C/C++ (github.com)

git clone https://github.com/pcuenca/llama.cpp.git

没法线上下载的建议直接下载github上面的文件

然后开始编译.cpp文件,输入命令:make

中间遇到了问题:我的g++版本太低了需要升级:

sudo yum install centos-release-scl  # 安装开发工具
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils  # 升级
scl enable devtoolset-9 bash  # 启用新的GCC版本

3:转换、量化

先将模型文件放到llama.cpp-master(就上面github下载下来的那个项目)的models目录下

然后执行转换命令,将其从Hugging Face格式的.bin文件转换为FP16的GGUF格式,输出根据自己的需求去写:

python convert-hf-to-gguf.py models/Llama3-Chinese-8B-Instruct/ --outfile models/ggml-llama3-8b-f16.gguf

这里可能会出现量化失败的情况,但是我改为运行convert.py就好了 

量化:

./quantize ./models/ggml-llama3-8b-f16.gguf ./models/ggml-llama3-8b-4b.gguf q4_0

得到的结果(图片红字上写反了)

如果无法量化成功,还好有大佬:

llama-3-chinese-8b-instruct-gguf · 模型库 (modelscope.cn)

Llama3-8b中文版(GGUF) · 模型库 (modelscope.cn)

这里面有大佬、大牛量化好的文件可以直接下载


4:运行测试

然后就可以在llama.cpp-master的目录下进行测试

./main -m ./models/ggml-llama3-8b-4b.gguf -c 512 -n 256 -b 64 -t 12 --color -i -r "助手:" -f prompts/chat-with-baichuan.txt
-c 控制上下文的长度,值越大越能参考更长的对话历史(默认:512)
-ins 启动类ChatGPT对话交流的instruction运行模式
-f 指定prompt模板,alpaca模型请加载prompts/alpaca.txt
-n 控制回复生成的最大长度(默认:128)
-b 控制batch size(默认:8),可适当增加
-t 控制线程数量(默认:4),可适当增加
--repeat_penalty 控制生成回复中对重复文本的惩罚力度
--temp 温度系数,值越低回复的随机性越小,反之越大
--top_p, top_k 控制解码采样的相关参数

具体参数可以参考官网文档:

llama.cpp/examples/main 在 master ·格尔加诺夫/llama.cpp (github.com)

运行成功!


5:部署应用gguf文件

接下来我们就要把这个量化后的gguf模型用在我们自己的程序中,官网(API Reference - llama-cpp-python)给出了两种方式,这里我们采取其中一种,用python加载模型的一种。

首先我们要安装一下辅助包:

pip install llama-cpp-python

然后我们就可以开始使用了,这里我给出一个我自己使用的例子:

from llama_cpp import Llama

my_model_path = "./models/ggml-model-q4_0.gguf"  # model_2

CONTEXT_SIZE = 4096

# LOAD THE MODEL
zephyr_model = Llama(model_path=my_model_path,
                     n_ctx=CONTEXT_SIZE)


def generate_text_from_prompt(user_prompt,
                              max_tokens=300,  # 模型响应中生成的最大令牌数
                              temperature=0.3,  # 0-1之间值越低,最终结果越确定性
                              top_p=0.1,  # 用于控制预测的多样性,这意味着它选择累积概率超过给定阈值的最可能的标记。 model_1:0.1
                              echo=False,  # 用于确定模型是否在开头包含原始提示(True)或不包含它(False)
                              # stop=["]"]  # 将导致模型生成过程停止的字符串列表
                              ):
    # Define the parameters
    model_output = zephyr_model(
        user_prompt,
        max_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        echo=echo,
        # stop=stop,
    )

    return model_output


if __name__ == "__main__":
    my_prompt = "帮我输出一个josn格式的数据"
    zephyr_model_response = generate_text_from_prompt(my_prompt)
    print('-' * 50)
    print(zephyr_model_response)
    final_result = zephyr_model_response["choices"][0]["text"].strip()
    print('-' * 50)
    print(final_result)
    print('-' * 50)

有什么别的问题可以相互相学交流,后续用作具体应用中还会更新的。里面用到一些大佬的博客、文章或者资源在此特别感谢!!!!!!

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Llama3-8b是一个开源的聊天机器人模型,可以用于自然语言处理和对话生成任务。如果您希望进行私有化部署,可以按照以下步骤进行操作: 1. 获取源代码:首先,您需要从Llama3-8b的开源代码库中获取源代码。您可以在GitHub上找到该项目,并将其克隆到本地。 2. 环境配置:在进行私有化部署之前,您需要配置适当的环境。确保您的系统满足所需的软件和硬件要求,并安装必要的依赖项。 3. 数据准备:为了训练和使用Llama3-8b模型,您需要准备相应的数据集。这可能包括对话数据、语料库等。确保数据集的质量和多样性,以提高模型的性能。 4. 模型训练:使用准备好的数据集,您可以开始训练Llama3-8b模型。根据您的需求和资源情况,您可以选择在单个GPU或多个GPU上进行训练。训练过程可能需要一定的时间和计算资源。 5. 模型部署:一旦训练完成,您可以将Llama3-8b模型部署到私有环境中。这可能涉及将模型加载到服务器或云平台,并设置相应的API接口供其他应用程序调用。 6. 安全性和隐私保护:在进行私有化部署时,确保采取适当的安全措施来保护用户数据和系统安全。这可能包括数据加密、访问控制、身份验证等。 7. 持续优化和更新:私有化部署后,您可以根据实际需求对Llama3-8b模型进行持续优化和更新。这可能包括增加新的训练数据、微调模型参数等。 希望以上步骤对您进行Llama3-8b的私有化部署提供了一些指导。如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值