草庐IT

ChatGPT是什么?为何会引爆国内算力需求?

Jericho2022 2023-04-05 原文

过去十年中,通过“深度学习+大算力”从而获得训练模型是实现人工智能的主流技术途径。由于深度学习、数据和算力这三个要素都已具备,全世界掀起了“大炼模型”的热潮,也催生了大批人工智能企业。

大模型是人工智能的发展趋势和未来

大模型,又称为预训练模型、基础模型等,是“大算力+强算法”结合的产物。大模型通常是在大规模无标注数据上进行训练,学习出一种特征和规则。基于大模型进行应用开发时,将大模型进行微调,如在下游特定任务上的小规模有标注数据进行二次训练,或者不进行微调,就可以完成多个应用场景的任务。

迁移学习是预训练技术的主要思想。当目标场景的数据不足时,首先在数据量庞大 的公开数据集上训练基于深度神经网络的 AI 模型,然后将其迁移到目标场景中,通 过目标场景中的小数据集进行微调,使模型达到需要的性能。在这一过程中,这种在公开数据集训练过的深层网络模型,即为“预训练模型”。使用预训练模型很大程度上降低了下游任务模型对标注数据数量的要求,从而可以很好地处理一些难以获得大量标注数据的新场景。大模型正是人工智能发展的趋势和未来。

ChatGPT是大模型的直接产品

单点工具往往是基于大模型产生的能实际应用的产品。ChatGPT就是在GPT-3.5模型的基础上,产生出的能“对话”的AI系统。

2022年11月30日, OpenAI发布ChatGPT,一款人工智能技术驱动的自然语言处理工具,能够通过学习和理解人类的语言来进行对话和互动,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。ChatGPT对搜索领域或带来巨大冲击。由于ChatGPT能够与用户进行交流明确需求并具备文本生成能力进行回复,其相对于传统搜索引擎在输入端和输出端都具有难以替代的优势。

因而ChatGPT可能对搜索带来一个重大变化:用户将会转向聊天机器人寻求帮助,而不是通过谷歌提供的网站进行过滤。同时,技术上,ChatGPT也可能会降低搜索引擎的门槛。可以说,ChatGPT已经真真切切地改变了搜索领域,对众多科技公司产生了巨大的挑战。

AI大模型里程碑式的胜利

ChatGPT采用监督学习+奖励模型进行语言模型训练。ChatGPT使用来自人类反馈的强化 学习 (RLHF) 来训练该模型。首先使用监督微调训练了一个初始模型:人类AI训练员提供对话,他们在对话中扮演双方——用户和AI助手。其次,ChatGPT让标记者可以访问模型编写的建议,以帮助他们撰写回复。最后,ChatGPT将这个新的对话数据集与原有数据集混合,将其转换为对话格式。具体来看,主要包括三个步骤:

资料来源:OpenAI 官网、华泰研究

  • 1)第一阶段:训练监督策略模型。在ChatGPT模型的训练过程中,需要标记者的参与监 督过程。首先,ChatGPT会从问题数据集中随机抽取若干问题并向模型解释强化学习机制, 其次标记者通过给予特定奖励或惩罚引导AI行为,最后通过监督学习将这一条数据用于微调GPT3.5模型。

  • 2)第二阶段:训练奖励模型。这一阶段的主要目标,在于借助标记者的人工标注,训练出合意的奖励模型,为监督策略建立评价标准。训练奖励模型的过程同样可以分为三步:1、抽样出一个问题及其对应的几个模型输出结果;2、标记员将这几个结果按质量排序;3、将排序后的这套数据结果用于训练奖励模型。

  • 3)第三阶段:采用近端策略优化进行强化学习。近端策略优化(Proximal Policy Optimization)是一种强化学习算法,核心思路在于将Policy Gradient中On-policy的训练过程转化为Off-policy,即将在线学习转化为离线学习。具体来说,也就是先通过监督学习策略生成PPO模型,经过奖励机制反馈最优结果后,再将结果用于优化和迭代原有的PPO模型参数。往复多次第二阶段和第三阶段,从而得到参数质量越来越高的ChatGPT模型。

ChatGPT离不开大算力支持

