案例 | GPU加速计算框架在金融市场产品估值系统中的应用探索
金融电子化
2024-02-27 16:30:05

原标题:案例 | GPU加速计算框架在金融市场产品估值系统中的应用探索

文 / 中国农业银行科技与产品管理局 李晓轩

中国农业银行研发中心 程勇

随着商业银行金融市场业务迅速发展金融产品的种类不断增加,交易规模日益增大,各类金融模型算法随着业务的发展也日益复杂。此外,从风险管理的多样性角度,风险场景也逐渐从传统的单场景向多场景演进。因此,历史模拟、压力情景、专家情景计量等大规模、多场景下的海量估值计算相关的处理效率和性能容量受到了极大的挑战。以市场风险VaR值计量为例,在交易笔数10万量级规模下,按照监管要求的250个历史情景模拟,巴Ⅱ内模法的估值计算次数达到每日4亿次;按照同等规模,巴Ⅲ新内模法的计算量预估可达到现行内模法的数倍以上,每日估值计算量将超过10亿次。以往通过增加服务器配置提升性能的方式不但成本高,而且受硬件性能约束,扩展性有限,很难满足业务发展的长远要求。

随着大数据、人工智能深度学习等领域的不断发展,GPU芯片获得了越来越广泛的应用,在部分特定场景,GPU可提供远超CPU计算能力的大规并行计算、加解密、图像处理等功能,在许多计算逻辑相似,但需要海量并发处理的场景下获得了十分显著的性能提升。近年来我国各主要商业银行也在业务应用系统建设中尝试采用GPU架构实现,例如金融市场领域的金融产品估值系统,由于金融产品交易频次高、种类繁多、交易量大,金融产品估值成为损益分析、成本核算、风险计量等业务开展的最核心环节,利用GPU实现其核心计算功能取得了不俗的效果。

GPU加速计算原理与应用现状

GPU(Graphic Processing Unit)是图形处理单元,与中央处理器CPU可处理各种通用型指令不同,GPU诞生之初是专门用于处理图形图像的,它被设计成结构相对简单,但核心数量众多的芯片结构,非常适合于处理浮点坐标计算、图像渲染等大量复杂度低但重复性高的工作。近年来随着大数据、人工智能AI领域的快速发展,GPU也在处理基础数据、训练模型方面发挥了重要作用,它的大并发、快速重复处理特性能够与数据大并发处理、AI模型快速反复迭代训练的需求完美契合,为GPU开拓出了更加广阔的应用前景。

GPU与CPU虽然都能够处理数据和执行指令,但两者的架构有着本质区别。CPU中央处理器是一种通用指令处理芯片,目的是能够处理各种复杂的任务指令,如处理操控硬件指令、操作系统指令、各类包含复杂逻辑的应用程序指令,因此CPU的核心数量较少(单CPU可做到4或8核心),但每个核心的主频速度非常高,处理速度非常快。而GPU恰好相反,它作为一种专用指令芯片,大多数情况都用来处理图形图像、数学计算、数据处理等几种特定任务,不需要考虑其它更多复杂指令,因此GPU芯片的内部结构相对更加简单,其中的核心数量非常多,但每个核心的频率较低,专注于大并发重复性处理。

当前业界主流商用服务器的CPU一般由4或6个核心组成,可以同时处理8个或12个线程,但一个普通的GPU就包含了几百个核心,部分高端GPU可达上万个核心(如图1所示),这对于多媒体或图形处理中大量复杂度不高但处理工作量巨大的工作有着天然的优势。在大数据处理领域,GPU可用来做大规模并行数据处理或数学运算,GPU运算的特点可称之为“矩阵计算”,在多维矩阵中有n个计算单元,GPU的多核心架构可以实现同时对每个单元进行并行处理,因此我们如果充分利用GPU的这一特点,将需要并行处理的计算单元(例如每一次金融产品估值)构建成矩阵向量,则可以充分发挥出GPU的硬件架构优势,获得巨大的效果,计算节点越多,效率越明显。

图1 CPU和GPU架构示意图

目前业界基于商用GPU服务器领域的应用产品主要有:英伟达(NVIDIA)的Tesla系列;AMD的镭Radeon系列;英特尔(Intel)的高性能计算Xe-HPC系列等,此外我国也有景佳微电子、上海兆芯等多家自主厂商推出了信创的GPU服务器,在GPU领域扮演了越来越重要的角色。

