大模型应用工程化过程

         近年来,以人工智能为代表的新一代信息技术加速应用,特 别是基于大模型、大数据、大算力的 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.mzph.cn/bicheng/25279.shtml

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

相关文章

9.2 Go 接口的实现

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Day44 代码随想录打卡|二叉树篇---找树左下角的值

题目(leecode T513): 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 方法:本题需要找二叉树左下角的值,因此该节点首先是在最后一行&#xff0…

搭建智慧互联网医院系统教学:源码解析与在线问诊APP开发

本篇文章,小编将以“源码解析与在线问诊APP开发”为切入点,详细介绍搭建智慧互联网医院系统的过程。 一、智慧互联网医院系统的架构设计 系统架构概述 -前端 -后端 -数据库 功能模块划分 -用户 -预约 -挂号 -问诊、 -病历 -管理 -药品 -配送…

Web前端发展路线:深度解析与未来展望

Web前端发展路线:深度解析与未来展望 在数字化时代的浪潮中,Web前端技术日新月异,成为推动互联网行业发展的重要引擎。本文将从四个方面、五个方面、六个方面和七个方面,深入探讨Web前端的发展路线,为您揭示这一领域的…

C++ 分治法找到第K大的数

有一个整数数组&#xff0c;请你根据快速排序的思路&#xff0c;找出数组中第 k 大的数。 例如&#xff1a; 输入 [1,3,5,2,2], 找出数组中第2大的数&#xff0c;输出 3. #include <iostream>using namespace std; #include <stack> #include <string> #i…

Pytorch 从零实现 Transformer

前言 之前虽然了解过 Transformer 架构&#xff0c;但是没有自己实现过。 最近阅读 transformers 库中 Llama 模型结构&#xff0c;于是想试着亲手实现一个简单的 Transformer。 在实现过程中加深了理解&#xff0c;同时发现之前阅读 Llama 中一些错误的地方&#xff0c;因此…

【实战项目二】Python爬取豆瓣影评

目录 一、环境准备 二、编写代码 一、环境准备 pip install beautifulsoup4 pip intall lxml pip install requests我们需要爬取这些影评 二、编写代码 我们发现每个影评所在的div的class都相同&#xff0c;我们可以从这入手 from bs4 import BeautifulSoup import request…

Java数据结构与算法(爬楼梯动态规划)

前言 爬楼梯就是一个斐波那契数列问题&#xff0c;采用动态规划是最合适不过的。 实现原理 初始化:dp[0]1;dp[1]2; 转移方程&#xff1a;dp[i]dp[i-1]d[i-2]; 边界条件:无 具体代码实现 class Solution {public int climbStairs(int n) {if(n1){return 1;}int[] dpnew i…

Qwen2大模型微调入门实战(完整代码)

Qwen2是通义千问团队的开源大语言模型&#xff0c;由阿里云通义实验室研发。以Qwen2作为基座大模型&#xff0c;通过指令微调的方式实现高准确率的文本分类&#xff0c;是学习大语言模型微调的入门任务。 指令微调是一种通过在由&#xff08;指令&#xff0c;输出&#xff09;对…

倩女幽魂手游攻略:云手机自动搬砖辅助教程!

《倩女幽魂》手游自问世以来一直备受玩家喜爱&#xff0c;其精美画面和丰富的游戏内容让人沉迷其中。而如今&#xff0c;借助VMOS云手机&#xff0c;玩家可以更轻松地进行搬砖&#xff0c;提升游戏体验。 一、准备工作 下载VMOS云手机&#xff1a; 在PC端或移动端下载并安装VM…

VS2015中配色方案

为Visual Studio 2017设置C#/C代码配色方案——Monokai风格 windows客户端开发–改变visual studio配色方案

多线程打印

1、固定运行顺序 比如&#xff0c;必须先 2 后 1 打印 1.1、wait notify 版 public class Test1 {// 先打印2&#xff0c;后打印1static final Object lock new Object();static boolean t2runned false; //表示t2是否运行过public static void main(String[] args) {Thr…

流程的控制

条件选择语句 我们一般将条件选择语句分为三类&#xff1a; 单条件双条件多条件 本篇文章将分开诉说着三类。 单条件 单条件的语法很简单&#xff1a; if (条件) {// 代码}条件这里我们需要注意下&#xff0c;可以向里写入两种&#xff1a; 布尔值布尔表达式 当然&…

Docker高级篇之Docker网络

文章目录 1. Docker Network简介2. Docker 网络模式3. Docker 网络模式之bridge4. Docker 网络模式之host5. Docker 网络模式之none6. Docker 网络模式之container7. Docker 网络模式之自定义网络模式 1. Docker Network简介 从Docker的架构和运作流程来看&#xff0c;Docker是…

C语言中函数的参数传递机制(值传递、指针传递)

在C语言中&#xff0c;函数的参数传递机制主要有两种&#xff1a;值传递&#xff08;Pass by Value&#xff09;和指针传递&#xff08;Pass by Reference&#xff0c;虽然C语言中没有直接的“Pass by Reference”这一术语&#xff0c;但通常使用指针来实现类似的效果&#xff…

计算机组成原理之指令寻址

一、顺序寻址 1、定长指令字结构 2、变长指令字结构 二、跳跃寻址 三、数据寻址 1、直接寻址 2、间接寻址 3、寄存器寻址 寄存器间接寻址 4、隐含寻址 5、立即寻址 6、偏移寻址 1、基址寻址 2、变址寻址 3、相对寻址

力扣199. 二叉树的右视图

给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入: [] 输出: [] /*** Def…

纸片战争(信息课神器,断网也可以玩)

作品简介及操作说明 作品介绍&#xff1a; 游戏背景&#xff1a; 阿尔法国遭到了厄普西隆国的入侵。为了保卫祖国&#xff0c;阿尔法人迅速组织部队进行抗争&#xff0c;而你&#xff0c;将作为阿尔法人的指挥官亲历这场战争。 玩法类似游戏《红色警戒》&#xff0c;指挥部队、…

Spring 怎么解决循环依赖的问题?

Spring框架解决循环依赖主要通过三级缓存来实现&#xff0c;这主要发生在Spring容器创建bean的过程中。以下是Spring解决循环依赖的基本步骤&#xff1a; 一级缓存&#xff08;singletonObjects&#xff09;&#xff1a;存放已经创建好的单例对象&#xff0c;供其他bean引用。 …

语法分析!!!

一、实验题目 根据给定文法编写调试预测分析程序&#xff0c;对任意输入串用预测分析法进行语法分析。 二、实验目的 加深对预测分析法的理解。 三、实验内容 四、实验代码 #include <iostream> #include <stdio.h> #include <string> #include <…