模型简介
模型特点
模型能力
使用案例
语言:
- 英文 许可证: llama2 标签:
- 金融
- GGUF 数据集:
- Open-Orca/OpenOrca
- GAIR/lima
- WizardLM/WizardLM_evol_instruct_V2_196k 评估指标:
- 准确率 管道标签: 文本生成 量化者: andrijdavid
finance-chat-GGUF
- 原始模型: finance-chat
描述
此仓库包含finance-chat的GGUF格式模型文件。
关于GGUF
GGUF是由llama.cpp团队于2023年8月21日引入的新格式。它取代了GGML,后者已不再受llama.cpp支持。 以下是不完整列表,列出了已知支持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 - "类型-1" 2位量化,包含16个块的超级块,每个块有16个权重。块比例和最小值用4位量化。最终有效使用每权重2.5625位(bpw)
- GGML_TYPE_Q3_K - "类型-0" 3位量化,包含16个块的超级块,每个块有16个权重。比例用6位量化。最终使用每权重3.4375位。
- GGML_TYPE_Q4_K - "类型-1" 4位量化,包含8个块的超级块,每个块有32个权重。比例和最小值用6位量化。最终使用每权重4.5位。
- GGML_TYPE_Q5_K - "类型-1" 5位量化。与GGML_TYPE_Q4_K相同的超级块结构,结果为每权重5.5位。
- GGML_TYPE_Q6_K - "类型-0" 6位量化。超级块包含16个块,每个块有16个权重。比例用8位量化。最终使用每权重6.5625位。
如何下载GGUF文件
手动下载者注意: 您几乎不需要克隆整个仓库!提供了多种不同的量化格式,大多数用户只需选择并下载单个文件。
以下客户端/库将自动为您下载模型,提供可用模型列表供选择:
- LM Studio
- LoLLMS Web UI
- Faraday.dev
在text-generation-webui
中
在下载模型下,您可以输入模型仓库:andrijdavid/finance-chat-GGUF,并在下方输入要下载的特定文件名,例如:finance-chat-f16.gguf。
然后点击下载。
在命令行中,包括一次下载多个文件
我推荐使用huggingface-hub
Python库:
pip3 install huggingface-hub
然后您可以将任何单个模型文件高速下载到当前目录,使用如下命令:
huggingface-cli download andrijdavid/finance-chat-GGUF finance-chat-f16.gguf --local-dir . --local-dir-use-symlinks False
更多高级huggingface-cli下载用法(点击阅读)
您还可以使用模式一次下载多个文件:
huggingface-cli download andrijdavid/finance-chat-GGUF --local-dir . --local-dir-use-symlinks False --include='*Q4_K*gguf'
有关使用huggingface-cli
下载的更多文档,请参阅:HF -> Hub Python Library -> 下载文件 -> 从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/finance-chat-GGUF finance-chat-f16.gguf --local-dir . --local-dir-use-symlinks False
Windows命令行用户:您可以通过在下载命令前运行set HF_HUB_ENABLE_HF_TRANSFER=1
来设置环境变量。
确保您使用的是提交d0cee0d或之后的llama.cpp
。
./main -ngl 35 -m finance-chat-f16.gguf --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "<提示>"
将-ngl 32
更改为要卸载到GPU的层数。如果没有GPU加速,请移除此参数。
将-c 4096
更改为所需的序列长度。对于扩展序列模型(如8K、16K、32K),必要的RoPE缩放参数会从GGUF文件中读取并由llama.cpp自动设置。请注意,更长的序列长度需要更多资源,因此您可能需要减少此值。
如果您想进行聊天式对话,将-p <提示>
参数替换为-i -ins
有关其他参数及其使用方法,请参阅llama.cpp文档
如何在text-generation-webui
中运行
更多说明可在text-generation-webui文档中找到,此处:text-generation-webui/docs/04 ‐ 模型标签.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="./finance-chat-f16.gguf", # 首先下载模型文件
n_ctx=32768, # 使用的最大序列长度 - 请注意,更长的序列长度需要更多资源
n_threads=8, # 使用的CPU线程数,根据系统和性能调整
n_gpu_layers=35 # 要卸载到GPU的层数,如果有GPU加速可用
)
# 简单推理示例
output = llm(
"<提示>", # 提示
max_tokens=512, # 最多生成512个标记
stop=["</s>"], # 示例停止标记 - 不一定适用于此特定模型!使用前请检查。
echo=True # 是否回显提示
)
# 聊天完成API
llm = Llama(model_path="./finance-chat-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的指南:
原始模型卡片: finance-chat
适应(大)语言模型到领域
此仓库包含从LLaMA-2-Chat-7B开发的领域特定聊天模型,使用我们论文通过阅读理解适应大语言模型中的方法。
我们探索了在领域特定语料库上继续预训练大语言模型。虽然这种方法丰富了LLMs的领域知识,但它显著损害了它们用于问答的提示能力。受人类通过阅读理解学习的启发,我们提出了一种简单的方法,将大规模预训练语料库转化为阅读理解文本,在生物医学、金融和法律领域的任务中持续提高提示性能。我们的7B模型与更大的领域特定模型如BloombergGPT-50B竞争。
🤗 我们目前正在努力开发跨不同领域、规模和架构的模型!请保持关注!🤗
**************************** 更新 ****************************
- 2024/1/16: 🎉 我们的研究论文已被ICLR 2024接受!!!🎉
- 2023/12/19: 发布了我们从LLaMA-1-13B开发的13B基础模型。
- 2023/12/8: 发布了我们从LLaMA-2-Chat-7B开发的聊天模型。
- 2023/9/18: 发布了我们的论文、代码、数据和从LLaMA-1-7B开发的基础模型。
领域特定LLaMA-1
LLaMA-1-7B
在我们的论文中,我们从LLaMA-1-7B开发了三个领域特定模型,这些模型也可在Huggingface上找到:Biomedicine-LLM、Finance-LLM和Law-LLM,我们的AdaptLLM与其他领域特定LLMs的性能比较如下:
LLaMA-1-13B
此外,我们将基础模型扩展到LLaMA-1-13B,以查看我们的方法对于更大规模的模型是否同样有效,结果也一致积极:Biomedicine-LLM-13B、Finance-LLM-13B和Law-LLM-13B。
领域特定LLaMA-2-Chat
我们的方法也对对齐模型有效!LLaMA-2-Chat需要特定的数据格式,而我们的阅读理解可以完美适应数据格式,通过将阅读理解转化为多轮对话。我们还开源了不同领域的聊天模型:Biomedicine-Chat、Finance-Chat和Law-Chat
例如,要与finance-chat模型聊天:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("AdaptLLM/finance-chat")
tokenizer = AutoTokenizer.from_pretrained("AdaptLLM/finance-chat")
# 在此输入您的问题:
user_input = '''使用此事实回答问题:每类证券的交易代码 注册的交易所名称
普通股,每股面值0.01美元 MMM 纽约证券交易所
MMM 芝加哥证券交易所
2026年到期的1.500%票据 MMM26 纽约证券交易所
2030年到期的1.750%票据 MMM30 纽约证券交易所
2031年到期的1.500%票据 MMM31 纽约证券交易所
截至2023年第二季度,哪些债务证券以3M的名义注册在国家证券交易所交易?'''
# 应用LLaMA-2-Chat演示的提示模板和系统提示(注意:基础模型不需要提示模板!)
our_system_prompt = "\n您是一个乐于助人、尊重他人且诚实的助手。始终尽可能提供帮助,同时确保安全。您的回答不应包含任何有害、不道德、种族主义、性别歧视、有毒、危险或非法内容。请确保您的回答在社会上是公正且积极的。\n\n如果问题没有意义或事实不连贯,请解释原因而不是回答不正确的内容。如果您不知道问题的答案,请不要分享虚假信息。\n" # 请不要更改此内容
prompt = f"<s>[INST] <<SYS>>{our_system_prompt}<</SYS>>\n\n{user_input} [/INST]"
# # 注意:
# # 如果您想应用自己的系统提示,请将其集成到指令部分,如下所示:
# your_system_prompt = "请检查答案是否可以从提供的上下文中推断出来。"
# prompt = f"<s>[INST] <<SYS>>{our_system_prompt}<</SYS>>\n\n{your_system_prompt}\n{user_input} [/INST]"
inputs = tokenizer(prompt, return_tensors="pt", add_special_tokens=False).input_ids.to(model.device)
outputs = model.generate(input_ids=inputs, max_length=4096)[0]
answer_start = int(inputs.shape[-1])
pred = tokenizer.decode(outputs[answer_start:], skip_special_tokens=True)
print(f'### 用户输入:\n{user_input}\n\n### 助手输出:\n{pred}')
领域特定任务
为了轻松复现我们的结果,我们上传了每个领域特定任务的填充零/少量样本输入指令和输出完成:biomedicine-tasks、finance-tasks和law-tasks。
注意: 这些填充的指令专门为对齐前的模型设计,不适用于聊天模型所需的特定数据格式。
引用
如果您觉得我们的工作有帮助,请引用我们:
@article{adaptllm,
title = {通过阅读理解适应大语言模型},
author = {程岱轩 and 黄少寒 and 韦福如},
journal = {CoRR},
volume = {abs/2309.09530},
year = {2023}
}


