震惊世界的ChatGPT,要多少人才能开发出来?几百,还是几千?
答案是:87个人。
老实说,刚看到这个数字真是惊到我了,印象里,之前看媒体报道各大巨头人工智能人才储备时,动辄都是几百上千人。
国内像百度,人工智能领域有上千人的规模,国外谷歌、Facebook也都差不多。但掀起这一轮AI浪潮的,却不是这些巨头,而是OpenAI,2015年才成立,刚开始只有十来个人,直到今年初也才只有300人左右。
这让我对这支团队极感兴趣——是什么原因,让这样一个不大的团队,引爆了这次AI革命?他们是怎样的一群人?
物理学家朗道说过这样一句话:一个一流的物理学家,水平是二流物理学家的10倍。
回顾科技史,我们必须要承认的一点是:在探索未知世界的道路上,最关键的突破往往由少数顶尖人才完成,人工智能领域同样如此。
这家公司虽然不大,却是大神云集——这是我看完一份关于OpenAI员工的报告后最大的感触。
来看下OpenAI的核心人员。
首先是CEO Sam Altman。
这哥们儿年纪不大,1985年出生于芝加哥,是个传奇人物:8岁会编程,高中就开始创建公司,斯坦福大学辍学后连续创业,27岁把自己的公司卖了4300万美元。
2015年的时候,Altman举办了一场关于人工智能的晚宴,讨论AI领域的现状、距离人类级的AI还有多远等话题,对AI一向很感兴趣的马斯克也受邀参加了。

Altman和马斯克一样,都是那种有着理想主义色彩的人,对于AI技术,俩人的想法和初衷是一致的:构建安全的人工智能以造福人类。
那次晚宴后不久,OpenAI应运而生。为了确保AI研究的”有益性“,几个创始人都认为:第一,它必须是非营利组织,以免有利益冲突影响AI使命;第二,必须保持在研究的最前沿。
可以说,Sam Altman 是OpenAI 这家公司从0到1的关键,正是这位老兄拉起了一支队伍,聚集起了一批志同道合的人才,给OpenAI的发展方向和战略定了基调。
不过,Sam Altman的工作重点在管理层面,如果从技术层面看的话,开发ChatGPT的核心人物是另一位技术大神——Ilya Sutskever,OpenAI的首席科学家,他也是公司联合创始人之一。

Ilya Sutskever 1985年出生于俄罗斯,当时苏联还没有解体,他们一家人居住在圣彼得堡。在苏联解体后的动荡岁月里,他们全家移民到了以色列,之后又到了加拿大多伦多。
Sutskever 从小对计算机和数学兴趣浓厚,后来在多伦多大学读计算机专业,大学期间他参加了多项国际机器学习竞赛。也是在那时候,他结识了好友Alex Krizhevsky(看名字就知道也是俄罗斯人),人工智能领域的另一个牛人。
读完博士后,Sutskever去了谷歌工作,参与了著名的“谷歌大脑”项目,开发了驱动 谷歌翻译的神经机器系统。他还获得过“麻省理工科技评论”评选的35岁以下科技精英,是人工智能领域的当红炸子鸡。
这样的大神显然是不会甘心一辈子给人打工的。
2015年,他与 Sam Altman、Greg Brockman等共同创立了 OpenAI。当时只有10来名员工,按照我们的标准,是一家名副其实的“小微公司”。
OpenAI 其他几位创始人曾这样评价Ilya Sutskever:
“Ilya 是技术基础的源泉,他是一位头脑清晰的技术专家,知识广博,视野开阔,并且总是能够深入到系统局限性和功能的具体细节。”
第三位,介绍一下OpenAI现在的首席技术官(CTO),Mira Murati。
这是位非常年轻的女性,1988年的,在人工智能圈子里还是比较罕见的。

和Ilya Sutskever 一样,Mira Murati 也不是土生土长的美国人。
她出生于阿尔巴尼亚(就是那个好莱坞电影中,经常产出犯罪集团的东欧国家),16岁时移民到加拿大,后来读大学考到了美国常春藤之一的达特茅斯学院,在那里读机械工程专业。
Mira Murati曾在特斯拉工作过三年,之后加入OpenAI,并很快做到了首席技术官的位置。她负责了监督ChatGPT的开发,尽管她并不是计算机专业出身,看来也是个能力极强的厉害角色。
核心管理层中,还有一位联合创始人Greg Brockman,也是个从大学时代就热衷创业的家伙。他原本不是AI领域的专家,但跟Sam Altman气味相投,被拉进创始团队中。
看起来,他们俩在OpenAI中的角色差不多,主要在组织管理层面,负责招兵买马扩大队伍、制定公司战略、企业文化之类。

这四个人,大概就是OpenAI几个最关键的灵魂人物了,他们从组织文化和技术两个层面,奠定了OpenAI成功的基础。
看下来,美帝不愧被调侃为“灯塔国”,目前在吸引顶级人才方面依然遥遥领先,这几个关键角色,两个是来自其他国家的新移民。
这里顺便提下俄罗斯。
俄罗斯人在数学和计算机领域颇有天赋,涌现出不少天才人物,但苏联解体后好多跑到了美国,为建设美帝添砖加瓦,像谷歌创始人之一谢尔盖·布林就是俄罗斯移民,任正非老爷子也常常让华为跑到俄罗斯抢人。
另外也说下华裔,ChatGPT中华裔比例占了10%左右,他们基本都毕业于斯坦福、清北、华科、香港大学等顶级名校。
OpenAI团队另外让我印象深刻的一点是:年轻。
平均年龄只有32岁,就连包括CEO在内的几个核心管理层也都是80后。开发ChatGPT的团队,30岁以下的有28人,40岁以下占了绝大多数。

