大模型应用工程化过程

news2024/10/6 22:30:31

         近年来,以人工智能为代表的新一代信息技术加速应用,特 别是基于大模型、大数据、大算力的 ChatGPT 的发布,标志着人 工智能技术取得里程碑式突破,推动科技创新进入新阶段。随着 大模型技术的迅猛发展和场景价值的不断涌现,该技术或将重塑 多个行业的工作方式和格局。

大模型应用工程化各环节

        大模型相较于中小模型,具有更好的表示能力、泛化能力、学习能力和语义表达能力,但其参数量巨大、训练所需数据量和 算力资源多、部署运营更为复杂,工程化落地涉及数据构建、模型算法、模型训练、模型压缩与加速、模型评测、模型运营和安 全可信等多个复杂环节。

        1)数据构建

        训练大模型需要海量数据做支撑,高质量数据集的构建和处 理对于大模型的性能表现至关重要。训练数据集一般需要涵盖多 种类型、多种领域的数据来源,并配以相应的数据预处理过程。 根据数据来源不同,大模型的训练数据主要可分为公开数据、商 业数据和私有数据。大模型参数量需要跟训练数据集大小相匹配, 简单堆砌参数量并不能无限度地提升其性能。通过提升训练数据 集质量和内容丰富度、加入一些特定数据集、合理利用外挂知识 库资源、合理配置各种类型数据配比等方式,可以有效提升大模 型的整体性能,减少模型幻觉,并加快模型的收敛速度。

       高质量的数据预处理是提升模型表现和安全可靠性的重要3 手段。比如自然语言处理训练数据的预处理手段一般包括:质量过滤:过滤重复数据、低质量数据、虚假内容、不合规内容等; 数据去重:重复数据可能会降低大模型的多样性,导致训练过程不稳定,从而影响模型性能,一般可在句子级、文档级和数据集 级等不同颗粒度上进行数据去重处理;隐私脱敏:对于包含个人 敏感信息的数据进行脱敏处理,如身份证号码、电话号码等,包括但不限于匿名化、泛化等手段;数据去毒:消除带有种族/性别偏见、社会文化偏见、宗教文化偏见的数据,以及低俗、粗鄙和带有攻击性的数据等;数据降维:其目标是在保留基本信息的 同时减少数据集的复杂性,从而提高训练效率,一般可通过减少 特征维度或样本大小来实现;数据增强:通过人工创建对现有数 据的变更来增加数据量和多样性,特别是在数据量有限的情况下, 通过数据增强可以提高模型的准确性、泛化能力和鲁棒性,也可 以应对数据类别不平衡等问题。完成数据预处理后,可以将数据通过分词等手段,转换为适用于大模型训练的表达形式,形成高质量语料。此外,在模型推理过程中,也可以通过整合外部的领 域知识库或专业数据库,为模型提供额外的背景知识和参考数据,尤其是快速且不断地更新信息,从而提高模型的准确性和鲁棒性。

        2)模型算法

       大模型技术的突破源于自然语言处理领域的 Transformer 架构。该架构使得模型参数量突破了 1 个亿,随后一系列大模型 被推出。基于 Transformer 架构的模型可以分为编码器、解码器、编码到解码三大类,其主要特点和代表性模型如表 1 所示。

