Model Overview
Model Features
Model Capabilities
Use Cases
🚀 TinyLlama-1.1B-Chat-v1.0-GGUF
本項目提供了 TinyLlama-1.1B-Chat-v1.0 模型的 GGUF 格式文件,方便用戶在不同的客戶端和庫中使用該模型進行推理和對話。
🚀 快速開始
下載模型文件
可以通過以下幾種方式下載 GGUF 格式的模型文件:
- 自動下載:LM Studio、LoLLMS Web UI、Faraday.dev 等客戶端/庫會自動下載模型,並提供可用模型列表供用戶選擇。
- text-generation-webui:在
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
運行模型
llama.cpp 命令示例
確保使用的 llama.cpp
版本為 d0cee0d 或更高版本,運行以下命令:
./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 35
:指定要卸載到 GPU 的層數,若無 GPU 加速可移除該參數。-c 4096
:指定所需的序列長度,更長的序列長度需要更多資源,可根據情況調整。- 若要進行聊天式對話,將
-p <PROMPT>
參數替換為-i -ins
。
在 text-generation-webui 中運行
更多說明可參考 text-generation-webui 文檔。
從 Python 代碼運行
可以使用 llama-cpp-python 或 ctransformers 庫從 Python 代碼中使用 GGUF 模型。推薦使用 llama-cpp-python
庫,安裝命令如下:
# 無 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 中設置變量示例(以 NVidia CUDA 為例)
$env:CMAKE_ARGS = "-DLLAMA_OPENBLAS=on"
pip install llama-cpp-python
簡單的 llama-cpp-python
示例代碼如下:
from llama_cpp import Llama
# 設置要卸載到 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") # 根據使用的模型設置聊天格式
llm.create_chat_completion(
messages = [
{"role": "system", "content": "You are a story writing assistant."},
{
"role": "user",
"content": "Write a story about llamas."
}
]
)
與 LangChain 結合使用
以下是使用 llama-cpp-python
和 ctransformers
與 LangChain 結合的指南:
✨ 主要特性
- 支持多種客戶端和庫:GGUF 格式的模型文件支持多種客戶端和庫,如 llama.cpp、text-generation-webui、Ollama 等。
- 量化方法多樣:提供多種量化方法,如 GGML_TYPE_Q2_K、GGML_TYPE_Q3_K、GGML_TYPE_Q4_K 等,可根據需求選擇不同的量化級別。
- 易於使用:可以通過命令行、Python 代碼等多種方式運行模型,方便用戶進行推理和對話。
📦 安裝指南
下載依賴庫
若要從 Python 代碼中使用 GGUF 模型,需要安裝相應的依賴庫,如 llama-cpp-python
或 ctransformers
,安裝命令如下:
# 安裝 llama-cpp-python
pip install llama-cpp-python
# 或安裝 ctransformers
pip install ctransformers
下載模型文件
可按照上述“快速開始”部分的方法下載 GGUF 格式的模型文件。
💻 使用示例
基礎用法
from llama_cpp import Llama
# 設置要卸載到 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 # 是否回顯提示信息
)
print(output)
高級用法
# 聊天完成 API
llm = Llama(model_path="./TinyLlama-1.1B-Chat-v1.0-f16.gguf", chat_format="llama-2") # 根據使用的模型設置聊天格式
llm.create_chat_completion(
messages = [
{"role": "system", "content": "You are a story writing assistant."},
{
"role": "user",
"content": "Write a story about llamas."
}
]
)
📚 詳細文檔
關於 GGUF
GGUF 是 llama.cpp 團隊在 2023 年 8 月 21 日引入的一種新格式,用於替代不再受 llama.cpp 支持的 GGML 格式。以下是已知支持 GGUF 的客戶端和庫的不完全列表:
- llama.cpp:GGUF 的源項目,提供命令行界面(CLI)和服務器選項。
- text-generation-webui:最廣泛使用的 Web UI,具有眾多功能和強大的擴展,支持 GPU 加速。
- Ollama:輕量級且可擴展的框架,用於在本地構建和運行語言模型,具有簡單的 API 用於創建、管理和執行模型。
- KoboldCpp:全面的 Web UI,支持所有平臺和架構的 GPU 加速,尤其以講故事功能著稱。
- GPT4All:免費開源的本地 GUI,支持 Windows、Linux 和 macOS,具有完整的 GPU 加速。
- LM Studio:適用於 Windows 和 macOS(Silicon)的直觀強大的本地 GUI,支持 GPU 加速。
- LoLLMS Web UI:具有多種獨特功能的 Web UI,包括全面的模型庫,方便模型選擇。
- Faraday.dev:美觀、用戶友好的基於字符的聊天 GUI,適用於 Windows 和 macOS(Silicon 和 Intel),支持 GPU 加速。
- llama-cpp-python:Python 庫,具備 GPU 加速、LangChain 支持和 OpenAI 兼容的 API 服務器。
- candle:基於 Rust 的 ML 框架,專注於性能,包括 GPU 支持,設計易於使用。
- ctransformers:Python 庫,具有 GPU 加速、LangChain 支持和 OpenAI 兼容的 AI 服務器。
- 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。原始模型卡片
TinyLlama-1.1B
https://github.com/jzhang38/TinyLlama
TinyLlama 項目旨在使用 16 個 A100-40G GPU,在 3 萬億個令牌上預訓練一個 1.1B 的 Llama 模型,預計在 90 天內完成。訓練於 2023 年 9 月 1 日開始。
該模型採用了與 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": "You are a friendly chatbot who always responds in the style of a pirate",
},
{"role": "user", "content": "How many helicopters can a human eat in one sitting?"},
]
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|>
# You are a friendly chatbot who always responds in the style of a pirate.</s>
# <|user|>
# How many helicopters can a human eat in one sitting?</s>
# <|assistant|>
# ...
🔧 技術細節
模型類型
GGUF 格式的 TinyLlama-1.1B-Chat-v1.0 模型。
訓練數據
- cerebras/SlimPajama-627B
- bigcode/starcoderdata
- HuggingFaceH4/ultrachat_200k
- HuggingFaceH4/ultrafeedback_binarized
量化方法
採用多種量化方法,如 GGML_TYPE_Q2_K、GGML_TYPE_Q3_K、GGML_TYPE_Q4_K 等,可根據需求選擇不同的量化級別,以平衡模型大小和性能。
📄 許可證
本項目採用 Apache-2.0 許可證。