目前业界已有多种基于GPU的应用开发框架或工具,适合于多种GPU加速、深度学习场景,其中比较主流的有:(1)GPU通用加速框架,如目前在深度学习领域比较常见的TensorFlow、PyTorch框架,可针对矩阵计算和模型训练进行加速,提供远超CPU的计算能力。(2)并行计算类库,如CuPy、cuDF、numba,都是针对Python的数学运算功能类库,可基于GPU进行Python并行开发,用于替换不能在GPU上并行计算的NumPy、Pandas类库等。(3)直接面向GPU底层接口的代码开发,类似于早期汇编语言直接操作硬件的模式,属于面向底层的硬编码方式。

由于目前大部分数据分析、数学运算、AI运算的代码都是基于Python代码编写,因此在实际应用中,更多采用的是更贴近原有研发模式的PyTorch框架和以及numba类库,降低实施难度。

GPU在金融市场产品估值系统的应用实践

金融市场产品估值是对金融市场各类债券、外汇、贵金属、及各类衍生品交易的标的物进行价格估算的过程,用于支持金融企业开展损益分析、风险计量、会计核算等各种活动,满足内部管理与外部监管要求。

产品估值的主要环节是按照估值公式,对市场报价、交易数据、各类场景数据进行一系列数学运算,来获得特定场景下较为准确的产品价格。这一过程由于不同产品类别、交易场景、风险因子(利率、汇率、敏感度等)的不同取值,可排列组合出大量的估值请求,例如以市场风险内模法计量场景,每日7万笔交易,2000多个情景,通过场景模拟总的估值次数可达6亿次以上。但单个产品估值的计算流程和公式方法基本相同,且任务相互间几乎没有数据交互,属于典型的高并发、重复性计算场景。在此类业务场景下,采用GPU的科学计算功能可以更好的适配大量近似计算的业务需求,采用专门针对GPU的开发框架,可将海量估值请求拆分到GPU的众多计算核心上,呈现出超高并发的特征,大幅缩短运算时间。

为了获得GPU加速计算性能提升的第一手资料,我们选取了外汇期权以及含权债券两个典型金融产品的估值模型,分别在CPU和GPU两个运算架构下进行估值运算,观测在不同估值请求数量下两者的运算性能差异。

外汇期权是指以外汇为标的物,根据其价格在未来一个时期内的变化情况来确定损益的金融产品,分为看涨期权和看跌期权,在到期日T,根据标的资产价格与执行价格比较,确定该期权的收益。含权债是一种包含某种权利的债券,包括可赎回债券和可回售债券,债券发行人可以在约定的日期(行权日)以约定的价格(行权价)向债券持有者购回或售回债券。其中外汇期权模型计算公式逻辑较为复杂;含权债券使用三叉树模型循环计算次数更多。

我们在相同软硬件环境配置下,分别执行两个金融产品估值模型运算,相关配置见表1。无论是采用PyTorch还是Numba库进行GPU并行计算改造,一般需要三个步骤:(1)将数据或模型转移到GPU显卡内存上。(2)基于对应组件或计算库改写计算逻辑,如采用PyTorch,相关计算函数需使用PyTorch对应的库函数;如采用Numba,则需要将对应的计算逻辑按照Numba的核函数进行改写。(3)将计算完成的数据从GPU显卡内存上转移到CPU对应的内存上。

表1 GPU估值运算配置表

对于具体测试场景的选择,我们执行了三轮对比测试。

1.第一轮:单笔交易多情景估值测试。选择外汇期权和含权债各一笔交易,在不同的历史场景下的估值,例如利用过往480天的市场历史数据作为风险因子,对每一天历史情景下的金融产品进行估值,则每笔交易估算480次。估值引擎系统是将每一笔金融产品交易和对应的一批情景组成估值向量进行批量估值,为按照估值引擎的运行模式进行执行,选择一笔外汇期权和一笔含权债并通过模型数据模拟工具生成480个历史情景数据作为测试数据。

(1)外汇期权性能测试情况。对比单笔交易480个历史情景下,分别通过CPU、PyTorch和numba三种架构下的执行时间,对比结果见表2。

表2 外汇期权性能测试结果(单位:秒)

外汇期权模型为BSM模型(解析模型),模型计算公式复杂,但是单次计算的数据量较小,从测试结果中可以看出,在估值次数较少(480次)的情况下,无论是PyTorch或Numba,采用GPU运算的加速效果并不明显。

