模型简介
模型特点
模型能力
使用案例
🚀 金融大语言模型(Finance LLM)
金融大语言模型(Finance LLM)是专门针对金融领域开发的大语言模型,基于LLaMA架构,通过在特定金融数据集上进行微调,能够更好地处理金融领域的专业问题,为金融分析、投资决策等提供支持。
✨ 主要特性
- 领域针对性强:基于金融领域的专业数据进行训练,能够更好地理解和处理金融相关的问题。
- 多格式支持:提供了多种量化格式的模型文件,包括GGUF、AWQ、GPTQ等,以满足不同硬件和应用场景的需求。
- 广泛的兼容性:与多种推理工具和库兼容,如llama.cpp、text-generation-webui等,方便用户进行部署和使用。
📦 安装指南
下载GGUF文件
自动下载
以下客户端/库会自动为你下载模型,并提供可用模型列表供你选择:
- LM Studio
- LoLLMS Web UI
- Faraday.dev
在text-generation-webui
中下载
在“Download Model”下,输入模型仓库地址 TheBloke/finance-LLM-GGUF
,并在下方输入要下载的具体文件名,如 finance-llm.Q4_K_M.gguf
,然后点击“Download”。
命令行下载
推荐使用huggingface-hub
Python库进行下载:
pip3 install huggingface-hub
然后可以使用以下命令将单个模型文件高速下载到当前目录:
huggingface-cli download TheBloke/finance-LLM-GGUF finance-llm.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
你还可以使用通配符一次下载多个文件:
huggingface-cli download TheBloke/finance-LLM-GGUF --local-dir . --local-dir-use-symlinks False --include='*Q4_K*gguf'
若要在高速连接(1Gbit/s 或更高)下加速下载,可安装hf_transfer
:
pip3 install hf_transfer
并将环境变量HF_HUB_ENABLE_HF_TRANSFER
设置为1
:
HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download TheBloke/finance-LLM-GGUF finance-llm.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
Windows命令行用户可在下载命令前运行set HF_HUB_ENABLE_HF_TRANSFER=1
来设置环境变量。
💻 使用示例
在llama.cpp
中运行
确保你使用的是 d0cee0d 或更高版本的llama.cpp
:
./main -ngl 35 -m finance-llm.Q4_K_M.gguf --color -c 2048 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "[INST] <<SYS>>\n{system_message}\n<</SYS>>\n{prompt} [/INST]"
-ngl 32
:将其更改为要卸载到GPU的层数。如果没有GPU加速,请移除该参数。-c 2048
:将其更改为所需的序列长度。对于扩展序列模型(如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
。
安装llama-cpp-python
根据你的系统运行以下命令之一:
# 无GPU加速的基础ctransformers
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
# 支持macOS系统的Metal GPU加速
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的层数。如果系统没有GPU加速,则设置为0。
llm = Llama(
model_path="./finance-llm.Q4_K_M.gguf", # 先下载模型文件
n_ctx=2048, # 要使用的最大序列长度 - 注意,更长的序列长度需要更多资源
n_threads=8, # 要使用的CPU线程数,根据系统和性能进行调整
n_gpu_layers=35 # 如果有GPU加速,要卸载到GPU的层数
)
# 简单推理示例
output = llm(
"[INST] <<SYS>>\n{system_message}\n<</SYS>>\n{prompt} [/INST]", # 提示
max_tokens=512, # 生成最多512个令牌
stop=["</s>"], # 示例停止令牌 - 不一定适用于此特定模型!使用前请检查。
echo=True # 是否回显提示
)
# 聊天完成API
llm = Llama(model_path="./finance-llm.Q4_K_M.gguf", chat_format="llama-2") # 根据使用的模型设置chat_format
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的指南:
📚 详细文档
模型信息
属性 | 详情 |
---|---|
基础模型 | AdaptLLM/finance-LLM |
数据集 | Open-Orca/OpenOrca、GAIR/lima、WizardLM/WizardLM_evol_instruct_V2_196k |
推理 | false |
语言 | en |
许可证 | other |
评估指标 | accuracy |
模型创建者 | AdaptLLM |
模型名称 | Finance LLM |
模型类型 | llama |
任务类型 | 文本生成 |
提示模板 | [INST] < |
量化者 | TheBloke |
标签 | finance |
提示模板:Llama-2-Chat
[INST] <<SYS>>
{system_message}
<</SYS>>
{prompt} [/INST]
兼容性
这些量化的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 | 使用场景 |
---|---|---|---|---|---|
finance-llm.Q2_K.gguf | Q2_K | 2 | 2.83 GB | 5.33 GB | 最小,但质量损失显著 - 不推荐用于大多数场景 |
finance-llm.Q3_K_S.gguf | Q3_K_S | 3 | 2.95 GB | 5.45 GB | 非常小,但质量损失高 |
finance-llm.Q3_K_M.gguf | Q3_K_M | 3 | 3.30 GB | 5.80 GB | 非常小,但质量损失高 |
finance-llm.Q3_K_L.gguf | Q3_K_L | 3 | 3.60 GB | 6.10 GB | 小,但质量损失较大 |
finance-llm.Q4_0.gguf | Q4_0 | 4 | 3.83 GB | 6.33 GB | 旧版;小,但质量损失非常高 - 建议使用Q3_K_M |
finance-llm.Q4_K_S.gguf | Q4_K_S | 4 | 3.86 GB | 6.36 GB | 小,但质量损失较大 |
finance-llm.Q4_K_M.gguf | Q4_K_M | 4 | 4.08 GB | 6.58 GB | 中等,质量平衡 - 推荐 |
finance-llm.Q5_0.gguf | Q5_0 | 5 | 4.65 GB | 7.15 GB | 旧版;中等,质量平衡 - 建议使用Q4_K_M |
finance-llm.Q5_K_S.gguf | Q5_K_S | 5 | 4.65 GB | 7.15 GB | 大,质量损失低 - 推荐 |
finance-llm.Q5_K_M.gguf | Q5_K_M | 5 | 4.78 GB | 7.28 GB | 大,质量损失非常低 - 推荐 |
finance-llm.Q6_K.gguf | Q6_K | 6 | 5.53 GB | 8.03 GB | 非常大,质量损失极低 |
finance-llm.Q8_0.gguf | Q8_0 | 8 | 7.16 GB | 9.66 GB | 非常大,质量损失极低 - 不推荐 |
注意:上述RAM数字假设没有GPU卸载。如果将层卸载到GPU,这将减少RAM使用并使用VRAM。
原始模型信息
特定领域的大语言模型
本仓库包含基于 LLaMA-1-7B 开发的特定领域基础模型,使用了我们论文 Adapting Large Language Models via Reading Comprehension 中的方法。
我们探索了在特定领域语料库上对大语言模型进行持续预训练的方法。虽然这种方法可以丰富大语言模型的领域知识,但会显著损害其问答提示能力。受人类通过阅读理解学习的启发,我们提出了一种简单的方法,将大规模预训练语料库转换为阅读理解文本,从而在生物医学、金融和法律领域的任务中持续提高提示性能。我们的7B模型可与更大的特定领域模型(如BloombergGPT-50B)相媲美。
更新记录
- 12/19:发布了基于LLaMA-1-13B开发的 13B基础模型。
- 12/8:发布了基于LLaMA-2-Chat-7B开发的 聊天模型。
- 9/18:发布了 论文、代码、数据 和基于LLaMA-1-7B开发的 基础模型。
特定领域的LLaMA-1
LLaMA-1-7B
在我们的论文中,我们基于LLaMA-1-7B开发了三个特定领域的模型,这些模型也可在Huggingface上找到:Biomedicine-LLM、Finance-LLM 和 Law-LLM。我们的AdaptLLM与其他特定领域大语言模型的性能对比如下:
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。
例如,与金融模型进行聊天的示例代码如下:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("AdaptLLM/finance-chat")
tokenizer = AutoTokenizer.from_pretrained("AdaptLLM/finance-chat", use_fast=False)
# 输入你的问题
user_input = '''Use this fact to answer the question: Title of each class Trading Symbol(s) Name of each exchange on which registered
Common Stock, Par Value $.01 Per Share MMM New York Stock Exchange
MMM Chicago Stock Exchange, Inc.
1.500% Notes due 2026 MMM26 New York Stock Exchange
1.750% Notes due 2030 MMM30 New York Stock Exchange
1.500% Notes due 2031 MMM31 New York Stock Exchange
Which debt securities are registered to trade on a national securities exchange under 3M's name as of Q2 of 2023?'''
# 使用LLaMA-2-Chat的提示模板
prompt = f"<s>[INST] <<SYS>>\nYou are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.\n\nIf a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.\n<</SYS>>\n\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'### User Input:\n{user_input}\n\n### Assistant Output:\n{pred}')
特定领域的任务
为了方便重现我们的结果,我们上传了每个特定领域任务的零样本/少样本输入指令和输出完成内容:biomedicine-tasks、finance-tasks 和 law-tasks。
注意:这些填充的指令是专门为对齐前的模型量身定制的,不适用于聊天模型所需的特定数据格式。
引用
如果你觉得我们的工作有帮助,请引用我们:
@article{adaptllm,
title = {Adapting Large Language Models via Reading Comprehension},
author = {Daixuan Cheng and Shaohan Huang and Furu Wei},
journal = {CoRR},
volume = {abs/2309.09530},
year = {2023}
}
📄 许可证
本项目使用 other
许可证。
其他信息
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特别提及:Michael Levine, 阿明, Trailburnt, Nikolai Manek, John Detwiler, Randy H, Will Dee, Sebastain Graf, NimbleBox.ai, Eugene Pentland, Emad Mostaque, Ai Maven, Jim Angel, Jeff Scroggin, Michael Davis, Manuel Alberto Morcote, Stephen Murray, Robert, Justin Joy, Luke @flexchar, Brandon Frisco, Elijah Stavena, S_X, Dan Guido, Undi ., Komninos Chatzipapas, Shadi, theTransient, Lone Striker, Raven Klaugh, jjj, Cap'n Zoog, Michel-Marie MAUDET (LINAGORA), Matthew Berman, David, Fen Risland, Omer Bin Jawed, Luke Pendergrass, Kalila, OG, Erik Bjäreholt, Rooh Singh, Joseph William Delisle, Dan Lewis, TL, John Villwock, AzureBlack, Brad, Pedro Madruga, Caitlyn Gatomon, K, jinyuan sun, Mano Prime, Alex, Jeffrey Morgan, Alicia Loh, Illia Dulskyi, Chadd, transmissions 11, fincy, Rainer Wilmers, ReadyPlayerEmma, knownsqashed, Mandus, biorpg, Deo Leter, Brandon Phillips, SuperWojo, Sean Connelly, Iucharbius, Jack West, Harry Royden McLaughlin, Nicholas, terasurfer, Vitor Caleffi, Duane Dunston, Johann-Peter Hartmann, David Ziegler, Olakabola, Ken Nordquist, Trenton Dambrowitz, Tom X Nguyen, Vadim, Ajan Kanaga, Leonard Tan, Clay Pascal, Alexandros Triantafyllidis, JM33133, Xule, vamX, ya boyyy, subjectnull, Talal Aujan, Alps Aficionado, wassieverse, Ari Malik, James Bentley, Woland, Spencer Kim, Michael Dempsey, Fred von Graf, Elle, zynix, William Richards, Stanislav Ovsiannikov, Edmond Seymore, Jonathan Leane, Martin Kemka, usrbinkat, Enrico Ros
感谢所有慷慨的赞助者和捐赠者!
再次感谢a16z的慷慨资助。