我们传统印象里,一项重大科技突破,往往是“院士牵头,国家专项支持,多部门协调”等等,很难想象一群30出头的毛头小子能搞出什么改变世界的大动作。
这有点让我想起20世纪上半叶的物理大爆发时代,爱因斯坦26岁提出相对论,居里夫人30岁发现钋和镭,杨振宁35岁获得诺贝尔物理学奖……改变物理世界大厦的,其实是一群年轻人。
在工程领域,这样的例子也并不鲜见。比如特斯拉公司,最早是几个斯坦福大学生在车库里忽发奇想,能不能把几千节锂电池串联起来驱动一辆汽车。他们自己动手组装样车、测试,一步步带来了特斯拉的诞生。
实际上,这几年在网络上也看到过这方面的讨论:一个人创造性最强、思维最活跃的年龄其实也就是30-40岁这样,但可惜的是,现实中手握发言权的,却往往是一群早已确立了江湖地位的前辈。
像OpenAI这样的理想之地,即便是在硅谷,也往往可遇而不可求。
企业文化与价值观,听起来是个很虚的东西,尤其在咱们这个“讲奉献境界越讲越高,比待遇越比越窄的地方”,大家一听到老板讲企业文化就头疼。
但价值观又真的是个无形而有力的东西。
OpenAI的几个主要创始人,都是年纪轻轻便已实现财务自由的大神,他们决定致力于人工智能开发,最开始的初衷也真的是开发出造福人类的AI技术,同时警惕AI给人类带来灾难,商业化和赚钱并不是出发点。
相比之下,看到百度在发布“文心一言”后,李彦宏对记者兴高采烈地宣称“8万家客户在排队等着与百度合作”,未免格局有点低了。
前期OpenAI一直定位于做一家非营利组织,被诸多有志于AI事业的年轻人视为技术天堂。在这里,他们可以直接参与最前沿、最具创造力的 AI 项目, 心无旁骛地投身到技术创新中。
有人说,OpenAI的胜利是一群技术理想主义者的胜利,这话是很有道理的。或许正因如此,ChatGPT没有首先诞生在谷歌、微软、Meta这样的巨头,而是来自一支更“纯粹”的小团队。
不过硅谷巨头们倒确实是培养人才的黄埔军校。OpenAI的员工来源,排在前三位的便是谷歌、Meta和苹果。

说实话,仅仅几年前,我还对中美在人工智能领域差距的缩小感到乐观。
毕竟,中国的人口基数摆在那里,每年培养的理工科人才是美国的几倍,用户规模也远大于美国——要人才有人才,要数据有数据,要钱更不用说,怎么看都是万事俱备。
但现在看起来,人口与人才,并不一定是强关联。
我们确实培养了大量的理工科人才,有着让很多国家羡慕的所谓“工程师红利”,然而在前沿科技领域,最困难的突破,可能最需要的就是那么一两个顶尖人才。
没有乔布斯,就不会有今天的苹果帝国;没有马斯克,就不会有特斯拉和SpaceX。
这几年比较火热的AI话题,不管是第一次战胜人类的AlphaGo、无人驾驶还是ChatGPT,总是美国人先引爆,然后我们快速跟进。但一味在别人屁股后边跟进,恐怕永远也无法实现赶超。
这就又回到了著名的“钱学森之问”:“为什么我们总是培养不出领军式的杰出人才?”
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时
-if!request.path_info.include?'A'%{:id=>'A'}"Text"-else"Text"“文本”写了两次。我怎样才能只写一次并同时检查path_info是否包含“A”? 最佳答案 有两种方法可以做到这一点。使用部分,或使用content_forblock:如果“文本”较长,或者是一个重要的子树,您可以将其提取到一个部分。这会使您的代码变干一点。在给出的示例中,这似乎有点矫枉过正。在这种情况下更好的方法是使用content_forblock,如下所示:-if!request.path_info.inc
我有这个代码:context"Visitingtheusers#indexpage."dobefore(:each){visitusers_path}subject{page}pending('iii'){shouldhave_no_css('table#users')}pending{shouldhavecontent('Youhavereachedthispageduetoapermissionic错误')}它会导致几个待处理,例如ManagingUsersGivenapractitionerloggedin.Visitingtheusers#indexpage.#Noreason
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?
(跟进我之前的问题,Ruby:howcanIcopyavariablewithoutpointingtothesameobject?)我正在编写一个简单的Ruby程序来在.svg文件中进行一些替换。第一步是从文件中提取信息并将其放入数组中。为了避免每次调用此函数时都从磁盘读取文件,我尝试使用memoize设计模式-在第一次调用后的每次调用中都使用缓存结果。为此,我使用了一个在函数之前定义的全局变量。但是,即使我在返回局部变量之前将该变量.dup为局部变量,调用该变量的函数仍在修改全局变量。这是我的实际代码:#memoizetokeepfromhavingtoreadoriginalfi
2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动
目录ChatGPT简介技术原理应用未来发展ChatGPT的10 种用法ChatGPT简介ChatGPT是一种基于深度学习的大型语言模型,由OpenAI公司开发。技术原理GPT是GenerativePre-trainedTransformer的缩写,意为生成式预训练变压器。它的技术原理是使用了一个基于注意力机制的变压器(Trans
我想让字段由另一个字段解析。我有一个根据一些参数生成的列表,想更新总字段我的方法可能不正确。显然,我试图避免重新运行相同的数据库查询并在查询字符串中向上传递一个级别的过滤器。因此假设我的查询使用以下ruby类型:Types::PostListType=GraphQL::ObjectType.definedoname'PostList'field:total,!types.Int,default_value:0#(user,*_args){posts=function_to_filter(args[:filter])#howdoIupdatetotalwithposts.counth