面试新收获-大模型学习
大模型原理
Transformer 架构与自注意力机制
Transformer 是当前大多数大模型采用的核心架构,由编码器-解码器组成,摒弃了传统 RNN 的顺序处理方式。Transformer 中关键在于多头自注意力机制(Multi-Head Self-Attention):对于序列中的每个词(Token),模型通过计算与其他词的相关性(注意力权重)来动态聚合信息,从而能够在一次计算中关注输入序列的不同位置。多头注意力通过并行多个注意力“头”来捕获不同特征子空间的关联,大幅提升了模型对长距离依赖的处理能力和并行计算效率。相比 RNN 循环网络只能顺序处理,Transformer 的自注意力机制使其能一次性处理整个序列,从而利用 GPU 并行加速训练,并取得更好的全局语义建模效果。
预训练-微调范式
大模型通常采用“预训练 + 微调”的范式。首先在海量通用文本数据上进行无监督预训练,学习通用语言表示能力;然后针对具体任务进行微调,让模型适应特定应用场景。预训练使用的目标通常是语言模型任务(如下一词预测或填空),让模型掌握语法、语义常识。而微调阶段则在较小的标注数据上训练,可以是分类、问答等任务的监督信号,使模型的输出更贴近任务需求。通过预训练获取通用知识,再微调专业能力,可以极大提高数据利用效率,避免每个任务都从零训练一个模型。这一范式已被证明在NLP各任务上效果显著,也是 GPT 系列、BERT 等模型成功的基础。现代 LLM 如 GPT-3 预训练参数上千亿(如1750亿),而微调只需针对任务的较少数据,调节少量梯度,从而实现**“一次训练,多次适用”**的高效开发模式。
指令微调(Instruction Tuning)
指令微调是一种特殊的监督微调技术,旨在让大语言模型更好地“听懂”人类指令。具体做法是收集一系列指令-响应示例(通常由人工编写或模型生成后人工筛选),然后在预训练模型上继续以这些数据进行监督训练。经过指令微调,模型能够更遵循用户意图,给出更符合指令要求的回答。例如,OpenAI 的 InstructGPT 就是对 GPT-3 进行指令微调的产物,使之相比原始 GPT-3 更善于遵循人类给出的任务说明。类似地,Meta 发布的 LLaMA-2-chat 也是在基础模型上指令调优而成。指令微调通常被视为对齐(Alignment)过程的第一步,可极大提升模型在人机交互中的实用性——模型不再仅完成句子续写,而是能够听懂诸如“请总结上述文本”等明确指示并执行。
人类反馈强化学习(RLHF)
RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)是进一步提升模型对人类偏好契合度的策略。其典型流程包括三步:
-
监督微调(SFT):先用人工示范的高质量回答对预训练模型进行一次微调,获得初步具备指令遵循能力的模型(如 InstructGPT 的初始模型)。
-
训练奖励模型(Reward Model):由人工对模型不同输出进行偏好比较,收集大量偏好数据,然后训练一个奖励模型来预测人类偏好评分。奖励模型以模型输出为输入,输出一个分数来衡量该回答有多符合人类期望。
-
策略强化优化:将步骤2得到的奖励模型作为“环境反馈”,使用强化学习算法(通常采用 PPO,Proximal Policy Optimization)来微调模型参数。策略梯度根据奖励模型给出的“奖励”信号调整语言模型,使其朝着人类偏好更高的方向优化。为了防止生成分布骤变,PPO 会限制每次更新的幅度,保证生成质量稳定。
通过RLHF,模型可以学会在遵循指令的同时,产出更让用户满意的回答。OpenAI 的 ChatGPT(GPT-3.5 系列)以及 GPT-4 就应用了RLHF来训练。值得注意的是,RLHF 的过程复杂、成本高昂,需要大量人工反馈数据和迭代训练。但其效果显著:可以纠正模型不良倾向,提升回答的有用性和安全性,使模型“更贴近人意”。
大模型开发与应用
模型微调方法:全量微调 vs LoRA/QLoRA
全量微调(Full Finetuning)需要在下游任务上调整模型的所有参数,但对于数十亿参数的模型来说训练开销巨大且容易过拟合。为提高微调效率,业界提出了参数高效微调方法,其中最常用的是 LoRA(Low-Rank Adaptation)。LoRA 的做法是冻结预训练模型的大部分权重,仅在每层加入小规模的低秩矩阵作为可训练参数。训练时只更新这些低秩适配矩阵,从而以极少的参数调节实现对模型的调优。据实验,使用 LoRA 对 GPT-3 进行微调时,需训练的参数量可从1750亿降低到约1800万,大幅降低约 2/3 的显存占用。LoRA 微调后的模型在特定任务上的表现可媲美全量微调。
QLoRA 是 LoRA 的改进变种,全称为量化 LoRA(Quantized LoRA)。它将基础模型权重先量化到更低精度(如 4-bit)以减少内存占用,然后在此基础上施加 LoRA 微调。通过低精度存储+高精度计算,QLoRA 进一步降低了微调资源需求。例如,有研究使用 QLoRA 在单张 GPU 上成功微调了 65B 参数的模型,但性能几乎没有损失。总的来说,LoRA/QLoRA 等高效微调方法让普通团队也能在消费级 GPU 上微调大模型,大大降低了应用门槛。
推理加速(ONNX、TensorRT 等)
大模型落地应用时,推理速度和延迟往往是关键挑战。针对推理阶段的优化,常用手段包括:
-
模型格式优化:将模型转换为优化的计算图格式,如 ONNX (Open Neural Network Exchange)。通过 ONNX,可以利用高效的推理引擎(例如 onnxruntime)在不同硬件上加速执行。此外,NVIDIA 的 TensorRT 是针对 GPU 推理优化的库,可以对模型进行算子融合、内存优化和半精度运算,加速Transformer推理。将模型导出为 TensorRT 引擎后,在支持硬件上常获得数倍于原生 PyTorch 的推理速度提升。
-
算子级优化:利用高性能计算库或自定义内核,实现 Transformer 中矩阵乘、softmax 等核心算子的优化版本。例如 FlashAttention 优化了长序列注意力计算,大幅减少显存访问;又如采用 fused kernel 一次完成多步运算,减少中间内存读写。硬件方面,充分利用 GPU 的 Tensor Core 进行 FP16/BF16 运算,也能提升吞吐。
-
批处理和并行:将多个输入打包成批一起推理,以摊薄每次调用开销。同时,如果有多张 GPU,可按需进行数据并行或流水线并行处理不同请求。此外对于 sequence sampling 这类生成过程,采用并行解码策略也能一定程度提高效率。
-
高效推理服务:使用专门针对大模型优化的推理服务器。例如 Hugging Face 提供的 Text Generation Inference (TGI) 框架,它集成了高效批处理和缓存策略,可用于生产环境的高吞吐部署。又如 vLLM 等方案专门为加速大模型生成而设计(后文详述)。
综合运用以上手段,可将大模型的推理延迟和成本显著降低,使其更适合实际业务部署。
分布式推理与 INT8 量化
当模型体积超出单机显存时,就需要分布式推理技术。典型方案是 模型并行 或 ZeRO 分片:将模型权重拆分到多块 GPU 显存上,每块负责一部分计算。以 Microsoft 的 DeepSpeed 框架为例,其 ZeRO-Inference 技术能将模型各层权重在多卡间分块存储,并在推理时按需交换,从而支持百亿甚至千亿参数模型的部署。虽然分布式推理会带来一些通信开销,但通过流水线并行、异步预取等优化,可以让多 GPU 协同工作,达到近似单模型的性能。
另一方面,量化技术通过降低参数数值精度来缩减模型体积、加速运算。常用的是 INT8量化,即将权重从32位浮点缩减为8位整数存储。Intel、NVIDIA 等都提供了高效的 INT8 矩阵乘单元,使得量化后推理速度提升显著,且内存占用减少 3/4。为了尽量避免精度损失,业界采用“近似无损”的量化方案。例如 LLM.int8() 使用逐列量化并对离群值单独16位存储的方法,使模型几乎不损失性能。实践表明,对 Transformer 模型进行 INT8 量化后,其在语言理解任务上的困惑度(perplexity)几乎不变。此外还有更激进的 4-bit 量化,也通过优化策略将性能损失降到可接受范围。总之,量化是大模型落地的利器,使原本需要多卡部署的模型能够在单卡甚至CPU上运行,为边缘设备部署大模型提供了可能。
模型压缩与蒸馏
为了进一步减小模型尺寸、提升推理速度,可以对大模型进行模型压缩。常见压缩技术包括:
-
知识蒸馏:利用大模型作为教师,训练一个参数量更小的学生模型,让学生模型去模仿教师模型对样本的输出分布。通过蒸馏,小模型能吸收大模型的知识,在较低复杂度下达到接近的性能。例如,用一个175B参数的模型指导一个7B模型回答问题,可使小模型性能显著提升接近大模型水平。
-
网络剪枝:分析模型中哪些权重对最终预测影响不大,将其系数置零(权重剪枝)或者移除相应的神经元/通道(结构剪枝)。剪枝后可减少模型计算量和存储,但需要在剪枝后对模型进行一定程度微调来恢复性能。
-
矩阵因子分解:将模型中的大矩阵(如权重矩阵)近似分解为两个更小的矩阵相乘,以降低参数数量。这实际上和 LoRA 的思想类似,只不过 LoRA是在保留原权重基础上附加小矩阵,这里则是替换原权重为分解形式。
-
参数共享:让模型的不同层共享参数(如 ALBERT 模型的做法),或使用循环的块结构来减少独立参数数量。
-
轻量模型架构:选择更轻量的架构替代标准 Transformer,如采用更少的层、更小的隐藏维度,或引入高效注意力(sparse attention、线性注意力)来减少计算复杂度。
通过以上技术,可以在尽量保持模型精度的前提下,将模型压缩到原始大小的一小部分,从而大幅提高推理速度、降低内存占用。这对于在移动端、Web 前端等受限环境中部署大模型尤其重要。不过压缩往往会牺牲一定性能,需要权衡取舍并针对具体任务验证效果。
主流大模型对比
当前大模型百花齐放,既有开源社区的成果,也有各大厂的旗舰模型。下面对几款有代表性的模型进行对比:
模型名称 | 参数规模 | 上下文长度 | 特点 | 开源情况 |
---|---|---|---|---|
GPT-4 (OpenAI) | 未公开(估计数千亿) | 8k tokens(32k 扩展版) | 多模态能力(可处理图像等),推理和代码能力顶尖,使用RLHF对齐 | ❌ 非开源,需API调用 |
LLaMA 2(Meta) | 7B/13B/70B | 4k tokens | 纯文本模型,开源可商用,性能较上一代提升显著 | 🔶 开源(附带许可) |
LLaMA 3(Meta) | 8B/70B;计划400B+ | 推测4k-8k(更长待公布) | 新一代开放模型,训练数据量比L2大7倍,8B/70B已超L2表现;据传400B模型接近GPT-4水平 | 🔶 开源(2024发布,部分平台提供) |
Mistral 7B | 7B | 4k tokens (支持扩展到16k+) | 法国初创公司模型,小参数下性能优异,训练高效 | ✅ 开源(Apache 2.0) |
Mixtral 8×7B | 46.7B(8个专家,共7B×8) | 32k tokens | Mistral 7B 的 MoE 稀疏专家版本,仅使用约12.9B参数/Token推理,推理速度比70B快6倍,性能超LLaMA2 70B并逼近GPT-3.5 | ✅ 开源(Apache 2.0) |
Claude 3 (Anthropic) | 未公开(估计数百亿) | 200k tokens(可扩展至>100万) | 注重安全性的对话模型,擅长长上下文处理,支持图像输入,有不同规模版本(Haiku/Sonnet/Opus) | ❌ 非开源,需API调用 |
Gemini 1.5 (Google) | 未公开(多专家架构) | 128k tokens(实验达100万) | 多模态下一代模型,采用全新 Mixture-of-Experts 架构,训练和推理更高效,长上下文能力强 | ❌ 非开源(云服务提供) |
🔶 部分开源(需遵循发布许可,例如LLaMA 2需接受其社区许可证)。
✅ 完全开源(通常采用Apache 2.0等许可,无使用限制)。
❌ 非开源(权重不公开,只能通过API或平台使用)。
上述模型各有侧重。
OpenAI 的 GPT-4 目前在综合能力上领先,但作为闭源模型使用需付费API且无法自行定制。
Meta 的 LLaMA 系列走开源路线,LLaMA 2 提供了高性能且可商用的基础模型,已被广泛用于下游微调;最新的 LLaMA 3 据报道进一步提升了规模和性能,试图逼近GPT-4水平。
Mistral 7B 展示了小模型的大威力,在7B参数下利用更优的训练策略达到接近30B模型的效果。其改进版 Mixtral 8×7B 更是采用稀疏专家(MoE)架构,将模型容量扩展至近47B但推理开销仍似12.9B模型,性价比极高。
Anthropic 的 Claude 3 注重长文本处理和安全,对话风格稳健,提供了高达百万级的超长上下文窗口。
谷歌的 Gemini 1.5 则代表多模态和稀疏专家结合的新方向,在图像、文本等多模态理解以及推理效率上都有突破,是下一代通用大模型的雏形。
总体而言,如果追求最高性能和多模态能力,可考虑 GPT-4 或 Gemini 等;如果侧重可控性、成本和定制,开源的 LLaMA 系列、Mistral 系列是很好的选择;而 Claude 3 等提供了长上下文对话的新范式,适合需要超长文档分析的应用。根据具体应用场景和资源约束,选择合适的大模型可以事半功倍。
工具链与框架使用
大模型的开发和部署离不开完善的工具链。以下列出业界常用的库和框架:
-
Hugging Face Transformers:最流行的深度学习模型库,提供了上千种预训练模型的接口,涵盖Transformer加载、训练、推理的全流程。开发者可以通过
from transformers import AutoModel, AutoTokenizer
等简单命令获取如 GPT-2、BERT、LLaMA-2 等模型。它支持 PyTorch 和 TensorFlow,并集成了Tokenizers快速分词等工具,非常适合快速验证和Fine-tuning模型。在 Hugging Face Hub 上还能找到丰富的社区微调模型和数据集资源。 -
DeepSpeed:由微软推出的训练加速库,专注于大模型的分布式训练和内存优化。其 ZeRO 技术将优化器状态、梯度和模型参数切分到多GPU,极大降低单卡显存占用,曾用于训练高达数千亿参数的模型。对于推理,DeepSpeed-Inference 也提供了异步流水线和张量并行方案,加速大模型推理。总之,当需要训练/部署超大模型时,DeepSpeed 是重要利器。
-
vLLM:一种高性能的开源推理引擎,专为LLM服务优化。vLLM 的核心创新是 PagedAttention 方法,将注意力的KV缓存分页管理,类似操作系统的虚拟内存机制medium.com。这一机制显著减少了长上下文时的内存浪费,使多请求并发处理更加高效medium.com。实测显示,vLLM 在实际基准中吞吐量比直接使用 Transformers 提升14~24倍,即使对比经过优化的TGI服务器也快约3.5倍medium.com。因此,在需要同时处理大量生成请求的场景(如聊天机器人服务)中,vLLM 可在相同硬件下支撑数倍的并发用户,提高性价比。
-
Text Generation Inference (TGI):Hugging Face 提供的开源推理服务框架,专门针对文本生成模型部署。TGI用C++后端实现了高效的批量调度和推理,支持FP16量化、并行计算等优化,可大幅提升Transformer模型在服务端的吞吐,满足生产级高并发需求。它还支持多模型托管和HTTP API接口,方便与现有系统集成。许多开源模型的Demo(包括LLaMA-2官方Demo)即基于TGI搭建。
-
OpenAI API:对于OpenAI提供的 GPT-3.5、GPT-4、DALLE 等模型,开发者可以使用其云端API。通过 RESTful 接口,后端服务器可以直接调用这些强大的模型生成内容,而无需自行部署模型。OpenAI API 提供流式输出、参数调控等功能,使用便捷。但需要注意请求费用和速率限制。在敏感数据场景下也需考虑将提示经过脱敏处理后再发送,以保护隐私。总体来说,当不方便自行训练或部署模型时,调用云服务API是快速集成大模型能力的方式。
-
LangChain:一个用于构建由LLM驱动的应用的编排框架。LangChain 提供了标准化接口来连接语言模型与外部工具/数据。开发者可以用 LangChain 将 LLM 同数据库、互联网搜索、计算引擎等组合,使模型具备调用工具的能力。例如,可以让模型自动检索知识库以回答专业问题,或分步执行规划任务。LangChain 还支持记忆机制和对话状态管理,非常适合构建多轮对话代理、自动化助手等。此外,LangChain 对各大模型(OpenAI, HF Transformers 等)都提供兼容封装,在实验不同模型和提示模板时极其方便。总之,当需要开发复杂的链式Prompt流程或让模型执行复杂操作时,LangChain 是首选框架。
-
LlamaIndex (GPT Index):一个旨在将LLM与自有数据结合的数据框架。LlamaIndex 提供简洁的接口来将文档、数据库等构建为索引,以便后续让LLM检索和利用。典型用法是:先用 LlamaIndex 将企业内部文档解析成向量索引,然后通过一个检索增强的Prompt,让 LLM 在回答问题时先从索引中提取相关信息。这样模型就能利用最新的或私有的知识,而不局限于训练语料中固有的内容。LlamaIndex 支持多种向量数据库和数据源插件(超过300种集成)。对于构建知识库问答、企业搜索助手等应用,LlamaIndex 能极大简化开发工作,免去繁琐的手动切分文档、向量搜索流程。
以上工具链覆盖了模型层、服务层和应用层。在实际项目中,可以将它们组合使用:例如用 Hugging Face 提供预训练模型 + LoRA 方法微调,然后借助 DeepSpeed 将模型部署在多卡集群上,推理时使用 vLLM/TGI 提升吞吐,应用端通过 LangChain 编排模型与业务数据交互。这套组合拳能够加速大模型从开发到落地的全流程。
最新热点技术
监督微调 (SFT) 与直接偏好优化 (DPO)
**SFT(Supervised Fine-tuning)**指利用高质量的人类标注数据对大模型进行监督微调,是对齐过程中最基础也最重要的一步。比如为让模型学会回答问题,先用人类撰写的大量问答对来微调模型;为让模型遵循安全准则,则用包含正确信号和错误示范的数据来训练模型区分对错。SFT 后模型基本具备按人类意图输出的能力,也是后续RLHF的起点。
DPO(Direct Preference Optimization,直接偏好优化)是2023年提出的新方法,旨在不用强化学习也能让模型对齐人类偏好。DPO把偏好对比数据直接融入损失函数进行优化:给定同一提示下的好回答 y^w和差回答 y^l,让模型直接优化其对 y^w概率高于 y^l。这样无需训练复杂的奖励模型和用RL算法迭代,直接通过简单的交叉熵损失即可完成偏好对齐。实验证明,DPO 的稳定性和效果与传统RLHF相当,在某些设置下甚至更好。由于省去了强化学习的不稳定性,DPO 备受关注。此外还有 IPO(Identity Preference Optimization)等改进,在损失中加入正则项避免过拟合偏好数据。总之,DPO 提供了一种更直接高效的模型对齐手段,有望降低大模型微调对齐的技术难度。
稀疏专家模型 (MoE)
Mixture of Experts (MoE) 模型是提升模型容量的一种架构创新。传统 Transformer 是一个密集模型,所有输入都经过相同的全量参数处理;而 MoE 将模型划分为多个“专家”子网络,每个输入token由一个路由器动态选择其中一部分专家计算。例如,Mixtral 8×7B 中有 8 个专家,每层每个token只激活其中2个专家,最终每个token只使用约12.9B参数计算输出。这样模型总参数达46.7B,但单次推理只需调用一小部分专家,等效开销类似于一个13B参数模型。MoE 的好处是:在增加总参数量(提高模型潜在表示能力)的同时,推理和训练的计算成本增长有限。这使得模型可以“更大更聪明”而不会完全被算力拖累。Google 最早在 Switch Transformer 中验证了 MoE 的威力,而近期 Google Gemini 1.5 更是采用了新的 MoE 架构作为突破。MoE 模型在预训练速度上也更快,因为每个batch可以并行利用不同专家。不过,MoE 也有挑战:通信开销增大、训练不稳定(需要特殊的路由器损失来均衡专家负载)、部署时需要加载所有专家(内存占用高)。即便如此,稀疏专家作为模型扩展的前沿方向,越来越受到关注。开源社区的 Mixtral 系列证明了小团队也能训练成功 MoE 大模型。未来我们可能看到更多采用 MoE 技术的新模型,实现参数规模和推理效率的“双赢”。
自主 Agent 技术 (AutoGen、CrewAI 等)
随着大模型在决策和推理上的能力增强,Agent(智能体)技术成为热点。这里的 Agent 指由大模型驱动的、自主执行任务的人工智能角色。Agent 可以通过调用工具、与环境交互甚至与其他 Agent 对话来完成复杂目标。例如,微软研究推出的 AutoGen 框架,允许开发者构建多智能体对话系统:多个 LLM Agent 彼此对话协作,分工解决问题。每个 Agent 可以有不同角色(如一个擅长规划、一个擅长计算),他们能相互发送消息、调用外部API,最终联合完成用户交付的任务。AutoGen 提供了基础设施让开发者用自然语言或代码来定义这些 Agent 的行为模式和交互流程。这种多智能体的设计在代码生成、复杂问答、多步骤推理等场景展示出很强的效果。
另一个概念是 CrewAI,顾名思义让一组 AI 作为“团队(crew)”协同工作。它与 AutoGen 思想类似,都属于 Agent Orchestration(智能体编排)技术的一种探索。通过 CrewAI,可以预设一系列专家型 Agent,各自有特定技能(如翻译、绘图、推理),当收到任务时由一个调度Agent将子任务分配给合适的成员,然后汇总结果。这有点类似人类团队分工合作,提高了AI系统处理复杂任务的可靠性和效率。虽然具体实现细节各异,但 AutoGen、CrewAI 等代表了一股趋势:将单一的大模型升级为多个智能体组成的自治系统。这使得AI不再被动回答单个指令,而是能自主决策、多步执行,解决更复杂的问题。在面向未来的应用中,Agent 技术有望与大模型结合,打造出更智能的自动化助手和决策系统。
企业级落地趋势:RAG、私有部署与多租户架构
随着大模型技术成熟,企业界正积极将其引入各类业务场景。然而,与消费级应用不同,企业落地需要考虑数据私密、部署成本、多用户服务等特殊需求。以下是当前企业应用大模型的几大技术趋势:
1. 检索增强生成(RAG)系统优化
企业中很多应用需要模型结合企业内部知识库进行问答或分析。例如客服机器人要引用产品手册内容回答客户问题,法律检索要引用法规条文。这些场景适合采用RAG架构:将企业知识以向量数据库或全文检索形式存储,LLM每次根据用户问题检索相关内容,再基于这些内容生成回答。这样既避免模型“胡编”公司内部数据,又可动态更新知识库以确保时效性。当前重点在于优化RAG各环节以提升准确性和效率:
-
更好的检索:针对企业领域,使用领域定制的embedding和语义搜索提升相关性。例如面向医疗领域的问题,采用专门微调的向量模型来获取更准确的语义相似度。还可结合知识图谱或结构化数据库提高精确度。
-
检索-生成融合:采用检索-重排-阅读三段式架构。检索器先找若干候选文档片段,然后通过一个小的重排序模型按照与问题的匹配度重新排序databricks.com(可训练),最后LLM阅读排名靠前的片段作答。这样能过滤掉部分不相关材料,减少模型负担,提高答案质量。
-
减少上下文长度压力:传统RAG将检索结果简单拼接在Prompt中,长度过大时效果变差。为此有研究将检索到的信息通过工具调用方式提供给模型,而非生硬拼接。例如,通过OpenAI函数调用,先把资料传给模型一个tool函数,模型需要某段资料时才调用,这样模型不会被过多无关信息干扰。此外,一些压缩上下文的方法(摘要、知识三元组抽取等)也在应用,帮助模型更高效地利用检索结果。
-
结果引用与可解释:企业很看重输出结果的可溯源性。因此RAG系统通常会让模型给出回答同时附上引用来源(如文档名或链接)。像微软Bing Chat那样,在答案句子后加上来源编号arxiv.org。这要求模型在Prompt设计和后处理上进行引导。通过few-shot示例或特殊标记,引导模型将引用文档整合到回答中。这增强了回答的可信度,也方便人工审核。
2. 私有化部署的新方法
许多企业出于数据安全和合规要求,倾向于在本地或专有云部署大模型,而非调用公共API。这就需要解决模型落地成本和性能问题。最新的趋势有:
-
开源大模型定制:企业往往选择开源模型(如LLaMA 2、Mistral等)作为基础,在自己的数据上进行轻量微调或LoRA增量训练。这样模型权重完全可控,不存在数据外泄风险。例如,一家法律咨询公司用LLaMA 2微调了内部法律问答数据,得到一个懂本地法规的对话模型,内部部署服务律师们使用。
-
高效微调方案:为降低私有数据微调成本,诸如LoRA、QP-Tuning等参数高效微调方法被广泛采用。只需调优模型很小一部分参数,就能让模型掌握企业专属知识或风格。比如LoRA仅插入低秩权重,内存开销很小,这使得在一台普通GPU上也能微调数十亿参数模型。
-
数据不出本地:一些云厂商提供把模型“带到数据”而非“数据送上云”的方案。例如微软Azure的认知服务支持在本地私有环境运行OpenAI模型推理,保证输入输出不经微软服务器。OpenAI 也推出了ChatGPT Enterprise版,承诺不将客户数据用于训练模型,并提供专用隔离的推理实例。这样企业可以用上强大模型,又满足合规要求。
-
软硬件一体优化:NVIDIA、Intel等纷纷推出针对本地大模型推理的解决方案。比如NVIDIA的NeMo框架与TensorRT优化,可将模型压缩并充分利用GPU张量核心,实现本地最高效推理;Intel 则通过OneAPI和优化库让大模型在CPU上运行更快,方便部署在CPU服务器上。甚至有硬件创业公司推出“大模型推理加速卡”,企业将其插入现有服务器即可提升模型运行效率。这些降低了私有部署的硬件门槛。
总之,如今**“大模型私有化”**已成为热门服务方向,从完整开源解决方案到厂商定制方案应有尽有。企业可以根据自身需求选择:要绝对离线安全,可以用开源模型+自主部署;对模型能力要求极高,也可采购厂商私有云实例,总之灵活性显著提高。
3. 多租户推理架构: 企业经常需要让一个模型服务多个应用或客户,而这些用户的会话彼此隔离、并发进行。这就需要支持多租户(Multi-tenant)的推理架构,既高并发又无数据串扰。为此,开发高效的多会话调度和隔离技术非常关键。
如前文推理加速部分提到的,vLLM等引擎本身就是为多租户场景设计的:通过PagedAttention和连续批处理,使得单机就可以高效处理众多并发请求。这对企业内部服务多个部门、每部门都有各自的对话上下文,非常实用。在多租户场景下,要确保:
-
数据隔离:每个会话的历史和机密信息不会泄露到别的会话的上下文中。底层实现上KV缓存分页等机制天然提供了隔离。此外,服务端还需严格在软件上隔离不同API调用者的身份和上下文。
-
资源公平与限流:防止某一租户大量请求占满全部算力。可以在架构上对每个租户设定QPS上限或优先级调度。例如为付费更高的客户保证更低延迟。像Transformer Serving框架(HuggingFace TGI等)都提供多队列、多worker的设计,以支持多租户服务。
-
伸缩性:当租户增加,请求量猛涨时,架构可以水平扩展(加机器)或垂直扩展(上更强GPU)来应对。这需要无状态或轻状态的服务设计。许多企业将模型封装成容器,由Kubernetes等编排,以便根据负载自动扩缩容,实现弹性服务。
目前的解决方案包括:开源的text-generation-inference(TGI)服务器,可高效批量调度多个生成请求;微软的 ORTInference 加强版,能够在CPU上并行多个推理;以及云厂商的托管服务(如AWS Bedrock、Azure OpenAI)本身为多租户设计,开发者只需调用API即可。对于自行部署,vLLM是上佳选择,其论文在SOSP 2023中详细阐述了如何实现23倍吞吐提升同时降低P50延迟。通过这些技术,即使面对高并发访问,企业也能让模型保持稳定快速响应。
MCP
1. MCP是什么?
Model Context Protocol (MCP) 是由Anthropic开发的开放协议,用于标准化AI助手(如Claude)与外部数据源和工具之间的交互。它提供了一个统一的接口,让AI能够安全、高效地访问各种资源。MCP协议通过标准化模型之间的上下文交换,使得不同的模型可以理解彼此的意图、状态以及所需的信息,达到更高效的协同工作。
2. MCP的主要组件
[AI Assistant]host <-> [MCP Client] <-> [MCP Server] <-> [External Resources]
- MCP Server: 提供数据或功能的服务端
- MCP Client: AI助手和服务器之间的通信桥梁
- MCP Host: 托管AI助手的环境(如Claude Desktop应用)
其他
balabalabala
相关文章:
面试新收获-大模型学习
大模型原理 Transformer 架构与自注意力机制 Transformer 是当前大多数大模型采用的核心架构,由编码器-解码器组成,摒弃了传统 RNN 的顺序处理方式。Transformer 中关键在于多头自注意力机制(Multi-Head Self-Attention)…...
《Keras 3部署全攻略:从新手到实战高手》
《Keras 3部署全攻略:从新手到实战高手》 一、引言:开启 Keras 3 部署之旅 在深度学习的广阔领域中,Keras 一直以其简洁易用、高度模块化的特性,深受开发者的喜爱,被誉为深度学习的 “福音”。而如今,Keras 3 的强势登场,更是为这个领域注入了全新的活力。它像是一位集…...
如何修改npm的全局安装路径?
修改 npm 的全局安装路径可以通过以下步骤完成,确保全局包(使用 -g 安装的模块)和缓存文件存储到自定义路径。以下是详细步骤: 1. 创建自定义路径的目录 在目标路径下创建两个文件夹,分别用于存储全局模块和缓存文件…...
计算机网络 | Chapter1 计算机网络和因特网
💓个人主页:mooridy-CSDN博客 💓文章专栏:《计算机网络:自定向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 🌹关注我,和我一起学习更多计算机网络的知识 🔝🔝 目录 …...
前端面试 HTML篇
src和href的区别 src和href都是用来加载外部资源,区别如下 src:当浏览器解析到该元素时,会暂停其他资源的加载和处理,直到该资源加载完成。 它会将资源内容嵌入到当前标签所在的位置,将其指向的资源下载应用到文档内…...
Prometheus、Zabbix 和 Nagios 这三个工具的对100个节点的部署设计的信息流
Prometheus 1. 基本组件及角色 Prometheus主要由Prometheus Server、Exporter、Alertmanager和Grafana(可选)等组件构成。 Prometheus Server:负责数据的收集、存储和查询,以及规则的评估。Exporter:部署在被监控节点上,负责收集节点的各种指标数据。Alertmanager:负责…...
Tableau 基础表制作
目录 1.数据连接 2. 数据可视化 3. 基础表制作 3.1 对比分析:比大小 1. 柱状图 2. 条形图 3. 热力图 4. 气泡图 5. 词云 3.2 变化分析:看趋势 1. 折线图 2. 面积图 3.3 构成分析:看占比 1. 饼图 2. 树地图 3. 堆积图 3.4 关…...
openAICEO山姆奥特曼未来预测雄文之三个观察
《三个观察》 山姆奥特曼 这篇文章主要讲的是关于AGI(人工通用智能)的未来发展及其对社会的影响,用大白话总结如下: 核心观点: AGI是什么? AGI是一种能像人类一样解决各种复杂问题的智能系统,比…...
springboot入门-service层构造器注入原理
在 Spring Boot 中,通过构造器注入的方式将 Repository(JPA)或 Mapper(MyBatis)注入到 Service 层的原理及示例如下: 1. 构造器注入的原理 依赖注入(DI)机制: Spring 容…...
JavaScript 笔记 --- part6 --- JS进阶 (part1)
JS 进阶(part1) 作用域 局部作用域 定义: 局部作用域指的是在函数内部定义的变量,只能在函数内部访问,外部不能访问。 特点: 局部作用域变量只能在函数内部或代码块中访问,外部不能访问。 分类: 函数作用域: 指的是在函数内部定义的变量&…...
使用matplotlib绘制Raincloud图/云雨图/柱状图/小提琴图
需求: 使用Python的matplotlib绘制数据分布、数据箱型图、数据散点图 参考: https://blog.csdn.net/weixin_39559994/article/details/128197965?fromshareblogdetail&sharetypeblogdetail&sharerId128197965&sharereferPC&sharesource…...
BT152-ASEMI机器人率器件专用BT152
编辑:LL BT152-ASEMI机器人率器件专用BT152 型号:BT152 品牌:ASEMI 封装:TO-220F 批号:最新 引脚数量:3 封装尺寸:如图 特性:单向可控硅 工作结温:-40℃~150℃ …...
【Redis——通用命令】
文章目录 Redis为什么快?生产环境的概念Redis中最核心的两个命令get:通过key拿valueset:将key和value存入数据库 其他通用命令keysexist判定key是否存在delexpire:为指定的key设置一个过期时间TTL(Time To Live&#x…...
qt之开发大恒usb3.0相机一
1.在大恒相机给的sample里没有看见qt开发的demo. 第一步先运行c sdk中中的demo,看了下代码,大恒使用的UI框架是MFC.然后 vs2022编译。运行结果 第一步,先用qt进行坐下页面布局,如下图(保存图片的地方做了些更改&#…...
系列位置效应——AI与思维模型【80】
一、定义 系列位置效应思维模型是指在一系列事物或信息的呈现过程中,人们对于处于系列开头和结尾部分的项目的记忆效果优于中间部分项目的现象。具体而言,开头部分的记忆优势被称为首因效应,结尾部分的记忆优势被称为近因效应。这种效应反映…...
解决conda虚拟环境安装包却依旧安装到base环境下
最近跑项目装包装到几度崩溃,包一直没有安装到正确位置,为此写下这篇文章记录一下,也希望能帮到有需要的人。(此文章开发环境为anaconda和window) 方法一 先conda deactivate,看到(base)消失…...
设计看似完美却测不过? Intra-Pair Skew 是「讯号完整性(Signal Integrity)」里最隐形的杀手
各位不知道有没有遇过,一对很长的差分走线,看起来很正常,但是测试结果偶尔会fail偶尔会pass,不像是软件问题,也不像是制程问题。 看了一下Layout,发现阻抗匹配控制的非常好,TDR测试也显示阻抗好…...
使用MyBatis注解方式的完整示例,涵盖CRUD、动态SQL、分页、事务管理等场景,并附详细注释和对比表格
以下是使用MyBatis注解方式的完整示例,涵盖CRUD、动态SQL、分页、事务管理等场景,并附详细注释和对比表格: 项目结构 mybatis-annotation-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.example/…...
【头脑风暴】加权平均
一些加权平均而不是算术平均的思路,启发来源:ACLS,WACLS。 简单平均假设所有样本的误差和噪声特性相同,但在实际电路中,不同阶段、不同时间点的样本价值(对最终精度的贡献)是不同的。加权平均的核心思想…...
DAM-3B,英伟达推出的多模态大语言模型
DAM-3B是什么 DAM-3B(Describe Anything 3B)是英伟达推出的一款多模态大语言模型,专门用于为图像和视频中的特定区域生成详细描述。用户可以通过点、边界框、涂鸦或掩码等方式来标识目标区域,从而得到精准且符合上下文的文本描述…...
2025年暨南大学 ACM校赛分析与题解
文章目录 C.最长公共前缀D.排列H.回文串 法不定法,在于因时因势AC不了就是还得加练! C.最长公共前缀 字典树模版题目,不了解字典树的同学,可以看我的另一篇博客 算法 之 字典树 class Node: # 和模版题目相似,但是多…...
图像处理——边缘检测
1 概述 边缘检测是图像处理和计算机视觉中的一项基本技术,用于识别图像中亮度变化剧烈的像素点,这些像素点通常对应于物体的边界。它通过检测图像中亮度或颜色变化显著的区域,提取出物体的轮廓,常用于计算机视觉、图像处理和模式识…...
认识哈希以及哈希表的模拟实现
文章目录 1.什么是哈希2.哈希函数2.1 除留余数法/除法散列法2.2 乘法散列法2.3 全域散列法 3.哈希冲突4.解决哈希冲突的方法4.1 开放定址法4.1.1 用除留余数法和线性探测模拟实现简单的哈希表 4.2 链地址法4.2.1 用除留余数法和链地址法模拟实现简单的哈希表 1.什么是哈希 概念…...
【Castle-X机器人】二、智能导览模块安装与调试
持续更新。。。。。。。。。。。。。。。 【Castle-X机器人】智能导览模块安装与调试 二、智能导览模块安装与调试2.1 智能导览模块安装2.2 智能导览模块调试2.2.1 红外测温传感器测试2.2.2 2D摄像头测试 二、智能导览模块安装与调试 2.1 智能导览模块安装 使用相应工具将智能…...
硬件须知的基本问题2
目录 1、典型电路 1. DC5V 转 DC3.3V 电路 2. 通信电路 2、STM32F103RCT6 最小系统如何设计搭建电路 1. 电源电路 2. 复位电路 3. 时钟电路 4. 下载电路 5. 单片机连接连接 3、请列举你所知道的二极管型号? 1. 整流二极管 2. 小信号二极管 3. 肖特基二极管 4. 超…...
Dify 使用 excel 或者 csv 文件创建知识库
Dify 使用 excel 或者 csv 文件创建知识库 1. 创建知识库2. 创建聊天助手3. 其他 1. 创建知识库 创建知识库,导入excel/csv文件, 文件内容, 单击 “预览块”,可以确认会生成多个键值对的块, 配置 Embedding 模型和检索…...
深入理解二叉树遍历:递归与栈的双重视角
二叉树的遍历前序遍历中序遍历后续遍历总结 二叉树的遍历 虽然用递归的方法遍历二叉树实现起来更简单,但是要想深入理解二叉树的遍历,我们还必须要掌握用栈遍历二叉树,递归其实就是利用了系统栈去遍历。特此记录一下如何用双重视角去看待二叉…...
通过gap看margin和padding在布局中的应用
在CSS布局中,控制元素之间的间距有多种方式:margin、padding,还有新晋的gap属性。虽然选择多了,但这也带来了不少头疼的问题。比如,你的自定义组件到底该不该加margin?如果加了,那在使用这个组件…...
图像畸变-径向切向畸变实时图像RTSP推流
实验环境 注意:ffmpeg进程stdin写入两张图片的时间间隔不能太长,否则mediamtx会出现对应的推流session超时退出。 实验效果 全部代码 my_util.py #进度条 import os import sys import time import shutil import logging import time from datetime i…...
2025最新Facefusion3.1.2使用Docker部署,保姆级教程,无需配置环境
Docker部署Facefusion 环境 windows10 Facefusion3.1.2 安装 拉取源代码 git clone https://github.com/facefusion/facefusion-docker.git 此处如果拉不下来,需要科学上网,不会的可以找我。 运行容器 将Dockerfile.cpu文件中的的From python:3.…...
区块链实战:Hyperledger Fabric多节点网络部署与高性能业务链码
一、联盟链架构设计与技术选型 1.1 架构设计原则 联盟链采用分层架构,包含应用层、共识层、网络层和数据层: 应用层:提供用户接口(Web/API)和智能合约交互入口共识层:采用PBFT或…...
C++学习笔记(四十)——STL之归约算法
STL 算法分类: 类别常见算法作用排序sort、stable_sort、partial_sort、nth_element等排序搜索find、find_if、count、count_if、binary_search等查找元素修改copy、replace、replace_if、swap、fill等修改容器内容删除remove、remove_if、unique等删除元素归约for…...
docker容器运维工具——ctop
概述 Github主页:https://github.com/bcicen/ctop 当服务器上运行多个容器时,迅速查看所有容器运行情况及指标将会大为提高工作效率。ctop工具可以像top命令一样,对所有容器进行总览,并实现简单的操作。 部署 下载(…...
RAG vs 微调:大模型知识更新的最优解之争
一、技术本质:知识注入的两条路径 在大模型应用落地的实践中,RAG(检索增强生成)与微调(Fine-tuning)已成为知识更新的两大核心技术路径。二者的本质差异在于是否对模型参数进行修改: 维度RAG微…...
FPGA前瞻篇-组合逻辑电路设计-多路复用器
多路选择器(MUX)简介 基本概念 多路选择器(MUX,Multiplexer)是一种多输入、单输出的组合逻辑电路。 它通过选择控制信号,在多个输入信号中选择一个连接到输出端。 可以理解为一个多路数字开关。 &…...
Day13(前缀和)——LeetCode2845.统计趣味子数组的数目
1 题目描述 给定一个下标从0开始的数组nums,以及整数modulo和k。找出并统计数组中趣味子数组的数目: 在范围[l,r]内,设cnt为满足nums[i]%modulok的索引i的数量,并且cnt%modulok。子数组是数组中的一个连续非空的元素序列。 其中一…...
WebcamJS中文文档
文章目录 WebcamJS针对Chrome 47及以上版本的重要说明浏览器支持演示示例开源协议快速入门指南配置初始化拍摄照片自定义图像大小裁剪图像翻转图像(镜像模式)冻结/预览图像设置备用SWF文件位置重置(关闭)API 参考自定义事件向服务器提交图像跟踪上传进度包含在现有表单中自…...
论文笔记(八十)π0.5: a Vision-Language-Action Model with Open-World Generalization
π0.5: a Vision-Language-Action Model with Open-World Generalization 文章概括摘要I. 引言II. 相关工作通用机器人操作策略。非机器人数据的协同训练。使用语言进行机器人推理和规划。具有开放世界泛化能力的机器人学习系统。 III. 序言IV. π 0.5 π_{0.5} π0.5 模型与…...
pymongo功能整理与基础操作类
以下是 Python 与 PyMongo 的完整功能整理,涵盖基础操作、高级功能、性能优化及常见应用场景: 1. 安装与连接 (1) 安装 PyMongo pip install pymongo(2) 连接 MongoDB from pymongo import MongoClient# 基础连接(默认本地,端口…...
硬件须知的基本问题1
目录 1. 电路表示中的电压源表示符号有哪些? 2.查找电路表示中的电流源表示符号有哪些? 3.上拉电阻和下拉电阻的作用是什么? 4.0 欧姆电阻在电路中有什么作用? 5.电容的耦合…...
LangChain 中的 Task(任务) 主要通过 生成器(Generator) 实现,而非传统的迭代器(Iterator)
LangChain 中的 Task(任务) 主要通过 生成器(Generator) 实现,而非传统的迭代器(Iterator)。以下是关键分析: 任务链的流程控制 LangChain 的 链式结构(Chains࿰…...
加里·基尔代尔:CP/M之父与个人计算时代的先驱
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 加里基尔代尔:CP/M之父与个人计算时代的先驱 一、早年生活与教育背景 1.…...
深入解析Spring Boot配置处理器:机制、架构与实践
深入解析Spring Boot配置处理器:机制、架构与实践 Spring Boot的配置处理器(spring-boot-configuration-processor)是支撑其智能配置体验的关键组件。本文结合实际开发需求,从使用方式、底层原理到性能优化与架构设计,…...
Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed:
环境: Ragflow17.2 debian12.8 问题描述: Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed: The method is not allowed for the requested URL. 后台日志: 2025-04-25 13:54:25,988 ERROR 235204 405 Method Not Allowed:…...
Maven进阶知识
一、Maven 坐标 (一)概念 在 Maven 中坐标是构件的唯一标识,其元素包括 groupId、artifactId、version、packaging、classifier。其中 groupId、artifactId、version 是必定义项,packaging 默认为 jar。 (二&#x…...
通过门店销售明细表用SQL得到每月每个门店的销冠和按月的同比环比数据
假设我在Snowflake里有销售表,包含ID主键、门店ID、日期、销售员姓名和销售额,需要统计出每个月所有门店和各门店销售额最高的人,不一定是一个人,以及他所在的门店ID和月总销售额。 统计每个月份下,各门店内销售额最高…...
聊聊Spring AI Alibaba的YuQueDocumentReader
序 本文主要研究一下Spring AI Alibaba的YuQueDocumentReader YuQueDocumentReader community/document-readers/spring-ai-alibaba-starter-document-reader-yuque/src/main/java/com/alibaba/cloud/ai/reader/yuque/YuQueDocumentReader.java public class YuQueDocument…...
Tauri文件系统操作:桌面应用的核心能力(入门系列四)
今天我们来聊聊Tauri中一个超级重要的功能 - 文件系统操作。这可是Web应用和桌面应用最大的区别之一。在浏览器里,出于安全考虑,我们对文件系统的访问被限制得死死的。但在Tauri桌面应用中,我们可以安全地访问用户的文件系统,这简…...
网络流之最大流(Dinic)
正文 在了解了Ford-Fulkerson 和Edmonds-Karp之后,我们可以进一步学习更高效的算法——Dinic。 Dinic算法的时间复杂度是O(VE),实际运用过程中是比EK算法快的。 特性Ford-FulkersonEdmonds-Karp (EK)Dinic 增广路径选择 任意方式BFS找最短路径分层图多…...
LVGL模拟器:NXP GUIDER+VSCODE
1. 下载安装包 NXP GUIDER:GUI Guider | NXP 半导体 CMAKE:Download CMake MINGW:https://github.com/niXman/mingw-builds-binaries/releases SDL2:https://github.com/libsdl-org/SDL/releases/tag/release-2.30.8 VSCODE&…...