当前,基于 Transformer 解码器结构训练的大模型成为了自 然语言处理领域的主流方案。在此影响下,语音、视觉以及跨模 态等领域的大模型也尝试应用类似模型架构,并取得了较好效果, 比如语音领域的 OpenAI whisper 和 DaLL-E 等,图像生成领域的 Stable Diffusion 开源模型等。

        3)模型训练

        大模型训练涉及预训练和微调等重要环节。预训练的主要目的是利用大量无标签的数据,训练出一个有能力捕捉到数据中隐藏的底层结构和模式的模型,这一阶段的模型通常被称为“基座模型”。由于大模型的参数量和训练数据量的急剧增长,单个计算设备的算力已经不足以支撑模型训练。当前,一般通过分布式训练来解决预训练过程中的海量计算任务和高内存资源等问题, 但也面临着计算墙、内存墙和通信墙等挑战。目前解决分布式训练的关键技术是并行化,将任务分割并分配到多个处理器或设备上,以便同时完成计算,更有效地利用计算资源,减少训练所需时间。微调的主要目的是在预训练模型的基础上,通过有监督微调、强化学习等方式,进一步提升模型在下游任务中的表现,使得模型输出更符合人类期望。有监督微调,又称为指令微调,通过使用有标注的特定任务数据对预训练模型进行微调,从而使得模型具备遵循指令的能力。早期的微调算法会涉及到预训练模型的全量参数更新,计算成本较高,目前已提出了多种参数高效微调任务的方法以节约计算成本,如 LoRA、Adapter、P-tuning等。 强化学习技术是基于人类反馈,进一步调整模型的行为。其数据集一般由经过人工评估的反馈数据构建,这些数据反映了模型的输出与期望输出之间的差异,基于 Q-learning、深度Q网络或近端策略优化等强化学习算法进行训练。

        大模型训练场景对中高端 AI 芯片需求旺盛,需要统筹规划 CPU芯片、GPU芯片、服务器、网络、存储、冷却、算力运营服务、AI应用服务平台等多个方面。在金融机构通用服务器集群基础上,构建基于异构芯片体系的 AI 算力资源池,实现对金融机构现有AI 算力资源的统一调度,保障大模型训练的算力支撑。

        4)模型压缩与加速

        模型压缩是指通过各种技术手段来减小机器学习模型的大小、复杂度和计算量,加速推理过程并减少内存使用,以便在资源受限的设备上部署和运行,如移动设备、边缘设备等。目前模型压缩技术主要包括知识蒸馏、剪枝和量化等解决方案。

               知识蒸馏是一种训练小型模型以模仿大型模型行为的方法,保留了大型模型主要功能的同时降低了计算和存储需求,但通常需要一个预先训练好的大型模型,且性能上会有一定损失。

               剪枝是一种去除模型中不重要或冗余参数的方法,一般可以在不显著影响模型性能的情况下减小模型的大小和计算需求,但需要确定哪些参数是不重要或冗余的,以选择合适的剪枝策略。

               量化是一种减少模型参数和运算中数字精度以降低模型的存储需求和计算复杂度的技术,可适用于多种模型和任务,并显著减少存储和计算需求,但可能会造成一定程度的精度损失,且有时需要特定的硬件支持。

       模型加速主要研究加速模型的训练和推理过程,伴随模型参数增长,正逐渐成为研究热点。

                训练环节:针对计算量、通信、 内存可以进行一系列优化,例如使用梯度累积或梯度压缩可以优化通信策略、使用半精度浮点数可以节省内存等。

                推理环节:优化手段包括使用 GPU、TPU 和 ASIC等芯片的专用硬件加速器加速计算过程、使用并行化和分布式推理提高推理吞吐量并减少推理时间、使用缓存和预取策略降低内存访问延迟、在边缘设备上进行推理减少与服务器端的通信延迟、结合模型压缩技术加速推理过程等。现阶段AI 应用中,大量的算法、模型、开发框架、软件等开发都基于通用加速卡架构,在考虑硬件算力的基础上,要结合加速芯片软件栈及开发工具链等配套的软件生态能力。

        5)模型评测

        模型评测在机器学习和自然语言处理领域扮演着至关重要7 的角色。大模型具有更强大的泛化能力,可以处理多种任务,但 大模型的输出可能存在不真实、不准确、不专业等问题,因此在大模型上线或升级时,有必要对其进行较为全面、充分的评测,帮助模型迭代优化。

       大模型评测已成为行业发展热点问题,目前国内外相关评测 层出不穷。据初步统计,目前行业内关于大模型基准测试或特定 任务的测试数据集已多达 200 余项,主要推出机构可以大体分为 学术界、产业界、媒体、社区以及智库等。其中一些代表性的评 估基准包括 HELM、MMLU、C-EVAL、BigBench、HumanEval、AGIEVal、 SuperCLUE、OpenLLM 等。总体来看,大模型评测仍处于早期阶段,如何构建出全面、充分且能伴随大模型能力增长不断迭代的大模型评测基准,仍面临较大挑战。  

        6)模型运营

       大模型运营包括工程化、部署、管理、调试、维护和监控等多个方面,旨在确保大模型在生产环境中稳定运行,持续适应变化,满足用户需求,保障数据安全。

                工程化方面:模块化和面向 对象的编程可以帮助组织代码,使其更具可读性和可重用性,如将数据预处理、模型结构、训练循环和评估功能分为不同的模块或类,同时版本控制系统和自动化测试技术有助于及时跟踪代码的修改历史,确保每个功能模块和整个系统稳定运行。

                部署方面:要将模型转化为适用于实际环境的格式,包括序列化、压缩、硬 件优化以及容器化工具的使用,以确保模型在不同环境中的一致性。

                管理方面:使用身份和访问管理工具可以控制资源的访问权 限,运用数据管理工具跟踪数据集的变化。

                调试方面:使用可视 化工具和日志记录有助于监测模型运行时的详细信息,这对于诊 断问题和优化性能至关重要。

                维护方面:要制定明确的更新策略 以适应新数据和业务需求,同时要建立回退机制,确保出现问题 时能够快速回退到稳定版本。

                监控方面:通常包括性能监控和异 常检测,基于实时跟踪和警报设置,确保模型的可靠运行。

        7)安全可信

      一般而言,大模型的安全可信会从多个维度进行考量和评估, 包括但不限于:

                可靠性:即大模型的输出内容是真实的、一致的 等;

                内容安全性:即大模型的输出应避免涉黄、涉暴等非法内容, 并能遵循当地的道德准则和法律规定等;

                公平无偏性:即大模型 输出应避免偏见、刻板印象、不公平等情况;

                鲁棒性:即大模型 在面对投毒攻击、提示词攻击等恶意行为或者意外情况时,依然 能够产生稳定和可靠的输出结果;

                可解释性:即大模型能够解释 其推理过程并能透明展示其内容生成方式等;

                数据安全和隐私保护:即对训练和推理大模型的数据中可能包含的敏感信息进行相 应的脱敏和保护处理等。

         为有效提升大模型的安全可信水平,需要在大模型开发和运 营的全流程采取相应的安全措施,包括但不限于:

                数据处理环节:建立高质量的训练数据集,有效去除有毒或错误信息、注重训练 数据的分布比例以避免产生偏见、对训练数据中的敏感数据进行脱敏等;

                模型开发阶段:引入对齐技术等让大模型的输出更符合 人类价值观;

                模型上线前:需对大模型的安全可靠水平进行充分 评测,如红队对抗测试等;

                大模型对客提供服务时:可以引入安 全围栏技术,既能帮助大模型拦截外界的恶意提问,又能对生成内容进行风险过滤和拦截;

                模型运营过程中:还需要建立 持续的监控和定期审核机制,以及时发现异常情况并持续迭代优化模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1806968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React:Expected property name or ‘}‘ in JSON at position 1

