文章目录
一、LLM与业务流程自动化
1. BPA 定义
按照不同的复杂程度和自动化规模,BPA 可以划分为以下五个类别(顺序为从简单到复杂):
有了大语言模型,就有可能开发出更加通用的、全面的自动化应用。这类应用能够使用自然语言来与人类交互(NUI 界面),而且能够理解和处理大量自然语言的文本(非结构化数据),还配备有各种可以调用的外部工具。
2. LLM 应用开发框架的分类
现存的 LLM 应用开发框架,因此也可以划分为两大类:
- 主要面向开发 ChatBot 的,例如 LangChain、Llama Index。大多数流行的所谓 RAG 开发框架、低代码开发框架(DiFy、Coze 等等),也属于这一类。
- 主要面向开发 Autonomous Agent 的,例如 AutoGPT、BabyAGI、Camel、MetaGPT、AutoGen(微软)、AutoAgents、Swarm(OpenAI)等等。这类开发框架都已经能够支持开发多 Agent 应用,可用于开发有复杂工作流的自动化应用。
除了上述两大分类外,还有一类支持自动化提示词工程的开发框架,在 BPA 应用开发领域也会越来越重要,可以缓解并解决复杂手工提示词工程中存在的工作繁重、脆弱、不可移植、技能难以在团队中传播等严重问题。这一类开发框架可以与上述两大类开发框架结合起来使用。
二、必备基础
多 Agent 应用通常都是基于角色扮演(role playing)来实现的,即每个 Agent 扮演一个角色(或岗位),仅完成这个角色(或岗位)需要完成的工作,通过事先定义的工作流相互协作。
- Autonomous Agent 开发框架:MetaGPT、AutoGPT、Swarm等
- 自动提示词工程开发框架:DSPy等
1. LLM基本知识
LLM 相关的几个术语:
- 训练 training:在训练数据集上构建复杂的模型,以捕捉更多的数据特征和模式,从而提高预测准确性;
- 评估 evaluation:对模型的性能进行定量和定性的评估,以确定模型的准确性和效率;
- 微调 fine-tuning:在预训练模型的基础上,使用少量数据进行精细调整,以适应特定任务的需求;
- 部署 deployment:将训练好的模型部署到生产环境中,以便实时处理用户请求或进行实时分析;
- 推理 inference:使用已训练好的模型进行预测或分类,以及解释模型输出的过程。
可以把 LLM 开发划分成两个层次:
- 基础 LLM 的研发
- 包括了训练、评估、微调、部署、推理所有 5 类工作;
- 成本高昂,需要万块高端显卡,耗时漫长。其中训练的成本最为高昂,只有投资上亿元的大公司才能负担得起。
- 基于基础 LLM 的应用开发
- 不包括训练、评估,仅包括微调(可选)、部署(可选)、推理。
- 因为不做训练,成本比训练小得多。仅做微调,成本只有训练的约千分之一。
- 如果微调也不做,成本比微调还要小得多,只有微调的约十分之一。
- 使用普通消费级显卡即可,例如 Nvidia GeForce 系列的 RTX 3070、RTX 4090 等。
- 将训练好的模型进一步优化瘦身之后,甚至可以部署在嵌入设备内,例如树莓派、智能手机。
在做 LLM 应用开发时,我们用到的语言模型可以划分为两大类:
- Chat 模型
- 包括 LLM 和一些优化后的小模型,自带聊天(Chat)能力。
- 开源 Chat 模型举例(Hugging Face Hub 上的名称)
- meta-llama/Meta-Llama-3.2-8B
- Qwen/Qwen2.5-7B-Instruct
- THUDM/glm-4-9b-chat
- Embedding 模型
- 用来实现文本的向量化,即所谓的嵌入,用来实现知识库类应用。
- 开源 Embedding 模型举例(Hugging Face Hub 上的名称)
- BAAI/bge-large-zh-v1.5
- nomic-ai/nomic-embed-text-v1.5
2. 模型的量化
量化在 AI 模型中,特别是在深度学习模型中,通常指的是将模型中的参数(例如权重和偏置)从浮点数转换为低位宽度的整数,例如从 32 位的浮点数转换为 8 位整数。
- 优点:减少存储需求、加速计算、减少能耗。
- 缺点:会导致模型的精度下降。因为你实际上是在用较低的精度来表示原始的浮点数,可能会损失一些信息,这意味着模型的能力会变差。
量化与语言模型文件的格式:
- 不同的语言模型文件格式,对应着不同的量化方法。
- 模型文件名中的 fp32、fp16、int8、int4 字样表示模型的量化精度。fp32 为全精度,量化精度从高到低排列顺序是:fp32>fp16>int8>int4,量化的精度越低,模型的大小和推理所需的显存就越小,但模型的能力也会越差。
3. 开源语言模型的发布平台和文件格式
目前开源语言模型主要有以下几个发布平台:
- Hugging Face Hub:https://huggingface.co
- Ollama 网站:https://ollama.com
- ModelScope(国内):https://www.modelscope.cn/home
3.1 发布平台
(1) Hugging Face Hub(世界最大的开源 AI 模型发布平台)
Hugging Face Hub 是一个协作平台,其中托管了大量的用于机器学习的开源模型和数据集,可以将其视为 ML 的 GitHub。该平台已经与 Transformers 库(Hugging Face Transformers)深度集成,使用 Transformers 库部署的模型都是从该平台下载的。
(2) Ollama
Ollama 是一个开源的 LLM 服务,提供了类似 OpenAI 的 API 和聊天界面,可以非常方便地部署最新版本的 GPT 模型并通过 API 使用。支持热加载模型文件,无需重新启动即可切换不同的模型。Ollama 由 Meta 推出,系出名门,但不限于支持自家的 Llama 系列开源 LLM。底层代码基于著名的开源项目 llama.cpp,因此可完全跨平台(支持 Linux、macOS、Windows)。
Ollama 包括两个部分:
- Ollama 网站:类似 Hugging Face Hub,也是一个开源 LLM 的发布平台,规模远小于 Hugging Face Hub,且仅包括语言模型。
- Ollama 工具:ollama 命令行工具;ollama daemon 服务,提供了与 OpenAI API 兼容的 Ollama API。
(3) ModelScope(中国版的 Hugging Face Hub)
3.2 开源语言模型文件常见格式
- Safetensors 格式——Hugging Face Hub 上最常见的模型格式
- GPTQ 格式(Generalized Post-Training Quantization)
- Hugging Face Hub 上常见的模型格式
- 是一种针对 4 位量化的训练后量化(PTQ)方法,主要关注 GPU 推理和性能
- GGUF 格式(GPT-Generated Unified Format,前身叫 GGML)
- Ollama 网站上大多数模型的格式
- 专为大型语言模型设计的二进制文件格式
- AWQ 格式(Activation-aware Weight Quantization)
- 一种类似于 GPTQ 的量化方法
- AWQ 假设并非所有权重对 LLM 的性能都同等重要。也就是说在量化过程中会跳过一小部分权重,这有助于减轻量化损失
- AQLM 格式(Additive Quantization of Language Models)
4. CUDA 开发工具集
CUDA(Compute Unified Device Architecture)是 Nvidia 推出的运算平台。是一种通用的并行计算架构,该架构使得 GPU 能够解决复杂的计算问题。
(1)对于独立的 Linux 环境:
- 安装 Nvidia 驱动程序
- 安装与显卡型号和 Nvidia 驱动程序版本兼容的 CUDA 开发工具集
- 使用 nvidia-smi 命令获取 Nvidia 驱动程序的版本号
- https://docs.nvidia.com/deploy/cuda-compatibility 查看 CUDA 版本与 Nvidia 驱动版本的兼容表。
- https://developer.nvidia.com/cuda-toolkit-archive 下载安装兼容版本的 CUDA 开发工具集,参考官方安装文档。
(2)对于通过 Windows 的 WSL2 使用的 Linux 环境:
- 在 WSL2 中启用 Nvidia CUDA
三、开源 LLM 的部署工具
开源语言模型的部署工具有很多,目前主流的有三个:
- Hugging Face Hub 命令行工具 huggingface-cli
- Ollama
- vLLM
vLLM 是加州大学伯克利分校 LMSYS 组织开源的大语言模型高速推理框架。它利用了全新的注意力算法 “PagedAttention”,提供了易用、快速、便宜的 LLM 服务。项目地址:https://github.com/vllm-project/vllm
vLLM 并没有自己的开源语言模型发布平台,它可以直接使用 Hugging Face Hub 或 Ollama 网站下载的开源语言模型,并且提供量化和加速支持。参考文档:
Hugging Face Hub 上的开源语言模型文件大多数都是 Safetensors 格式,基于 Hugging Face Transformers 库开发,依赖 PyTorch,因此需要配备很好的显卡才能流畅运行。
Ollama 是基于 llama.cpp 的,即使没有安装 Nvidia 独立显卡,只要 CPU 足够强大,内存足够多,就能运行开源 LLM。而 vLLM 是基于 CUDA 库的,必须安装 Nvidia 独立显卡,对硬件配置的要求高于 Ollama。
1. Ollama 的基本用法
- 下载安装 Ollama:
- curl -fsSL https://ollama.com/install.sh | sudo sh
- 验证 ollama 可运行:ollama --version
- Ollama 命令行工具的使用方法
- ollama pull qwen2.5:7b 下载通义千问 Qwen2.5-7B
- ollama run qwen2.5:7b 测试通义千问 Qwen2.5-7B
- ollama rm qwen2.5:7b 删除通义千问 Qwen2.5-7B
- ollama pull znbang/bge:large-zh-v1.5-f16 下载开源 Embedding 模型
- ollama list 查看已下载的模型列表
在上面的 ollama 命令行工具的使用例子中,下载部署了开源 Chat 模型阿里巴巴 qwen2.5、Embedding 模型 bge:large-zh-v1.5-f16