模型简介
模型特点
模型能力
使用案例
🚀 Nanbeige 16B Base 32K - GGUF
本项目提供了 Nanbeige 16B Base 32K 模型的 GGUF 格式量化文件,支持多种客户端和库,方便用户进行推理和使用。
🚀 快速开始
本仓库包含 Nanbeige LLM Lab 的 Nanbeige 16B Base 32K 模型的 GGUF 格式文件。这些文件由 Massed Compute 提供的硬件进行量化。
✨ 主要特性
- 多语言支持:支持英文和中文。
- 多种量化格式:提供 2、3、4、5、6 和 8 位的 GGUF 模型,适用于 CPU+GPU 推理。
- 广泛的兼容性:与多种客户端和库兼容,如 llama.cpp、text-generation-webui 等。
📦 安装指南
下载 GGUF 文件
- 自动下载:LM Studio、LoLLMS Web UI、Faraday.dev 等客户端/库会自动下载模型,并提供可用模型列表供选择。
- text-generation-webui:在 Download Model 中输入模型仓库地址
TheBloke/Nanbeige-16B-Base-32K-GGUF
,并指定要下载的文件名,如nanbeige-16b-base-32k.Q4_K_M.gguf
,然后点击 Download。 - 命令行下载:推荐使用
huggingface-hub
Python 库,安装命令如下:
pip3 install huggingface-hub
下载单个模型文件的命令示例:
huggingface-cli download TheBloke/Nanbeige-16B-Base-32K-GGUF nanbeige-16b-base-32k.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
下载多个文件的命令示例:
huggingface-cli download TheBloke/Nanbeige-16B-Base-32K-GGUF --local-dir . --local-dir-use-symlinks False --include='*Q4_K*gguf'
运行模型
llama.cpp
确保使用 d0cee0d 或更高版本的 llama.cpp。运行命令示例:
./main -ngl 32 -m nanbeige-16b-base-32k.Q4_K_M.gguf --color -c 2048 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "{prompt}"
参数说明:
-ngl 32
:指定要卸载到 GPU 的层数,若无 GPU 加速可移除该参数。-c 2048
:指定所需的序列长度。- 若要进行聊天式对话,将
-p <PROMPT>
参数替换为-i -ins
。
text-generation-webui
更多说明可参考 text-generation-webui 文档。
Python 代码
可使用 llama-cpp-python 或 ctransformers 库从 Python 中使用 GGUF 模型。
使用 ctransformers 加载模型的示例代码:
from ctransformers import AutoModelForCausalLM
# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = AutoModelForCausalLM.from_pretrained("TheBloke/Nanbeige-16B-Base-32K-GGUF", model_file="nanbeige-16b-base-32k.Q4_K_M.gguf", model_type="nanbeige", gpu_layers=50)
print(llm("AI is going to"))
💻 使用示例
基础用法
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM.from_pretrained("TheBloke/Nanbeige-16B-Base-32K-GGUF", model_file="nanbeige-16b-base-32k.Q4_K_M.gguf", model_type="nanbeige", gpu_layers=50)
print(llm("中国的首都是北京\n德国的首都是柏林\n孟加拉的首都是"))
高级用法
from ctransformers import AutoModelForCausalLM
from transformers.generation.utils import GenerationConfig
# 配置生成参数
config = GenerationConfig(
max_new_tokens=32000,
temperature=0.7,
repeat_penalty=1.1
)
llm = AutoModelForCausalLM.from_pretrained("TheBloke/Nanbeige-16B-Base-32K-GGUF", model_file="nanbeige-16b-base-32k.Q4_K_M.gguf", model_type="nanbeige", gpu_layers=50)
input_text = "中国的首都是北京\n德国的首都是柏林\n孟加拉的首都是"
output = llm(input_text, generation_config=config)
print(output)
📚 详细文档
关于 GGUF
GGUF 是 llama.cpp 团队在 2023 年 8 月 21 日引入的新格式,用于替代不再受 llama.cpp 支持的 GGML 格式。以下是已知支持 GGUF 的客户端和库列表:
- llama.cpp:GGUF 的源项目,提供 CLI 和服务器选项。
- text-generation-webui:最广泛使用的 Web UI,具有许多功能和强大的扩展,支持 GPU 加速。
- KoboldCpp:功能齐全的 Web UI,支持跨所有平台和 GPU 架构的 GPU 加速,特别适合讲故事。
- LM Studio:适用于 Windows 和 macOS (Silicon) 的易用且强大的本地 GUI,支持 GPU 加速。
- LoLLMS Web UI:一个很棒的 Web UI,具有许多有趣和独特的功能,包括一个完整的模型库,便于模型选择。
- Faraday.dev:适用于 Windows 和 macOS (Silicon 和 Intel) 的有吸引力且易用的基于角色的聊天 GUI,支持 GPU 加速。
- ctransformers:一个支持 GPU 加速、LangChain 支持和 OpenAI 兼容 AI 服务器的 Python 库。
- llama-cpp-python:一个支持 GPU 加速、LangChain 支持和 OpenAI 兼容 API 服务器的 Python 库。
- candle:一个专注于性能的 Rust ML 框架,包括 GPU 支持和易用性。
可用仓库
- 用于 GPU 推理的 GPTQ 模型,具有多种量化参数选项
- 2、3、4、5、6 和 8 位的 GGUF 模型,用于 CPU+GPU 推理
- Nanbeige LLM Lab 原始未量化的 fp16 模型,采用 pytorch 格式,用于 GPU 推理和进一步转换
提示模板
{prompt}
兼容性
这些量化的 GGUFv2 文件与 8 月 27 日之后的 llama.cpp 兼容,对应提交版本为 d0cee0d。它们也与许多第三方 UI 和库兼容,请参阅本 README 顶部的列表。
量化方法说明
点击查看详情
新的可用方法如下:
- GGML_TYPE_Q2_K:“type-1” 2 位量化,超级块包含 16 个块,每个块有 16 个权重。块的缩放和最小值用 4 位量化。最终每个权重有效使用 2.5625 位(bpw)。
- GGML_TYPE_Q3_K:“type-0” 3 位量化,超级块包含 16 个块,每个块有 16 个权重。缩放用 6 位量化。最终使用 3.4375 bpw。
- GGML_TYPE_Q4_K:“type-1” 4 位量化,超级块包含 8 个块,每个块有 32 个权重。缩放和最小值用 6 位量化。最终使用 4.5 bpw。
- GGML_TYPE_Q5_K:“type-1” 5 位量化。与 GGML_TYPE_Q4_K 具有相同的超级块结构,最终使用 5.5 bpw。
- GGML_TYPE_Q6_K:“type-0” 6 位量化。超级块有 16 个块,每个块有 16 个权重。缩放用 8 位量化。最终使用 6.5625 bpw。
请参考下面的提供文件表,了解哪些文件使用了哪些方法以及如何使用。
提供的文件
名称 | 量化方法 | 位数 | 大小 | 所需最大 RAM | 使用场景 |
---|---|---|---|---|---|
nanbeige-16b-base-32k.Q2_K.gguf | Q2_K | 2 | 6.64 GB | 9.14 GB | 最小,显著质量损失 - 不推荐大多数用途 |
nanbeige-16b-base-32k.Q3_K_S.gguf | Q3_K_S | 3 | 6.93 GB | 9.43 GB | 非常小,高质量损失 |
nanbeige-16b-base-32k.Q3_K_M.gguf | Q3_K_M | 3 | 7.74 GB | 10.24 GB | 非常小,高质量损失 |
nanbeige-16b-base-32k.Q3_K_L.gguf | Q3_K_L | 3 | 8.45 GB | 10.95 GB | 小,大量质量损失 |
nanbeige-16b-base-32k.Q4_0.gguf | Q4_0 | 4 | 8.99 GB | 11.49 GB | 旧版;小,非常高的质量损失 - 建议使用 Q3_K_M |
nanbeige-16b-base-32k.Q4_K_S.gguf | Q4_K_S | 4 | 9.04 GB | 11.54 GB | 小,更大的质量损失 |
nanbeige-16b-base-32k.Q4_K_M.gguf | Q4_K_M | 4 | 9.59 GB | 12.09 GB | 中等,平衡的质量 - 推荐 |
nanbeige-16b-base-32k.Q5_0.gguf | Q5_0 | 5 | 10.93 GB | 13.43 GB | 旧版;中等,平衡的质量 - 建议使用 Q4_K_M |
nanbeige-16b-base-32k.Q5_K_S.gguf | Q5_K_S | 5 | 10.93 GB | 13.43 GB | 大,低质量损失 - 推荐 |
nanbeige-16b-base-32k.Q5_K_M.gguf | Q5_K_M | 5 | 11.24 GB | 13.74 GB | 大,非常低的质量损失 - 推荐 |
nanbeige-16b-base-32k.Q6_K.gguf | Q6_K | 6 | 12.99 GB | 15.49 GB | 非常大,极低的质量损失 |
nanbeige-16b-base-32k.Q8_0.gguf | Q8_0 | 8 | 16.83 GB | 19.33 GB | 非常大,极低的质量损失 - 不推荐 |
注意:上述 RAM 数字假设没有 GPU 卸载。如果将层卸载到 GPU,这将减少 RAM 使用并使用 VRAM 代替。
🔧 技术细节
模型介绍
Nanbeige-16B(南北阁-16B)是南北阁大模型实验室研发的 160 亿参数规模的大语言模型,采用了 2.5T Tokens 进行预训练,数据包含大量互联网高质量语料、各类书籍、代码等领域脱敏文本,在各个权威测评数据集上都取得了不错的效果。本次发布包含有 Base、Chat 以及扩展上下文长度的 Base-32k、Chat-32k 版本。
Base-32k 版本基于 Nanbeige-16B-Base 模型,采用 YaRN 插值方法对位置编码进行修改,并以 32k 为最大长度进行了 20B Tokens 的中文、英文、代码语料的全参数增量预训练。
Chat 版本和 Chat-32k 版本分别基于 Nanbeige-16B-Base 模型和 Nanbeige-16B-Base-32k 模型,经过了大量人类对齐训练,能够更好、更安全地回复用户的问题。
如果您需要处理更长的上下文,我们推荐您使用 Nanbeige-16B-Base-32k 和 Nanbeige-16B-Chat-32k。
模型推理
相关依赖
- python 3.8 及以上版本
- transformers 4.33.3
- pytorch 2.0 及以上版本
- deepspeed 0.11.1 及以上版本
安装相关依赖库的命令:
pip install transformers==4.33.3 transformers_stream_generator deepspeed einops==0.3.2 datasets==2.10.0 deepspeed==0.11.1
推理代码
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
import deepspeed
import os
tokenizer = AutoTokenizer.from_pretrained("Nanbeige/Nanbeige-16B-Base-32k", use_fast=False, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Nanbeige/Nanbeige-16B-Base-32k", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
world_size = int(os.getenv('WORLD_SIZE', '1'))
model = deepspeed.init_inference(model.eval(),
dtype="bfloat16",
replace_with_kernel_inject=False,
mp_size=world_size)
inputs = tokenizer('中国的首都是北京\n德国的首都是柏林\n孟加拉的首都是', return_tensors='pt')
inputs = inputs.to(model.device)
pred = model.generate(**inputs, max_new_tokens=32000)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
性能测评
长文本理解
我们使用 LongBench 的 LSHT、LCC、Multifiled_QA_ZH 数据集,对 Nanbeige-16B-Base-32k 模型进行了测评,相较具有长文本理解能力的同参数规模 Base 模型取得了不错的结果。
LSHT (分类) | LCC (代码) | Multifiled_QA_ZH (问答) | |
---|---|---|---|
Chinese-Llama2-13B-16k | 31.0 | 9.6 | 36.4 |
Qwen-14B-Dynamnic_ntk-Logn | 16.0 | 66.7 | 30.0 |
Nanbeige-16B-Base-32k | 40.3 | 70.7 | 47.2 |
📄 许可证
使用 Nanbeige 模型时,您必须遵守 Apache 2.0 许可证和《南北阁大语言模型许可协议》。如果您打算将 Nanbeige 模型或其衍生产品用于商业目的,请通过以下联系邮箱 nanbeige@126.com 提交申请材料,以满足《南北阁大语言模型许可协议》的要求。经过审核后,我们将授予您非排他性、全球范围内、不可转让、不可再许可、可撤销的商业版权许可。
其他信息
Discord
如需进一步支持,以及讨论这些模型和人工智能相关话题,请加入 TheBloke AI 的 Discord 服务器。
感谢与贡献
感谢 chirper.ai 团队和 gpus.llm-utils.org 的 Clay!
如果您能够且愿意贡献,将不胜感激,这将帮助我继续提供更多模型,并开展新的人工智能项目。捐赠者将在所有 AI/LLM/模型问题和请求上获得优先支持,访问私人 Discord 房间以及其他福利。
捐赠方式:
- Patreon: https://patreon.com/TheBlokeAI
- Ko-Fi: https://ko-fi.com/TheBlokeAI
特别感谢:Aemon Algiz。
Patreon 特别提及:Brandon Frisco、LangChain4j 等众多人士。
感谢所有慷慨的赞助者和捐赠者!再次感谢 a16z 的慷慨资助。
局限性
虽然我们在训练过程中非常注重模型的安全性,力求确保其输出符合伦理和法律要求的文本,但由于模型大小和概率生成范式的限制,无法完全避免产生各种不符合预期的输出情况。这些输出可能包含偏见、歧视等有害内容,请勿传播这些内容。我们不承担因传播不良信息而导致的任何后果。