大模型训练需要大算力支持,ChatGPT坐拥丰富算力资源。从大模型自身的发展过程来看,参数量的变化是一个非常值得关注的指标。从最早的ResNet、Inception等模型,到如今的GPT,模型参数量不断增长。2018年前后OpenAI先后推出Transformer和GPT-1模型,参数量来到1亿级别。随后谷歌提出3亿参数的BERT模型,参数量再次增长。2019、2020年OpenAI加速追赶,陆续迭代出GPT-2、GPT-3模型,参数量分别为15亿、1750亿,实现模型体量质的飞跃。另一方面,参数运算需要大规模并行计算的支持, 核心难点在于内存交换效率,取决于底层GPU内存容量。

  • OpenAI预计人工智能科学研究要想取得突破,所需要消耗的计算资源每3~4个月就要翻一倍,资金也需要通过指数级增长获得匹配。

  • 在算力方面,GPT-3.5在微软Azure AI超算基础设施(由GPU组成的高带宽集群)上进行训练,总算力消耗约3640PF-days(即每秒一千万亿次计算,运行3640天)。

  • 在大数据方面,GPT-2用于训练的数据取自于Reddit上高赞的文章,数据集共有约800万篇文章,累计体积约40G;GPT-3模型的神经网络是在超过45TB的文本上进行训练的,数据相当于整个维基百科英文版的160倍。

  • 按照量子位给出的数据,将一个大型语言模型(LLM)训练到GPT-3级的成本高达460万美元。

就ChatGPT而言,需要TB级的运算训练库,甚至是P-Flops级的算力。需要7~8个投资规模30亿、算力500P的数据中心才能支撑运行。就目前的服务器处理能力来看,大概是几十到几百台GPU级别的服务器的体量才能够实现,而且需要几日甚至几十日的训练,它的算力需求非常惊人。

国内布局ChatGPT引爆算力需求

随着ChatGPT火遍全球,国内互联网厂商陆续布局ChatGPT类似产品,或将加大核心城市IDC算力供给缺口。据艾瑞咨询,2021年国内IDC行业下游客户占比中,互联网厂商居首位,占比为60%;其次为金融业,占比为20%;政府机关占比10%,位列第三。而目前国内布局ChatGPT类似模型的企业同样以互联网厂商为主,如百度宣布旗下大模型产品“文心一言”将于2022年3月内测、京东于2023年2月10日宣布推出产业版ChatGPT:ChatJD。另一方面,国内互联网厂商大多聚集在北京、上海、深圳、杭州等国内核心城市,在可靠性、安全性及网络延迟等性能要求下,或将加大对本地IDC算力需求,国内核心城市IDC算力供给缺口或将加大。

而与需求相对应的是,我国智能算力规模保持快速增长。IDC报告显示,2022年人工智能算力规模达到每秒268百亿亿次浮点运算,超过通用算力规模,预计未来5年中国人工智能算力规模的年复合增长率将达52.3%。

在此背景下,随着国内厂商相继布局ChatGPT类似模型,算力需求或将持续释放,对于承接ChatGPT引爆的算力需求,思腾合力早有布局。

思腾合力一直专注于人工智能领域,提供云计算、AI服务器、AI工作站、系统集成、产品定制、软件开发、边缘计算等产品和整体解决方案,致力于成为行业领先的人工智能基础架构解决方案商。2021年,思腾合力乘势打造人工智能产业园,承接京津冀一体化乃至全国AI智能高科技企业入驻,通过资源整合、创新创业,打造AI智能产业链聚集区。

公司深耕高性能计算领域多年,已经打造出了一套完全自主软硬件结合的产品生态。全面覆盖云、边、端各层级算力需求,激活数据活力,充分释放数字潜能。对于ChatGPT推动的AI开发范式的转变。思腾合力将充分发挥IT架构优势,提升对数据价值的挖掘能力,支撑新旧范式的结合与转换。

思腾合力将在算力服务上持续精进,充分承接中国ChatGPT产品的算力需求,相辅相成,互相成就,聚力造就中国AI产业的大发展。

有关ChatGPT是什么?为何会引爆国内算力需求?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  6. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

  7. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  8. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  9. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  10. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

随机推荐