模型概述
模型特點
模型能力
使用案例
🚀 金融大語言模型(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的慷慨資助。