代码&#xff1a; import { Form, Input, Button } from antd export default function FormCom() {function onFinish(a, b, c, d) {console.log(a, b, c, d)}const describe "{tip:请输入用户名}"return (<><Form onFinish{onFinish}><Form.Itemn…

C++面试八股文:static和const的关键字有哪些用法?

100编程书屋_孔夫子旧书网 某日二师兄参加XXX科技公司的C工程师开发岗位第7面&#xff1a; 面试官&#xff1a;C中&#xff0c;static和const的关键字有哪些用法? 二师兄&#xff1a;satic关键字主要用在以下三个方面&#xff1a;1.用在全局作用域&#xff0c;修饰的变量或者…

嵌入式学习——Linux高级编程复习(进程)——day39

1. 进程 进程是计算机科学中的一个核心概念&#xff0c;它是操作系统进行资源分配和调度的基本单位&#xff0c;代表了一个正在执行中的程序实例。当一个程序被加载到内存并开始执行时&#xff0c;它就变成了一个进程。 1. 程序&#xff1a;存放在外存中的一段代码的集合 2. 进…

HTML标签 label for 还是 htmlFor

文章目录 问题结论更多 问题 HTML标签&#xff1a; label 的属性 for 还是 htmlFor&#xff1f; MDN文档&#xff1a;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label 结论 for 和 htmlFor 都可以使用&#xff0c;都是对的。在部分情况中&#xff0c;只能…

window wsl2的ubuntu如何配置代理获取docker image

最近两天&#xff0c;docker pull一直下不来docker image, 研究了下可以通过代理pull, 我的是window电脑下的linux子系统wsl2, 装的是ubuntu跑docker. # 创建/etc/systemd/system/docker.service.d路径 sudo mkdir -p /etc/systemd/system/docker.service.d # 创建 http-proxy…

C++设计模式-中介者模式,游戏对象之间的碰撞检测

运行在VS2022&#xff0c;x86&#xff0c;Debug下。 31. 中介者模式 中介者模式允许对象之间通过一个中介者对象进行交互&#xff0c;而不是直接相互引用。可以减少对象之间的直接耦合&#xff0c;同时集中化管理复杂的交互。应用&#xff1a;如在游戏开发中&#xff0c;可以使…

BERT+PET方式数据处理

基于BERTPET方式数据预处理介绍 BERTPET方式数据预处理&#x1f43e; 本项目中对数据部分的预处理步骤如下: 查看项目数据集编写Config类项目文件配置代码编写数据处理相关代码 1 查看项目数据集&#x1f43e; 数据存放位置&#xff1a;/Users/***/PycharmProjects/llm/prom…

Innodb Buffer Pool缓存机制(四)预读与Mysql改进的LRU策略

一、什么是预读 InnoDB提供了预读(read ahead)。所谓预读&#xff0c;就是InnoDB认为执行当前的请求可能之后会读取某些页面&#xff0c;就预先把它们加载到Buffer Pool中。根据触发方式的不同&#xff0c;预读又可以细分为下边两种&#xff1a; 1.1 线性预读 InnoDB提供了一…

