大语言模型之六- LLM之企业私有化部署架构

2023年上半年,广泛使用API(如OpenAI)来创建基于大型语言模型(LLM)的基础设施,极大地塑造了软件领域。
LangChainLlamaIndex在这一趋势中发挥了重要的作用。2023年下半年LLMOps的运维工作流程中微调(或指令调整)模型门槛降低基本成了业内标准流程,这一趋势的发展主要是由以下几个原因,1.微调的成本急剧降低,配合PEFT等方法,可以在单张T4卡上对Llama 2微调,这在以前是难以想象的;2.处理公司内保密数据的能力,3.经过微调后可在某些特定任务中开发超过ChatGPT和GPT-4等模型性能的模型的潜力。LLMOps主要包括:

  1. LLM微调,自从LLaMA发布后,指令微调变得越来越流行;
  2. 构建LLM框架:LangChain和LlamaIndex等库处理,允许您查询向量数据库,提高模型的内存或提供各种工具。
  3. 推理的最优化技术:随着LLM规模的增长,应用最优化技术以确保模型能够高效地用于推理变得越来越重要。技术包括权重量化(4位、3位)、剪枝、知识蒸馏等。
  4. LLM部署:这些模型可以像llama. cpp一样部署在本地,也可以像huggingface的文本生成推理或vLLM一样部署在云中。

数据安全是每个公司不得不慎重对待的,为了提高生产力,降本增效又不得不接受新技术带来的工具,私有化部署对于公司还是非常有吸引力的。大语言模型这一工具结合公司的数据可以大大提高公司生产率。

预训练LLM不能按预期或希望执行时,关于如何提高LLM应用程序性能的问题?目前大致有两种做法。
Retrieval-Augmented Generation (RAG) 或者 model finetuning,RAG:这种方法将检索(或搜索)的能力集成到LLM文本生成中。它结合了检索系统和LLM,前者从大型语料库中获取相关文档片段,后者使用这些片段中的信息生成答案。本质上,RAG帮助模型“查找”外部信息以改进其响应。LangChainLlamaIndex属于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 具有强大的数据类型支持、自动索引、高可用性和可扩展性等特点,是一种广泛使用的数据库系统。

LangChain

LangChain是将向量数据库、向量搜索以及和LLM结合的最好的工具。其支持的模块也正在急速发展中,很有可能是在大语言应用方面的顶流(支持研究+生产)。
在这里插入图片描述

llama_index

Unleash the power of LLMs over your data。

猜你喜欢

转载自blog.csdn.net/shichaog/article/details/132513385