2023年上半年,广泛使用API(如OpenAI)来创建基于大型语言模型(LLM)的基础设施,极大地塑造了软件领域。
LangChain 和LlamaIndex在这一趋势中发挥了重要的作用。2023年下半年LLMOps的运维工作流程中微调(或指令调整)模型门槛降低基本成了业内标准流程,这一趋势的发展主要是由以下几个原因,1.微调的成本急剧降低,配合PEFT等方法,可以在单张T4卡上对Llama 2微调,这在以前是难以想象的;2.处理公司内保密数据的能力,3.经过微调后可在某些特定任务中开发超过ChatGPT和GPT-4等模型性能的模型的潜力。LLMOps主要包括:
0. 数据,结构化、非结构化数据,数据标注。
- LLM训练和微调,自从LLama发布后,指令微调变得越来越流行;
- 构建LLM框架:LangChain和LlamaIndex等库处理,允许您查询向量数据库,提高模型的内存或提供各种工具。
- 预测和推理(最优化推理技术):随着LLM规模的增长,应用最优化技术以确保模型能够高效地用于推理变得越来越重要。技术包括权重量化(4位、3位)、剪枝、知识蒸馏等。
- LLM部署:这些模型可以像llama. cpp一样部署在本地,也可以像huggingface的文本生成推理或vLLM一样部署在云中。
数据安全是每个公司不得不慎重对待的,为了提高生产力,降本增效又不得不接受新技术带来的工具,私有化部署对于公司还是非常有吸引力的。大语言模型这一工具结合公司的数据可以大大提高公司生产率。
预训练LLM不能按预期或希望执行时,关于如何提高LLM应用程序性能的问题?目前大致有两种做法。
Retrieval-Augmented Generation (RAG) 或者 model finetuning,RAG:这种方法将检索(或搜索)的能力集成到LLM文本生成中。它结合了检索系统和LLM,前者从大型语料库中获取相关文档片段,后者使用这些片段中的信息生成答案。本质上,RAG帮助模型“查找”外部信息以改进其响应。LangChain 和LlamaIndex属于RAG方法。
私有化LLM需要处理的问题
企业内私有化LLM部署对终端用户而言,一个是访问方式,另一个是访问内容的来源。
- 基于开源大语言模型/自研大语言模型SFT之后,以API/APP/web插件的形式司内使用;
- 基于司内企业数据以及公开行业相关数据,构建知识图谱/数据库,大语言模型参考构建好的知识图谱/数据库,提供更为精准的回答;
企业私有化部署的系统框图如下:
对应需要考虑如下五个方面:
模型训练和调优:对大型语言模型进行训练和调优,以提高其性能和准确率。
数据集清洗和预处理:对原始数据集进行清洗和预处理,以生成适合用于训练大型语言模型的数据集。
模型部署和管理:将训练好的大型语言模型部署到生产环境中,并对其进行管理和维护。
性能优化和扩展:对大型语言模型进行性能优化和扩展,以提高其效率和可扩展性。
安全和隐私保护:对大型语言模型进行安全和隐私保护,以防止敏感信息泄露和黑客攻击等安全问题。
对于模型的训练前有Huggingface rtl,后有微软的deepspeed,持续的改进层出不穷。
而数据又掌握在企业手中,网页上的数据清洗并不适用于企业。对于企业而言,安全隐私权限是个重头戏。本篇文章先看看知识图谱和向量数据库。
在传统的关系数据库中,数据通常以表格的形式组织。然而,人工智能时代的出现带来了大量的非结构化数据,包括图像、音频和文本。以表格格式存储这些数据是不合适的,需要使用机器学习算法将这些数据转换为向量表示的“特征”。向量数据库的出现是为了解决这些向量的存储和处理。
向量数据库的基础在于数据索引。通过倒排索引等技术,向量数据库可以通过对向量特征进行分组和索引来高效地进行相似度搜索。向量量化技术有助于将高维向量映射到低维空间,从而减少存储和计算需求。通过利用索引技术,向量数据库能够使用向量加法、相似性计算和聚类分析等各种操作高效搜索向量。
当前基于海量数据的大模型对数据库提出了一些挑战:
- 容纳大量数据:大规模生成人工智能模型需要大量数据进行训练,以捕获复杂的语义和上下文信息。因此,数据量呈爆炸式增长。向量数据库作为熟练的数据管理器,在有效处理和管理如此大量的数据方面发挥着至关重要的作用。
- 实现准确的相似性搜索和匹配:从大规模生成人工智能模型生成的文本通常需要相似性搜索和匹配来提供精确的回复、推荐或匹配结果。传统的基于关键字的搜索方法在复杂的语义学和上下文方面可能会有所欠缺。向量数据库在这一领域大放异彩,为这些任务提供了高度的相关性和有效性。
- 支持多模态数据处理:大规模生成人工智能模型超越文本数据,可以处理图像和语音等多模态数据。向量数据库作为能够存储和处理多种数据类型的综合系统,有效支持多模态数据的存储、索引和查询,增强了它们的通用性。
一些嗅觉敏锐的数据库已经在支持向量数据库这一特性。
SQLite:SQLite 是一种轻量级的嵌入式数据库,它支持存储大型文本、二进制和多媒体数据,并且可以通过 SQL 语句进行查询。SQLite 在移动端应用中被广泛使用,但它的查询性能可能会受到数据量和查询复杂度的影响。
Realm:Realm 是一种移动端数据库,它支持存储和管理结构化和非结构化数据,并提供了高性能的查询和数据同步功能。Realm 支持在移动端应用中使用大语言模型,并且可以通过其分片功能来支持大型数据集。
Realm Database:Realm Database 是 Realm 公司推出的一种云端数据库,它支持与 Realm 移动端数据库的无缝集成,并提供了云端数据存储和管理功能。Realm Database 也支持在移动端应用中使用大语言模型,并且可以通过其分片功能来支持大型数据集。
SQLite、Realm 和 Realm Database 等移动端数据库都可以支持大语言模型,但具体的支持方式和性能可能会有所不同。在选择数据库时,需要考虑数据量、查询复杂度、性能和安全性等因素,以选择最适合自己需求的数据库系统。
Neo4j 是一种图形数据库管理系统(Graph Database Management System,GDMS),它使用图形模型来存储和管理数据。Neo4j 可以用于存储和管理复杂的关系网络,如社交网络、供应链网络和知识图谱等。Neo4j 支持快速的图查询和分析,可以方便地发现数据中的关系和模式。
MongoDB 是一种文档型数据库管理系统(Document-based Database Management System,DBMS),它使用文档模型来存储和管理数据。MongoDB 可以用于存储和管理各种类型的数据,包括结构化数据、半结构化数据和非结构化数据。MongoDB 具有强大的数据类型支持、自动索引、高可用性和可扩展性等特点,是一种广泛使用的数据库系统。
RAG vs Fine-tunning
在检索增强生成(RAG)和微调之间进行选择对于构建有效的大型语言模型应用程序至关重要。尽管这两种技术都提高了模型功能,但它们在不同的约束下优化了不同的目标。
Fine-tuning通过对特定领域数据集的大量训练来调整整个模型,这将训练集中的专业技能和知识内化到模型中。然而,这需要大数据集、密集计算和定期的再训练来保持最新。微调模型也往往在不确定性下产生幻觉。
RAG检索外部知识给大模型提供回答问题的上下文。这保留了模型的通用性,同时允许通过更新的数据查询进行快速适应。但是RAG推理速度较慢,内存需求较高,其性能取决于知识源。
微调适合具有固定数据的封闭域,RAG适合知识不断发展的开放域。为了透明度,RAG提供可解释的检索,为了最大限度地降低幻觉风险,RAG以证据为基础做出反应。两者混合方法针对成本、速度和稳健性进行了优化。
评估模型目标、数据特征、资源限制和模型输出可信度是不同类型需求核心要点。在fine-tuning与RAG合适的平衡可以最大限度的攫取大型语言模型在应用环境中的潜力,它最终会带来更好的系统性能和用户体验。
LangChain
LangChain是将向量数据库、向量搜索以及和LLM结合的最好的工具。其支持的模块也正在急速发展中,很有可能是在大语言应用方面的顶流(支持研究+生产)。
llama_index
Unleash the power of LLMs over your data。