模型简介
模型特点
模型能力
使用案例
language:
-
en license: apache-2.0 tags:
-
GGUF datasets:
-
cerebras/SlimPajama-627B
-
bigcode/starcoderdata
-
HuggingFaceH4/ultrachat_200k
-
HuggingFaceH4/ultrafeedback_binarized widget:
-
text: '<|system|>
你是一个能帮助编程的聊天机器人!
<|user|>
用Python写一个函数,计算斐波那契数列的前10位数字并打印到命令行界面。
<|assistant|>
' quantized_by: andrijdavid
TinyLlama-1.1B-Chat-v1.0-GGUF
- 原始模型: TinyLlama-1.1B-Chat-v1.0
模型描述
此仓库包含TinyLlama-1.1B-Chat-v1.0的GGUF格式模型文件。
关于GGUF
GGUF是llama.cpp团队于2023年8月21日推出的新格式,用于替代不再受支持的GGML格式。 以下是已知支持GGUF的客户端和库的不完全列表:
- llama.cpp。这是GGUF的源项目,提供命令行界面(CLI)和服务器选项。
- text-generation-webui,作为最广泛使用的Web UI,该项目拥有众多功能和强大的扩展,并支持GPU加速。
- Ollama Ollama是一个轻量级且可扩展的框架,专为本地构建和运行语言模型设计。它提供简单的API来创建、管理和执行模型,并附带一个预构建模型库,适用于各种应用。
- KoboldCpp,一个全面的Web UI,支持所有平台和架构的GPU加速,尤其以故事讲述闻名。
- GPT4All,这是一个免费开源的GUI,可在本地运行,支持Windows、Linux和macOS,并具备完整的GPU加速。
- LM Studio 一个直观且强大的本地GUI,适用于Windows和macOS(Silicon),支持GPU加速。
- LoLLMS Web UI。一个显著的Web UI,具有多种独特功能,包括易于选择模型的全面模型库。
- Faraday.dev,一个吸引人且用户友好的基于角色的聊天GUI,适用于Windows和macOS(Silicon和Intel),同样提供GPU加速。
- llama-cpp-python,一个配备GPU加速、LangChain支持和OpenAI兼容API服务器的Python库。
- candle,一个基于Rust的ML框架,专注于性能,包括GPU支持,并设计为易于使用。
- ctransformers,一个具备GPU加速、LangChain支持和OpenAI兼容AI服务器的Python库。
- localGPT 一个开源项目,支持与文档进行私人对话。
量化方法说明
点击查看详情
可用的新方法包括:- 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)。
如何下载GGUF文件
手动下载者注意: 您几乎不需要克隆整个仓库!提供了多种不同的量化格式,大多数用户只需选择并下载单个文件。
以下客户端/库将自动为您下载模型,提供可用模型列表供选择:
- LM Studio
- LoLLMS Web UI
- Faraday.dev
在text-generation-webui
中
在下载模型下,您可以输入模型仓库:andrijdavid/TinyLlama-1.1B-Chat-v1.0-GGUF,并在下方输入特定文件名下载,例如:TinyLlama-1.1B-Chat-v1.0-f16.gguf。
然后点击下载。
在命令行中,包括一次下载多个文件
推荐使用huggingface-hub
Python库:
pip3 install huggingface-hub
然后您可以使用以下命令将任何单个模型文件高速下载到当前目录:
huggingface-cli download andrijdavid/TinyLlama-1.1B-Chat-v1.0-GGUF TinyLlama-1.1B-Chat-v1.0-f16.gguf --local-dir . --local-dir-use-symlinks False
更高级的huggingface-cli下载用法(点击阅读)
您还可以使用模式一次下载多个文件:
huggingface-cli download andrijdavid/TinyLlama-1.1B-Chat-v1.0-GGUF --local-dir . --local-dir-use-symlinks False --include='*Q4_K*gguf'
有关使用huggingface-cli
下载的更多文档,请参阅:HF -> Hub Python Library -> Download files -> Download from the CLI。
要在快速连接(1Gbit/s或更高)上加速下载,安装hf_transfer
:
pip3 install hf_transfer
并设置环境变量HF_HUB_ENABLE_HF_TRANSFER
为1
:
HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download andrijdavid/TinyLlama-1.1B-Chat-v1.0-GGUF TinyLlama-1.1B-Chat-v1.0-f16.gguf --local-dir . --local-dir-use-symlinks False
Windows命令行用户:您可以在下载命令前运行set HF_HUB_ENABLE_HF_TRANSFER=1
来设置环境变量。
确保您使用的是d0cee0d或更高版本的llama.cpp
。
./main -ngl 35 -m TinyLlama-1.1B-Chat-v1.0-f16.gguf --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "<PROMPT>"
将-ngl 32
更改为要卸载到GPU的层数。如果没有GPU加速,请移除此参数。
将-c 4096
更改为所需的序列长度。对于扩展序列模型(如8K、16K、32K),必要的RoPE缩放参数从GGUF文件中读取并由llama.cpp自动设置。请注意,更长的序列长度需要更多资源,因此您可能需要减少此值。
如果您想要进行聊天式对话,将-p <PROMPT>
参数替换为-i -ins
有关其他参数及其使用方法,请参阅llama.cpp文档
如何在text-generation-webui
中运行
更多说明可在text-generation-webui文档中找到,此处:text-generation-webui/docs/04 ‐ Model Tab.md。
如何从Python代码运行
您可以使用llama-cpp-python或ctransformers库从Python使用GGUF模型。请注意,截至撰写时(2023年11月27日),ctransformers已有一段时间未更新,与某些最新模型不兼容。因此,我建议您使用llama-cpp-python。
如何在Python代码中加载此模型,使用llama-cpp-python
完整文档请参阅:llama-cpp-python文档。
首先安装包
根据您的系统运行以下命令之一:
# 基础ctransformers,无GPU加速
pip install llama-cpp-python
# 使用NVidia CUDA加速
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
# 或使用OpenBLAS加速
CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS" pip install llama-cpp-python
# 或使用CLBLast加速
CMAKE_ARGS="-DLLAMA_CLBLAST=on" pip install llama-cpp-python
# 或使用AMD ROCm GPU加速(仅限Linux)
CMAKE_ARGS="-DLLAMA_HIPBLAS=on" pip install llama-cpp-python
# 或使用Metal GPU加速(仅限macOS系统)
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
# 在Windows中,要在PowerShell中设置CMAKE_ARGS变量,请遵循此格式;例如对于NVidia CUDA:
$env:CMAKE_ARGS = "-DLLAMA_OPENBLAS=on"
pip install llama-cpp-python
简单的llama-cpp-python示例代码
from llama_cpp import Llama
# 设置gpu_layers为要卸载到GPU的层数。如果您的系统没有GPU加速,设置为0。
llm = Llama(
model_path="./TinyLlama-1.1B-Chat-v1.0-f16.gguf", # 首先下载模型文件
n_ctx=32768, # 使用的最大序列长度 - 请注意,更长的序列长度需要更多资源
n_threads=8, # 使用的CPU线程数,根据您的系统和性能调整
n_gpu_layers=35 # 要卸载到GPU的层数,如果您有GPU加速可用
)
# 简单推理示例
output = llm(
"<PROMPT>", # 提示
max_tokens=512, # 生成最多512个令牌
stop=["</s>"], # 示例停止令牌 - 不一定适用于此特定模型!使用前请检查。
echo=True # 是否回显提示
)
# 聊天完成API
llm = Llama(model_path="./TinyLlama-1.1B-Chat-v1.0-f16.gguf", chat_format="llama-2") # 根据您使用的模型设置chat_format
llm.create_chat_completion(
messages = [
{"role": "system", "content": "你是一个故事写作助手。"},
{
"role": "user",
"content": "写一个关于羊驼的故事。"
}
]
)
如何与LangChain一起使用
以下是使用llama-cpp-python和ctransformers与LangChain的指南:
原始模型卡片:TinyLlama-1.1B-Chat-v1.0
TinyLlama-1.1B
https://github.com/jzhang38/TinyLlama
TinyLlama项目旨在预训练一个1.1B参数的Llama模型,使用3万亿令牌。通过适当的优化,我们可以在“仅”90天内使用16个A100-40G GPU实现这一目标 🚀🚀。训练于2023-09-01开始。
我们采用了与Llama 2完全相同的架构和分词器。这意味着TinyLlama可以即插即用到许多基于Llama的开源项目中。此外,TinyLlama仅1.1B参数的紧凑性使其能够满足多种需要限制计算和内存占用的应用需求。
此模型
这是基于TinyLlama/TinyLlama-1.1B-intermediate-step-1431k-3T微调的聊天模型。我们遵循HF's Zephyr的训练配方。 模型“最初在UltraChat
数据集的变体上微调,该数据集包含由ChatGPT生成的各种合成对话。
然后,我们使用🤗 TRL's的DPOTrainer
在openbmb/UltraFeedback数据集上进一步对齐模型,该数据集包含64k个提示和模型完成,由GPT-4排名。”
如何使用
您需要transformers>=4.34 请查看TinyLlama github页面获取更多信息。
# 从源代码安装transformers - 仅适用于版本<= v4.34
# pip install git+https://github.com/huggingface/transformers.git
# pip install accelerate
import torch
from transformers import pipeline
pipe = pipeline("text-generation", model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", torch_dtype=torch.bfloat16, device_map="auto")
# 我们使用分词器的聊天模板格式化每条消息 - 参见 https://huggingface.co/docs/transformers/main/en/chat_templating
messages = [
{
"role": "system",
"content": "你是一个友好的聊天机器人,总是以海盗的风格回应",
},
{"role": "user", "content": "人类一次能吃多少架直升机?"},
]
prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = pipe(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95)
print(outputs[0]["generated_text"])
# <|system|>
# 你是一个友好的聊天机器人,总是以海盗的风格回应。</s>
# <|user|>
# 人类一次能吃多少架直升机?</s>
# <|assistant|>
# ...


