Large Language Models
- Large Language Models
概要
行业分层
- 基建层(infrastructure layer)
- 商业模型API(如OpenAI, Google Vertex AI)
- 开源大模型(如 LLaMa,
- 中间层
- LangChain
- 应用层
- 简单的能力封装或者API调用在商业上并不持久(例子)
- 在AI基础上构建自己的核心竞争力才是商业发展的长久之计
LLM 的应用已经超出了学术界的研究能力范围, 因为学术训练使用的数据集更多是为了评估模型的性能, 而无法反应实际应用中的具体问题。
Public NLP datasets are not reflective of how our language models are used. . . are designed to capture tasks that are easy to evaluate with automatic metrics.
Prompt Engineering
Prompt-based development
背景:机器学习开发中的测试集一直是重要的组成部分,用于算法基准测试和发表科学结论。 基于提示的开发使得可以使用很少的样本甚至没有样本构建机器学习模型。
概念:基于提示的开发:通过提供文本或视觉提示来构建机器学习模型,实现少样本学习或零样本学习。
解释:
- 使用提示进行模型开发,快速构建模型并部署到生产环境。
- 在生产环境中运行模型,并根据实时数据监测模型性能。
- 如果模型性能可接受,则开始让模型做出真实决策。
- 只有在需要更仔细的基准测试时,收集测试数据以进行进一步的实验和开发。
优势:
- 缩短构建和部署机器学习模型所需的时间。
- 可以通过少样本学习或零样本学习构建具有较高性能的模型。
局限:
- 对于涉及风险的应用,如健康、刑事司法、金融和保险等领域,仍然需要收集严格的测试集和深入验证模型性能,以管理潜在的风险。
- 概念漂移和数据漂移可能使传统测试集的概念变得有问题,最好的测试数据是生产数据。
Source: https://www.deeplearning.ai/the-batch/visual-prompting-builds-vision-models-in-seconds
基本原则
Source: https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/
Principle 1: Write clear and specific instructions
Tactics:
- Use delimiters to clearly indicate distinct parts of the input
Example:
Summarize the text delimited by triple backticks into a single sentence.
```{text}```
- Ask for a structured output
Example:
Provide them in JSON format with the following keys: ...
- Ask the model to check whether conditions are satisfied
Example:
If the text does not contain a sequence of instructions, then simply write \"No steps provided.\"
- "Few-shot" prompting
Example:
Your task is to answer in a consistent style.
Principle 2: Give the model time to “think”
- Specify the steps required to complete a task
Perform the following actions:
Step 1: ...
Step 2: ...
Step N: Output a json object that contains the following keys:
- Instruct the model to work out its own solution before rushing to a conclusion
Please think step by step
使用LLM做自动化的Prompt Engineering: https://arxiv.org/abs/2211.01910
Chain of Thoughts
Source: https://www.youtube.com/watch?v=H4J59iG3t5o
- LLM 通常在推理时表现不佳
- 使用大模型时,要求LLM先做一步一步的推演,然后再回答问题,会得到更好的结果
- 原理是:语言模型的结果生成时token by token的,所以在生成结果前,都可以做一次推演,会引入更多的计算和“思考”,这样就可以得到更好的结果
Tree of Thoughts (ToT)
Source: https://arxiv.org/abs/2305.10601
背景
语言模型在广泛的任务中被用于一般性问题解决,但在推理过程中仍然局限于基于标记的从左到右的决策过程。 在需要探索、策略先行或初始决策至关重要的任务中,语言模型可能表现不佳。
概念
一种新的语言模型推理框架,扩展了流行的Chain of Thought方法,允许对文本的连贯单元(思考)进行探索,作为解决问题的中间步骤。 ToT允许语言模型通过考虑多个不同的推理路径和自我评估选择,来进行深思熟虑的决策,并在必要时进行前瞻或回溯以做出全局性的选择。
优势
提高语言模型在需要复杂规划或搜索的任务中的问题解决能力。 允许语言模型进行多样化的推理路径和决策选择,提供更灵活的问题求解方式。 在实验中,在Game of 24、Creative Writing和Mini Crosswords等三个新颖任务上,ToT显著提升了语言模型的问题解决能力,取得了良好的成功率。
局限性
ToT使得语言模型能够更自主、智能地做出决策和解决问题,但对于那些GPT-4已经擅长的任务来说,ToT可能并不是必需的。 使用ToT这样的搜索方法可能需要更多的资源,例如GPT-4 API的成本,以提高任务性能。 使用ToT需要进行性能与成本之间的平衡,但ToT的模块化灵活性使用户能够自定义这种平衡。
向量数据库
背景:
向量数据库是专门用于处理向量数据的数据库系统。 处理向量数据的应用场景包括相似性搜索、推荐系统、图像识别等。
向量数据概念::具有向量形式的数据,常用于表示特征、嵌入(embedding)等。
选择因素:
- 运维工作:数据库的数据持久化、备份和运维工作量,是否对运维团队带来额外负担。
- 适用场景:数据库是否适用于实时对嵌入进行增删改查(CRUD)的场景,或者是否适用于搜索数据相对静态的场景。
如果应用场景中的数据相对静态,并且主要需要进行相似性搜索,可以考虑使用轻量化的向量数据索引工具,比如Facebook的FAISS。 如果应用场景中的数据有OLTP的特征,需要实时进行增删改查(CRUD),可以考虑使用Milvus。
embedding drift
embedding drift occurs when the embeddings seen in production start to drift from the ones the model was trained on
Embedding 降维
Uniform Manifold Approximation and Projection (UMAP) is a dimension reduction technique that:
- preserves the global structure of the data
- can be used to visualize high-dimensional data
- can be used to reduce the dimensionality of embeddings in a way that preserves their semantic meaning
检索增强生成 (retrieval augmented generation,RAG)
RAG(检索增强生成)通过检索相关文档,使大型语言模型(LLM)能够访问其训练集中没有的信息。但基本的RAG也存在一些常见问题:查询经常返回语义相似的结果,但未回答提出的问题,或者可能返回无关的材料,这可能会使大型语言模型(LLM)分散注意力,无法得到正确的结果。
RAG的改进方案:
- 查询扩展(Query Expansion):通过扩展用户查询,可以通过包含相关概念和关键词来改善信息检索。使用LLM使得这种技术更加有效。
- 交叉编码器重新排名(Cross-encoder reranking):重新排列检索结果以选择与您的查询最相关的结果,从而改善结果。
- 训练和利用嵌入适配器(Training and Utilizing Embedding Adapters):通过添加适配器层以重塑嵌入,可以通过强调与您的应用程序相关的元素来改善检索。
其他研究
Context Compression
拿prompt算self attention,去除低值文本,压缩prompt
https://github.com/liyucheng09/Selective_Context
LLM使用工具
Source: https://www.youtube.com/watch?v=XTczX82wzLQ
- 如何让LLM学会使用工具:
- 何时使用
- 提供清晰的使用说明
- 如何返回结果
- 使用embedding和语义相似度来检索合适的工具
- 面临挑战:
- 在正确的场合使用
- 不依赖工具
- 解析LLM的输出
解决方案: LangChain
Automatic AGI (Artificial General Intelligence) Agents
break down complex tasks into smaller components, and then use LLM to solve each component
LLMOps
开源大模型
构建领域模型 domain-specific models,如医疗、基因数据等
- 训练和部署成本更低
- 如 Biomed LM model
- 训练策略可以从小参数模型开始(如1B参数),然后逐步提升[1]
Infrastructural Challenges
- 低延迟
- 训练与部署成本
LLM observability
ml observability has two parts: monitoring and root cause analysis (data quality, drift, or performance)
Logging of prompts, response, with their embeddings. Then finding clusters and patterns of issues, indicating bad responses (by user feedback)
reference: https://docs.arize.com/phoenix/concepts/llm-observability
行业影响
未来数据
Stable Diffusion 与 GPT-3(.5) 和 GPT-4 等 AI 模型正在改变网络生态。如果人类消费的大部分内容是 AI 生成的,那么 AI 又如何继续改进其模型呢?如果 AI 用 AI 生成的数据进行训练又会发生什么?牛津、剑桥、伦敦帝国学院等机构的研究人员在预印本平台 arXiv 上发表论文,对此展开了分析。研究人员发现,这会导致 AI 模型存在不可逆转的缺陷,他们将其称之为模型崩溃(Model Collapse)。这意味着未来模型训练使用的高质量数据将会愈来愈昂贵,将可能导致网络的碎片化和封闭化,内容创作者将会竭尽全力防止其内容被免费抓取。社交媒体公司也逐渐认识到其数据的价值,对 API 访问收取昂贵费用。如果未来的模型使用容易获取的数据(很可能是其它模型生成)训练,那么这将会加速模型的崩溃,增加对模型进行中毒攻击的可能性。
https://arxiv.org/abs/2305.17493 https://tracydurnell.com/2023/06/18/ai-has-poisoned-its-own-well/
职业发展
- 新的职业: LLMD(Language Model Deployment Engineer)
- 新的工具: LLMaaS(Language Model as a Service), LLM management platform