项目介绍:Llama-2-Open-Source-LLM-CPU-Inference
项目背景
近年来,第三方商业大型语言模型(LLM)供应商如OpenAI的GPT4,通过简单的API调用,大大普及了LLM的使用。然而,在某些情况下,团队可能需要自行部署或私密的模型,以满足数据隐私或数据驻留规则的要求。开源LLM的广泛可用,提供了更多的选择,减少了对这些第三方提供者的依赖。
在本项目中,团队将探索如何在CPU上本地运行开源LLM的量化版本,用于处理文档的问答(Q&A)任务。当开源LLM部署在本地或云端时,专用计算能力成为关键问题。尽管GPU实例是一个明显的选择,费用却可能超出预算。因此,利用CPU进行推理成为了一个可行的替代方案。
快速开始指南
本项目附带了一份详细的快速开始指南,帮助用户快速上手:
- 确保已从 huggingface.co 下载了GGML二进制文件,并将其放置在
models/
文件夹内。 - 从项目目录的终端启动应用,并执行以下命令解析用户查询:
例如:poetry run python main.py "<user query>"
如果未使用Poetry,则不需要加上poetry run python main.py "What is the minimum guarantee payable by Adidas?"
poetry run
。
使用工具
- LangChain:用于开发由语言模型驱动的应用的框架。
- C Transformers:通过GGML库在C/C++中实现的变压器模型的Python绑定。
- FAISS:用于密集向量的高效相似性搜索和聚类的开源库。
- Sentence-Transformers (all-MiniLM-L6-v2):用于文本嵌入到384维密集向量空间的开源预训练变压器模型,适用于聚类或语义搜索。
- Llama-2-7B-Chat:专为聊天对话设计的开源Llama 2模型,利用了公开可用的指令数据集和超过一百万条人类注释。
- Poetry:用于依赖管理和Python打包的工具。
项目文件结构
- /assets:项目相关的图片。
- /config:LLM应用的配置文件。
- /data:项目使用的数据集(例如:曼联足球俱乐部2022年度报告——177页的PDF文档)。
- /models:GGML量化LLM模型的二进制文件(如:Llama-2-7B-Chat)。
- /src:LLM应用的关键组件Python代码,包括
llm.py
、utils.py
和prompts.py
。 - /vectorstore:文档的FAISS向量存储。
- db_build.py:用于摄入数据集并生成FAISS向量存储的Python脚本。
- main.py:主Python脚本,用于启动应用并通过命令行传递用户查询。
- pyproject.toml:TOML文件,用于指定所使用的依赖版本(Poetry)。
- requirements.txt:Python依赖项的列表及其版本。