2. 中国科学院大学, 北京 100049
2. University of Chinese Academy of Sciences, Beijing 100049, China
以互联网、大数据、人工智能、量子通信、区块链等为代表的新一代技术正在蓬勃发展, 时刻影响着人们的生活, 而新一代技术的发展离不开高性能计算. 在市场驱动, 应用推广和产业化推进的过程中, 高性能计算在推动我国发展的进程中占有重要地位, 因此高性能计算也成为衡量国家之间综合实力的基准之一[1].
虽然我国高性能计算实力出众, 但对于广大中小企业来说, 由于企业人才匮乏, 知识储备单一, 计算资源不足等特点[2], 高性能计算的应用在中小企业中普及度不高, 我国高性能计算领域的发展尚未有效带动广大中小企业发展.
针对中小企业自身特点和高性能计算技术应用时面临的具体困难, 我们建立一个依托高性能计算环境的中小企业数值模拟与计算服务社区, 并建立相对应的服务机制、运营机制和计费机制等, 为中小企业提供便捷、高效、全方位的高性能计算服务.
1 中小企业数值模拟与计算应用社区介绍计算社区采用前后端分离架构, 前端使用Vue框架. 后端使用Python语言的Tornado框架, 数据管理和任务提交都以微服务的形式实现, 形式更加简单, 设计更轻量, 实现更便捷.
1.1 整体系统架构中小企业的数值模拟与计算, 体现在访问规模大, 每次计算时间短, 但次数比较密集, 属于计算密集型和数据密集型应用. 为此, 平台采用以K8S+Docker集群为核心, 以天河高性能计算集群为支撑, 为其他异构高性能计算集群预留扩展接口的架构设计, 所有的业务相关功能均采用容器化部署. 这样可以使系统结构清晰, 降低了开发的复杂性, 提高了系统的健壮性和可伸缩性, 使得系统易于维护和扩展, 如图1所示.
资源服务层主要是以天河高性能计算系统为主提供高性能计算环境. K8S集群为系统关键应用和服务部署的核心平台, 面向计算软件、管理调度程序、数据管理服务和可视化软件等提供容器化的部署方式, 构成微服务容器集群. K8S底层由资源池和网络存储方案进行支持, 上层由容器管理平台提供应用调度管理.
框架服务层是整个架构的核心部分, 负责对资源监控、作业调度、作业管理和数据管理. 框架服务层将各种计算资源封装整合成服务, 并为资源请求者与资源提供者之间提供一种协商机制, 通过协商, 在资源请求者和资源提供者之间为如何使用资源而达成某种协定, 并保证服务质量. 同时该层需要做到: (1) 抽象资源的共享能力与逻辑资源种类的一致性, 封装各类异构高性能计算资源为服务, 通过服务接口实现资源共享. (2) 实现资源状态监控和故障恢复服务、系统容错服务、系统安全服务和服务质量保证机制. 对于中小企业, 并发量大, 系统容错与安全是服务的重点. (3) 针对工作流和计算作业实现支持服务质量的服务发现、服务调度机制.
应用服务层负责整合所有的应用服务并向用户展示. 包括专家智库服务、知识图谱服务、可视化服务、资产管理服务、用户管理服务和计费/收费管理服务机制.
1.2 核心服务设计一般来说, 超算计算任务的提交、查询和控制以及计算资源的查询、发现等操作是通过远程的SSH命令实现的, 这种实现对于以Web作为用户交互的高性能计算服务并不理想. 同时, 中小企业计算任务中, 存在大量计算量小, 任务周期短的任务, 这些大并发数量的计算任务, 不但会对任务调度系统造成极大的压力, 还会使得计算资源使用碎片化, 不利于计算资源的有效利用.
为实现对计算任务和数据进行有效管理, 本文提出设计了一套任务和数据系统, 由任务管理程序和数据管理程序组成, 其中主要包括工作流管理服务程序、数据管理服务程序、端服务程序和监控服务程序.
工作流管理服务程序和端服务程序组成任务管理子系统, 如图2所示. 工作流管理服务程序负责把工作流分解成计算任务序列, 并且保障计算任务序列按照正确的先后顺序执行, 支撑工作流的有效执行. 接口模块接收一个工作流的描述后, 预处理模块首先通过工作流解析, 把工作流分解为一系列的计算任务序列, 然后把计算任务映射到拥有所需软硬件资源的端服务. 端服务接受来自计算任务管理服务程序的计算任务, 负责计算任务的实际执行并返回执行状态, 实现了计算任务在超算系统的提交、查询和控制等操作.
数据管理服务程序和端服务程序组成数据管理子系统, 负责记录与计算任务对应数据的存储位置, 以及数据在不同存储设备间的传输. 每个计算任务的数据都会包含在一个文件夹内, 这个文件夹实际会存储在某个存储设备上, 一个工作流包含多个计算任务, 不同的计算任务有可能在不同的设备上执行, 因此, 这些数据会分布在不同存储设备上. 数据管理服务程序主要负责维护一元组数据, 记录这些数据的实际存储位置, 把这些数据映射到一个虚拟的文件夹中, 为其他服务提供数据存储定位和数据转发.
在计算社区搭建中, 我们结合上述管理程序, 采用模块化、多层次的松耦合结构, 提供简单易用的Web API服务, 如表1所示. 在上述API中, 如果API交互正常, 则会返回HTTP状态码200, 其他错误状态码则由HTTP错误代码定义. 返回的JSON字符串包括status_code和status_msg两个通用参数以及每个API返回的具体的内容.
1.3 功能模块
计算社区基本功能包括应用软件、工作流服务、可视化服务、资源介绍和用户管理等, 如图3所示.
应用软件: 为降低软件服务应用门槛, 提高中小企业对软件应用服务的应用效率, 计算社区设计了作业提交系统. 在应用软件页面结合上海、长沙和广州的计算资源, 为用户提供了多种学科分类的计算软件, 用户在选定计算软件之后进入作业提交页面, 只需将参数写在文件中, 上传文件, 设定运行时间和CPU数, 在点击提交后, 系统会对文件进行异步上传, 同时对高性能计算节点发送请求检测文件传输情况, 在文件上传完成后开始计算.
工作流服务: 为提升中小企业数值模拟与计算的效率. 包含了智能化的工作流复用和管理服务. 采用可拖拽式的工作流建模工具GooFlow开发, 用户可使用其对工作流进行建模, 在建模过程中, 选取建模界面栏目中不同类型节点并单击节点选取所需软件, 构建所需流程后调用计算软件资源, 也可以将流程保存在社区或保存成本地模板文件后续进行复用或共享. 调度方法采用工作流调度语言CWL, 核心服务以CWL语法的形式将软件的输入输出参数、输入输出文件格式和执行软件的逻辑顺序固化成接口. 用户构建好流程并上传文件后, 核心服务会根据流程的CWL逻辑调用超算端软件资源进行计算.
可视化服务: 为满足用户远程可视化和工作流模板调用可视化应用的需求, 采用基于noVNC的虚拟桌面和基于ParaView的Web应用程序两种技术路线进行了实现. 用户在平台可上传前处理的计算模型和参数文件, 也可通过可视化节点进行远程交互实现可视化前处理. 完成的计算模型和参数提交数值模拟计算节点进行计算, 计算的过程结果和流程进度结果可通过可视化节点返回用户.
资源介绍: 计算社区向用户提供SaaS服务, 各节点部署有购买的商用软件、由研发团体研发的自研软件、主流的开源软件. 考虑到中小企业人才知识储备相对单一的特点, 许多中小企业对相关应用软件了解度不足, 计算社区将应用软件细化分类并提供资源介绍, 帮助中小企业了解相关应用软件并对同类型软件进行对比, 以寻找最切合需求的高性能计算软件应用.
用户管理: 该模块主要是负责各个用户的注册登录、作业和余额进行管理. 用户登录输入账号密码在格式和验证码无误后提交至后台进行身份验证, 当用户名或者密码任意一项错误时, 社区在登录页面显示用户名错误或密码错误, 提醒用户检查用户名或密码后重新输入. 登录到社区后用户能对自己的关键信息进行修改, 并对社区中的余额进行查询. 同时, 用户能对自己提交的计算作业进行查询, 在计算作业完成之后付费并下载结果.
2 社区运营机制社区平台基于各大国家高性能计算集群, 拥有强大的计算资源和专业的维护能力, 但部分服务较少的应用于实践. 面对多样化的问题, 需求量大的用户群体很难得到定制化的服务. 因此, 我们提出结合专家智力库社区平台更好的服务用户需求.
2.1 自营模式—专家智力库中小企业用户在实际使用社区平台的过程中遇到问题时, 可查询常见问题界面寻求帮助. 常见问题可分为账户问题、数据上传问题、软件运行问题和结果下载问题. 其中, 数据上传与软件运行过程中, 如果发生错误, 系统将返回一个错误代码, 同时给出此错误代码常见问题的链接. 如果常见问题未能解决用户的问题, 用户可选择在线技术支持.
中小企业数值模拟与计算应用服务社区设置在线值班专家, 用户遇到的问题可以随时向值班专家咨询, 社区设置一个悬浮对话框, 用户可以通过聊天窗口与值班专家进行沟通. 如果值班专家无法解答用户的问题, 便向用户推荐专家库的专家, 由专家库里的专家给用户解答问题.
2.2 商业模式中小企业数值模拟与计算应用服务社区涉及到的用户及问题各种各样, 专家智力库中的专家对问题的熟悉度及精力不能很好地解答社区用户的问题, 因此我们探讨引进数值模拟公司、应用软件公司进驻社区.
社区平台与数值模拟公司和计算软件公司以实现共同利益为基础, 资源共享和优势互补为前提, 建立明确的合作目标, 以法律法规下的协议或者合同为依据, 创建社区平台合作创新商业运营模式[3].
2.2.1 社区平台对企业和公司的合作激励在社区平台与数值模拟企业和计算软件公司合作创新过程中, 参与企业和公司的努力水平和专业程度能够对合作创新的利润产生影响. 对平台来说, 需要采取一些激励措施引入数量更多、质量更高、领域更全的企业和公司. 对于社区平台与企业和公司之间的合作关系, 我们可以从信息资源合理配置、资质认证机制、创新贡献激励等方式促进双方之间的合作[4].
(1) 信息资源合理配置. 信息资源合理配置是社区平台与数值模拟企业和计算软件公司之间合作的一个基础. 为了提高在合作创新中信息的一致性和稳定性, 减少信息缺失和多重传递导致的信息扭曲, 应通过信息资源合理配置使得社区平台与企业和公司及时、有效地进行沟通. 信息资源合理配置有助于重要信息的自由流动, 当社区平台提供的服务或者现有的专家库中专家提出的解决方案无法切合用户需求时, 通过在社区平台上发布信息让有相关经验和能力的数值模拟企业和计算软件公司都参与进来与用户进行协商, 提供更加符合实际需求、更全面、更专业的服务. 与此同时, 完成需求后产生的解决方案可以作为一个新的复用案例进一步完善社区平台应用能力. 社区平台与企业和公司都能从中快捷的获取彼此需要的信息, 可以使合作的满意度大为提高, 对社区平台整合企业和公司资源, 克服信息不对称带来的风险起到了很大的作用.
(2) 资质认证机制. 对于社区平台与数值模拟企业和计算软件公司来说, 双方一定的资质认证可以激发双方更好地维护合作关系, 积极完成开发工作. 资质认证是很重要的一点, 社区平台要筛选在行业领域有解决资质和专门解决方案的企业和公司进驻到社区平台当中, 避免因资质不全, 技术不够成熟对用户造成损失, 同时社区平台也会引导用户甄别符合自己需求的企业和公司进行协商. 社区平台为企业和公司提供稳定的计算环境支持, 确保其在处理业务的过程的安全性. 为了让企业和公司与用户能够更好地沟通, 社区平台也需要收集必要的用户信息, 确保用户的身份得到认证.
(3) 创新贡献激励. 创新贡献激励是以经济手段来使企业产生动力. 社区平台通过优惠政策和经济手段把社区平台通过企业和公司解决客户问题部分的盈利与公司企业的创新收益和贡献挂钩. 公平合理的利益分配机制, 有利于激发企业和公司解决问题的热情以及有利于合作创新的开展.
2.2.2 合作运营利益分配利益分配是合作创新的基础, 但利益是一把双刃剑. 为了使合作利益得到公平、合理的分配, 使得参与的中小企业能够获得预期的收益, 需要提出指导利益分配的原则[4].
(1) 公平竞争原则. 参与的企业和公司是以平等的身份进驻社区平台的, 企业和公司之间存在的只有专业领域的不同, 利益与企业和公司综合实力和规模大小无关, 每个企业和公司追求利益的权力是平等的.
(2) 风险论证原则. 由于中小企业参与社区平台内的研究活动均是存在于用户实际生产活动过程中的问题, 如何联系理论去解决并且落实到实际, 这一过程中存在一定的风险, 为了体现合作创新利益共享、风险共担的原则. 某参与的企业或公司承担的风险越大, 获得的利润也应该越多, 所以有必要建立一套用户与企业和公司合作的风险系数. 利用风险系数评估需要参与的企业和公司的个数以及各参与成员单位的收益分配.
(3) 互利共生原则. 所谓互利共生就是在合作创新的过程中, 保证每个企业或公司从创新成功后获取相应的利益不会低于其在市场上付出相对应服务的利益. 社区平台为企业和公司提供有需求的用户, 企业和公司帮助社区平台完善了功能并且提高了资源使用率. 只有互利共生才能谋求长久、稳定的共同发展.
(4) 流程透明原则. 信息沟通常常是引起矛盾的原因, 为了减少因信息沟通造成的误会和矛盾, 一方面, 社区平台要与各企业和公司加强沟通, 及时解决出现的利益纠纷. 另一方面, 要公布利益分配的计算方案和计算方法等信息, 做到透明公开.
(5) 充分协商原则. 一个创新利益分配方案的制定过程是一个由众多参与企业和公司群体决策的过程. 社区平台在制定方案时应前往企业和公司研发部门实地调研, 了解企业和公司盈利点, 收集企业和公司提出的利益分配意见. 社区平台负责起草初始方案并对提出的意见进行采纳和修改, 使最后的利益分配方案能够被参与的企业和公司接受. 面对因规定不明确产生的利益纠纷, 应该本着实事求是、充分协商的原则解决, 以谋求共同发展.
2.2.3 社区平台中服务机制运行面对中小企业用户在社区中的行为模式, 我们通过收集用户的行为日志并进行分析, 结合服务机制落实到中小企业计算社区中. 对于用户行为处理步骤如图4所示.
用户行为分析主要分为3个模块, 用户行为收集模块、用户日志分析模块和结果反馈模块[5].
日志收集模块主要收集用户计算任务涉及的领域、任务计算量、用户的专业程度以及使用频率等行为信息. 并将用户在计算社区中生成的行为日志传输到服务器上, 对日志信息进行整理, 去除系统生成的部分系统日志, 并对其中规范化的使用规则进行抽取和清洗, 最后进行存储.
用户日志分析模块主要是对收集到用户行为按照不同的需求进行分析处理, 并生成分析结果. 例如在计费方面, 在用户提交的计算任务结束后, 计算社区通过HTTP请求对用户提交任务所使用的运算资源和软件信息进行统计, 后端程序调用端服务API查询获取到用户任务相关信息后按照计费公式的结果扣除用户积分, 最后将计算之后的结果反馈给计算社区.
结果反馈模块针对用户日志分析模块给出的分析结果进行相应的结果展示, 主要呈现形式有结合计费机制对账户进行管理, 利用用户行为等信息推荐合适专家、计算公司和智能化模板等, 方便用户更便捷、更直观的获取结果信息.
3 收费机制在传统模式中, 企业通过购买计算机硬件设备部署属于自己的信息系统. 然后构建部署需要成立专门的技术部门并且投入大量资金, 后期维护成本高. 中小企业由于自身规模和资金水平相对有限, 计算需求带来的巨额成本成为了限制中小企业信息化的一道重要门坎. 随着云计算的出现, 给中小企业发展带来了新的契机, 企业无需投入大量资金, 通过租赁的方式可以获得专业的云服务, 同时云计算将资源进行整合, 能够对不同场景、不同专业领域、不同专业背景的企业进行多样化、专业化的便捷服务. 其中合理的计费方式对计算平台的运行和加快技术在企业中的投入使用中起到了至关作用.
在实际操作过程中, 不同的平台在制定计费方式上会有不同的倾向, 平台计费也面临着计费因子众多工作复杂的问题. 传统的计费模式主要以时间、流量、服务质量和内容为参考标准进行区分. 现在的云计算服务计费模式主要以Amazon的EC2[6]、Microsoft Windows Azure[7]、阿里云[8]和腾讯云[9]为代表.
Amazon的EC2提供的是云计算环境下的IaaS服务平台, EC2服务的报价分为4个方面: 计算实例、数据传输、存储和其他增值服务. 计算实例就是用户生成的机器映像, 能为用户提供不同计算资源的运行环境, 包括CPU、GPU、内存、硬盘、带宽和网络流量等, 可从实例、数据传输量、EBS (Elastic Block Storage)使用量、弹性IP、云监控和弹性负载均等方面进行计费[10].
微软Azure平台自从2010年起投入商用以来, 提出了.NET、SQL和Dynamics CRM等多种服务, 帮助用户建立云计算应用并将现有的业务扩展到云端. Azure的计费模型主要分为计算费用、存储费用、请求事物费用、连接费用和带宽费用[10].
通过总结以上云计算商用平台的分析研究, 结合中小机器计算平台实际情况, 可以总结出影响计费机制的主要因素, 分别有: CPU、GPU、内存、存储和实例等. 同时中小企业中包含有许多自研软件和商用软件, 软件使用费也是主要因素之一.
CPU: 作为计算平台的核心资源之一, 主要是以单核和多核组合并行的形式为用户提供服务. 用户在启动计算软件实例调用计算服务时, 可以设置软件运行所使用的核数.
GPU: 是平台硬件资源的又一核心资源. 新一代统一渲染GPU提供了强大的功能与性能, 为大规模数据可视化带来了新的机会, 并且GPU的独特性在于同时拥有并行计算与交互式图形处理这两重属性, 为平台中工作流数据可视化, 应用软件远程可视化建模提供了十分良好的硬件基础.
内存: 是平台中对用户相对透明但使用极为频繁的资源[11]. 平台采用动态分配的模式, 当用户初始化软件实例时, 用户无需设置运行所需内存, 系统采用动态分配内存的方法自动为软件分配运行时需要的内存, 避免了用户设置不当造成的资源不足或资源浪费.
存储: 是平台中存放数据的重要介质. 具有独占性和长久性, 能为用户提供大容量隔离的数据空间, 同时平台存储具有定时备份的功能, 在保障数据的长久性的同时, 也具备了数据的稳定性. 再加之存储的低成本且灵活性, 可以为用户提供灵活的定制化存储服务.
软件使用: 在平台中软件中包含有许多商业软件如ADF、GAMESS和Matlab等需要购买商业软件使用权, 与此同时, 平台中的自研软件是用户或者团队进行开发和部署的, 需要支付一定的使用费, 为平台良性运转提供好的环境.
以上对计费机制中的商用计费策略, 平台计费影响因子进行了探讨. 针对平台基于的使用群体, 本文提出了一种结合用户等待时间的动态定价策略[12, 13].
令N={N1, N2,···, Nm}代表一种计费影响因子的使用单价, TR是服务的使用时间或者使用数量, 在中小企业方面计费影响因子包含硬件部分和软件部分, 硬件部分为使用的CPU、GPU、存储量、内存等, 软件部分为商业软件的使用费、自研软件的使用费等. W表示每一项计费影响因子的权重, 所有权重之和为1, 权重的分布由计算社区进行调整. P是用户使用服务所产生的费用, r代表等待时间可以给予优惠的比例, TW代表等待时间可以给予优惠的比例, 计费公式如下:
$P = \sum\limits_{i = 1}^m {{W_i}({T_R}{N_i})} - r{T_W}$ | (1) |
服务质量是中小企业用户很重要的一个选择原因, 并且服务器的容量和反应时间也是有限的. 如果用户提供的计算请求不能及时被处理, 可以通过降低价格的方式保吸引用户继续使用. 当用户等待时间在超过最大处理反应时间后, 收费会逐步递减, 起到动态调整的作用.
用户支付的费用先由平台收取, 然后统计各大超算的服务接口调用次数和服务接口调用时间, 按照与各大超算协商的单价将这一部分的资源使用费付给各大超算.
4 结束语中小企业是我国企业中一个重要的组成部分, 但因为中小企业在运行过程中会面临计算资源短缺以及缺少解决方案等一系列问题难以解决, 对此我们基于各大超算中心的高性能资源, 建设中小企业数值模拟与应用社区. 从整体框架设计、运营机制和计费机制阐述了社区平台为有实际需求的中小企业用户提供社区架构、服务运作和管理方式. 但面对不同领域、不同规模的中小企业还需要进一步细化和完善运营机制, 从多个角度激发中小企业参与的积极性, 采用数据分析建模的方法制定符合社区平台的利润分配标准, 并对参与服务的中小企业建立一套客观的评判标准.
[1] |
孙凝晖, 谭光明. 高性能计算机发展与政策. 中国科学院院刊, 2019, 34(6): 609-616. |
[2] |
赵佩华. 中小企业实施开放式创新的益处与风险. 企业管理, 2017(1): 111-113. DOI:10.3969/j.issn.1003-2320.2017.01.043 |
[3] |
徐广玉. 中小企业合作创新中的知识转移研究[博士学位论文]. 哈尔滨: 哈尔滨工程大学, 2014.
|
[4] |
王慧军. 企业间合作创新运行机制研究[博士学位论文]. 长春: 吉林大学, 2010.
|
[5] |
刘倩, 肖海力, 曹荣强, 等. 基于云服务的计算化学社区. 科研信息化技术与应用, 2016, 7(2): 35-47. |
[6] |
AWS中国云. Amazon EC2定价. https://www.amazonaws.cn/ec2/pricing/. [2019-06-13].
|
[7] |
Microsoft Azure. Azure定价. https://azure.microsoft.com/zh-cn/pricing. [2019-06-13].
|
[8] |
阿里云. 阿里云定价. https://www.aliyun.com/price/?spm=5176.8142029.388261.25.3dbd6d3ekPVk48. [2019-06-13].
|
[9] |
腾讯云, 腾讯云定价. https://buy.cloud.tencent.com/price. [2019-06-13].
|
[10] |
袁玉宇, 胡文博. 基于IaaS云计算平台的弹性计费模型. 中兴通讯技术, 2012, 18(6): 34-37. |
[11] |
陈红. 云计算应用引擎计费机制研究与实现[硕士学位论文]. 长沙: 国防科学技术大学, 2011.
|
[12] |
刘国奇, 刘慧, 高宇, 等. 基于效用的云计算动态资源计费策略. 吉林大学学报(工学版), 2013, 43(6): 1631-1637. |
[13] |
刘锡洋. 基于多服务器系统配置策略的云计算利润模型研究[硕士学位论文]. 长沙: 湖南大学, 2016.
|