Rust-02-变量与可变性

在Rust中&#xff0c;变量和可变性是两个重要的概念。 变量&#xff1a;变量是用于存储数据的标识符。在Rust中&#xff0c;变量需要声明其类型&#xff0c;例如&#xff1a; let x: i32 5; // 声明一个名为x的变量&#xff0c;类型为i32&#xff08;整数&#xff09;&#…

ApiJson快速入门

前言 最近在正式迭代中插入了一个大屏演示项目&#xff0c;因为后端开发人员任务都安排满了&#xff0c;而演示项目逻辑比较简单&#xff0c;大多是直接查表就能搞定&#xff0c;所以只能想办法让前端直接和数据库交互&#xff0c;增加开发速度。在找工具时发现了ApiJson。尝试…

私有云和多云管理平台 | Cloudpods v3.11.4 正式发布

本次 3.11.4 更新亮点为&#xff1a;系统镜像引入社区镜像&#xff0c;用户可以一键导入各主流开源操作系统镜像&#xff0c;方便用户上手使用。持续迭代共享 LVM&#xff0c;支持快照&#xff0c;主备机等特性&#xff0c;修复迁移删除镜像缓存等 BUG。 功能优化 【费用】费…

大众汽车裁员加速,38万元遣散费起步

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 几周前&#xff0c;大众汽车宣布了一项新的裁员计划。 一、裁员行动与额外福利并行 大众汽车近期在裁员行动上取得了显著进展&#xff0c;其遣散…

html接口响应断言

接口响应值除类json格式,还有html格式 断言步骤 第一步:替换空格replace 原本返回的格式和网页内容一致,每行前面有很多空格,需要去除这些空格 第二步:分割split 因为行与行之前有回车符,所以把回车符替换掉,返回值为数组 数组不能直接打印数组,需要格式转换 第三…

基于实验的电动汽车动力电池SOC

前言 本文为笔者在学习《基于MATLAB的新能源汽车仿真》过程中学习笔记&#xff0c;所涉及的表格数据和公式均为书籍里的。仿真数据是网上找的恒电流放电数据。本文仅作为笔者的入门学习记录。 一、分析动力电池SOC估算方法 SOC是指动力电池按照规定放电条件可以释放的容量占…

国标GB/T 28181详解:校时流程详细说明

目录 一、定义 二、作用 1. 时间同步性 2. 事件记录的准确性 3. 跨平台、跨设备协作 4. 降低时间误差 5. 安全性提升 三、基本要求 四、命令流程 五、协议接口 六、校时效果 1、未校时的情况 2、校时后的效果 七、参考 一、定义 GB28181协议要求所有的监控设…

多种策略提升线上 tensorflow 模型推理速度

前言 本文以最常见的模型 Bi-LSTM-CRF 为例&#xff0c;总结了在实际工作中能有效提升在 CPU/GPU 上的推理速度的若干方法&#xff0c;包括优化模型结构&#xff0c;优化超参数&#xff0c;使用 onnx 框架等。当然如果你有充足的 GPU &#xff0c;结合以上方法提升推理速度的效…

Edge浏览器视频画中画可拉动进度条插件Separate Window

平时看一些视频的时候&#xff0c;一般需要编辑一些其他的东西&#xff0c;于是开启画中画&#xff0c;但是画中画没有进度条&#xff0c;需要大幅度的倒退前进得回到原视频&#xff0c;很麻烦。这里推荐插件Separate Window&#xff0c;可实现画中画进度条拉动和播放sudu的调节…

商城项目【尚品汇】08异步编排

文章目录 1.线程的创建方式1.1继承Thread类&#xff0c;重写run方法1.2实现Runnable接口&#xff0c;重写run方法。1.3实现Callable接口&#xff0c;重新call方法1.4以上三种总结1.5使用线程池创建线程1.5.1线程池创建线程的方式1.5.2线程池的七大参数含义1.5.3线程池的工作流程…

LLVM Cpu0 新后端5 静态重定位 动态重定位

想好好熟悉一下llvm开发一个新后端都要干什么&#xff0c;于是参考了老师的系列文章&#xff1a; LLVM 后端实践笔记 代码在这里&#xff08;还没来得及准备&#xff0c;先用网盘暂存一下&#xff09;&#xff1a; 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…

springboot集成uid-generator生成分布式id

一、简介 uid-generator是由百度技术部开发,GitHub地址 UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器 Snowflake算法 Snowflake算法描述&#xff1a;指定机器 & 同一时刻 & 某一并发序列&#xff0c;是唯一的。据此可生成一个64 bits的唯一ID&#x…