(2)含权债性能测试情况。对比单笔交易480个历史情景下,分别通过CPU、PyTorch和numba三种架构下的执行时间,对比结果见表3。

表3 含权债性能测试结果(单位:秒)

含权债使用HW模型(非解析模型,通过构建三叉树模拟市场变化进行估值),使用多层嵌套for循环,模型计算复杂高,适宜使用Numba模式,可见对于非解析模型,即使在小数据量情况下GPU性能也已经比CPU模式有明显提升。

2.第二轮:模拟高并发数据量级的估值测试。基于原有480个历史情景采用随机生成方法模拟衍生不同数据量级的估值请求,对比不同架构下估值运算的时间变化,并寻找CPU和GPU性能转换的临界点。

外汇期权不同数据量级下的估值对比测试结果见表4。

表4 外汇期权性能测试结果(单位:秒)

从测试结果中可以看出,在单批次估值计算量较小(10万次以下)的情况下,GPU架构计算性能的性能优势并不明显;在单批次估值计算量较大(10万次以上)的情况下,GPU架构的计算性能比CPU计算有大幅度的性能提升,到一千万次以上数量,性能呈指数级提升。例如市场风险内部模型法每日估值计算大约在4亿次以上,目前CPU架构下运算时间大约在1.5小时,后续随着全量产品的上线以及巴Ⅲ内模法的实施,计算量将数倍增长,将耗时较长、场景适当的估值模型在GPU上运行将成为进一步提升性能的突破口。

3.第三轮:资源占用情况测试。在运算性能提升明显的同时,同样需要观察Pytorch和Numba两种模式下,估值系统整体资源占用情况,以确保系统可用性。我们连续执行了100次含权债模型估值测试,资源消耗整体情况如下(见图2、图3)。

图2 GPU内存使用情况

图3 GPU使用情况

两种GPU计算模式的测试时间相同均为1分20秒,以确保在相同时间维度下进行对比。在Pytorch和Numba两种模式下CPU和系统内存的使用率较低在5%左右,而显卡内存的使用率在12%左右,但Numba模式可通过编程控制GPU的并发度,在复杂循环计算场景下对GPU资源的使用可以更加充分。

GPU的独特架构能够为许多应用场景提供更加适配的运算支持,相比传统CPU架构运算性能大幅提升,GPU不仅在人工智能深度计算、大数据处理等新兴领域发挥关键作用,同样可以在金融风控等传统业务领域大放异彩。同时我们也注意到目前业界主流的GPU芯片仍然以英伟达、AMD等国外厂商为主,我国自主GPU芯片研发由于起步较晚,虽然近年来发展很快,但在研发能力、生态建设方面相比国外大厂仍有差距。未来,随着GPU领域信创水平的不断提升,金融市场业务的自主可控能力也必将进一步增强,为商业银行数字化转型提供更加有力的支持。

(此文刊发于《金融电子化》2024年2月上半月刊)

⚠️
本网站信息内容及素材来源于网络采集或用户发布,如涉及侵权,请及时联系我们,发送链接至2697952338@QQ.COM,我们将第一时间进行核实与删除处理。

相关内容

热门资讯

蜻蜓订购app贵金属交易输的钱... 蜻蜓订购app贵金属交易输的钱可以要回亏的钱!输的钱可以追回!已成功退款流程公开!蜻蜓订购app亏损...
华擎顶级GPU!RX 9070... 快科技12月21日消息,近日,华擎推出了其RX 9000系列中的顶级旗舰产品RX 9070 XT T...
量子淘金APP输了了20万元可... 量子淘金APP输了了20万元可以要回亏的钱!有办法追回来!已成功退款流程公开!量子淘金app亏损是能...
鹏程荟直播间认购新股山东谊友商... “本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。"在投资市场的灰...
领航商学院私董会周聪直播间联合... “本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。"近期,一种“买...
磊石成山袁磊直播间上课推荐迎宾... “本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。"如果您近期接触...
股票群大峰老师刘宇峰战略认购抽... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在股票投资领域,“...
华兴健康商学院股票群刘宇峰老师... “本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。"在投资市场的灰...
广东酱王企业咨询有限公司买酱王... “本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。"“买酒就能拿股...
刺梨工坊(贵州)科技有限公司“... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在股票投资领域,“...