MAC本地部署中文AI+LLaMA&Alpaca大语言模型踩坑

中文AI+LLaMA&Alpaca大语言模型项目地址:ymcui/Chinese-LLaMA-Alpaca: 中文LLaMA&Alpaca大语言模型+本地CPU/GPU部署 (Chinese LLaMA & Alpaca LLMs) (github.com)

心得记录:

  • LLaMA 原版模型实在不容易下载,泄露的全量包为219G
1
magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA
  • 模型合并很麻烦,位置错误也会不成功
  • 如果你下载原版模型遇到困难,可以找我,不过我只下载了13B的模型,大小约12G

本地运行 LLaMA还可使用

cocktailpeanut/dalai: The simplest way to run LLaMA on your local machine (github.com)

主要还是以项目文档里的教程为主,这里引用其中的快速部署及模型对比

本地推理与快速部署

本项目中的模型主要支持以下量化、推理和部署方式。

推理和部署方式 特点 平台 CPU GPU 量化加载 图形界面 教程
llama.cpp 丰富的量化选项和高效本地推理 通用 链接
🤗Transformers 原生transformers推理接口 通用 链接
text-generation-webui 前端Web UI界面的部署方式 通用 链接
LlamaChat macOS下的图形交互界面(需搭配llama.cpp模型) MacOS 链接
LangChain LLM应用开发框架,适用于进行二次开发 通用 ✅† ✅† 链接
测试任务 样例数 Alpaca-13B Alpaca-Plus-7B Alpaca-Plus-13B
💯总平均分 200 74.3 78.2 👍🏻80.8
知识问答 20 70 74 👍🏻79
开放式问答 20 77 77 77
数值计算、推理 20 61 61 60
诗词、文学、哲学 20 65 👍🏻76 👍🏻76
音乐、体育、娱乐 20 68 73 👍🏻80
写信、写文章 20 83 82 👍🏻87
文本翻译 20 84 87 👍🏻90
多轮交互 20 88 89 89
代码编程 20 65 64 👍🏻70
伦理、拒答 20 82 👍🏻99 👍🏻100

其他说明

[1] 重构需要原版LLaMA模型,去LLaMA项目申请使用或参考这个PR。因版权问题本项目无法提供下载链接。

[2] 经过重构后的模型大小比同等量级的原版LLaMA大一些(主要因为扩充了词表)。

[3] 下载后务必检查压缩包中模型文件的SHA256是否一致,请查看SHA256.md

[4] Alpaca-Plus模型的合并方法略有不同,请参考合并教程

压缩包内文件目录如下(以Chinese-LLaMA-7B为例):

1
2
3
4
5
6
chinese_llama_lora_7b/
- adapter_config.json # LoRA权重配置文件
- adapter_model.bin # LoRA权重文件
- special_tokens_map.json # special_tokens_map文件
- tokenizer_config.json # tokenizer配置文件
- tokenizer.model # tokenizer文件

以下是各原模型和4-bit量化后的大小,转换相应模型时确保本机有足够的内存和磁盘空间(最低要求):

模型版本 7B 13B 33B 65B
原模型大小(FP16) 13 GB 24 GB 60 GB 120 GB
量化后大小(8-bit) 7.8 GB 14.9 GB - -
量化后大小(4-bit) 3.9 GB 7.8 GB 19.5 GB 38.5 GB

合并模型

前面提到LoRA模型无法单独使用,必须与原版LLaMA进行合并才能转为完整模型,以便进行模型推理、量化或者进一步训练。请选择以下方法对模型进行转换合并。

方式 适用场景 教程
在线转换 Colab用户可利用本项目提供的notebook进行在线转换并量化模型 链接
手动转换 离线方式转换,生成不同格式的模型,以便进行量化或进一步精调 链接

模型下载并完成合并后,MAC用户可以直接下载llamachat

官方:https://llamachat.app

安装LlamaChat

只需将LlamaChat拖入Applications即可(其他文件夹亦可)。

image

配置模型

按照向导配置模型即可。在本实例中,选择Alpaca模型。 image

给模型取一个名字,头像自行选择,下面的Format下拉列表选择PyToch格式(.pth扩展名)或者GGML格式(.bin扩展名),指定模型路径和模型大小。其中GGML格式就是llama.cpp中转换得到的模型格式,具体参考llama.cpp转换

⚠️ LlamaChat暂不支持最新的量化方法,例如Q5或者Q8。

image

第四步:聊天交互

添加模型成功之后即可和模型进行交互。点击聊天框左侧的图标可以结束当前轮次的对话(清除上下文缓存,但不删除相应的聊天记录)。

(提示:生成第一句话时需要加载模型,之后速度就会恢复正常了)

image

自定义设置

v1.2版本支持了自定义参数,提供了更加灵活的解码方式,可根据实际情况自行修改。

image