ChatGPT软件技术栈解密时间:2021-03-27 01:09:36ChatGPT 点燃了通用AI浪潮,继农业革命、工业革命、计算机技术革命后,也将可能掀起 AI 技术革命。 业界对 ChatGPT 的 AI 算法关注得比较多,但是 OpenAI 已经演变为服务数亿用户的平台服务。近3个月 ChatGPT 的 SLA 大约99%,也就是说平均每天大约有15分钟不可用,整体技术架构和可靠性也备受关注。 ![OpenAI 网站近90天状态图](http://img.blog.itpub.net/blog/2023/03/28/92592278f8c9626b.png?x-oss-process=style/bb) OpenAI 网站近90天状态图(绿色表示可用,其它表示异常) **ChatGPT 没有对外正式分享他们的技术架构,所以很难准确知道架构大图,本文尝试从以下几个方面:** - 互联网公开信息(twitter、linkedIn等) - OpenAI 最新招聘岗位要求 - OpenAI 几次故障报告 - Github 代码 绘制了 ChatGPT 的主要软件技术栈大图。 ![ChatGPT软件技术栈大图](http://img.blog.itpub.net/blog/2023/03/28/a0a32a861081b9fd.png?x-oss-process=style/bb "ChatGPT软件技术栈大图") # 1、云服务 OpenAI 是云时代的 AI 创业公司,所有业务都是架设在公有云上,在创业初期得到 AWS 的支持,下面这个对话是 OpenAI 截止2021年公开信息的回答: ![OpenAI 使用了AWS云服务](http://img.blog.itpub.net/blog/2023/03/28/f218120225535344.png?x-oss-process=style/bb "OpenAI 使用了AWS云服务") ![OpenAI 截止2021年公开信息显示使用了AWS云服务](http://img.blog.itpub.net/blog/2023/03/28/329b6ff1b8d6e298.png?x-oss-process=style/bb "OpenAI 截止2021年公开信息显示使用了AWS云服务") 上面这段话来自 OpenAI 的官网早期文章介绍,可以看到曾使用了大量 AWS 服务。 近两年又得到微软巨额投资,并且明确了要由 Azure 提供服务。可以肯定 ChatGPT 是在转向以 Azure 为主的多云方案,AWS 服务会逐渐减少。 另外使用了 Terraform 多云管理服务来做云资源的管理。 # 2、数据库 ![ChatGPT 的核心业务数据保存在关系型数据库 PostgreSQL 中](http://img.blog.itpub.net/blog/2023/03/28/91aba8c9b2f57999.png?x-oss-process=style/bb) 首先问 ChatGPT 自己,基本上都没有明确的答案。不过从官网职位和故障报告可以得到比较准确的信息: ChatGPT 的核心业务数据保存在关系型数据库 PostgreSQL 中,这个在官方网站有介绍,数亿用户的账号、AK和对话等信息都保存在这里。 2023.2.20号的故障报告也说明了主数据库 PostgreSQL 发生问题。并且提到使用了PgBouncer的连接池服务。 同时使用了 Redis 集群作为缓存服务,在2023.3.20 ChatGPT 爆出了安全漏洞,部分用户可以看到其他人的聊天记录,就是因为踩了 Redis-py 在连接取消状态下会话错乱的 bug,CEO Sam Altman 也在 twitter 出来道歉。 ![Redis-py 在连接取消状态下会话错乱的 bug,CEO Sam Altman 也在 twitter 出来道歉。](http://img.blog.itpub.net/blog/2023/03/28/d43eaeb2e3edd73a.png?x-oss-process=style/bb) 另外还在招聘中希望懂 CosmosDB,这个目前还不确认用在什么场景,CosmosDB 是 Azure 推出的多模数据库,支持 MongoDB、Cassandra、PostgreSQL、Gremlin 等兼容性接口,是微软在 NoSQL 领域的旗舰产品。 之前 Patrick-McFadin (Cassandra Committer)在 LinkedIn 上提到 OpenAI 使用了 Cassandra,但最终讨论下来是 ChatGPT 自己胡说的,还不能确认是否真的使用了 Cassandra 或者是在 CosmosDB 中使用了 Cassandra 的 API。 另外CosmosDB也通过收购过来的Citus提供的分布式PostgreSQL的接口。不确认是否使用了Citus来完成分布式数据库架构。 ChatGPT 使用了 Snowflake 这个新一代的云原生数据仓库,并且使用了 Tableau 来做数据分析。支持多云部署的 Snowflake 对于业务从 AWS 到 Azure的跨云迁移是非常有利的。 # 3、前端 在Web前端方面,比较明确的是使用了 TypeScript 语言和 React 框架。 移动端目前 ChatGPT 还没有正式的 APP 发布,不过已经在招聘 iOS 和 Android 工程师,应该快了。 # 4、应用与服务编程语言 作为以 AI 为基础的科技公司,OpenAI 选择 Python 为核心语言,不管是 AI 岗位还是平台软件工程师岗位,都是需要精通 Python 语言。 平台服务选择 Python,使用了 Python 里比较流行的 Flask 框架,并使用了 OpenAPI 等组件。 # 5、AI 技术框架 AI 技术框架核心是 Pytorch,可能也使用了 Tensorflow。 OpenAI 自己研发了面向 GPU 的算法框架 Triton,并且在 github 上开源了( https://github.com/openai/triton),用于代替 NVIDIA 的 CUDA,目标是能更高效的开发机器学习算法。Triton 的编程语言使用了 c++和 python。 关于更细节的 AI 训练和部署服务架构还待挖掘。下图是来自网上陈巍博士分享的一张大模型典型架构图,供参考: ![更细节的 AI 训练和部署服务架构还待挖掘。下图是来自网上陈巍博士分享的一张大模型典型架构图](http://img.blog.itpub.net/blog/2023/03/28/6ab3880d8000d273.png?x-oss-process=style/bb) 来源:https://zhuanlan.zhihu.com/p/611464068 # 6、应用部署与监控运维 **容器服务**:Kubernetes **监控与运维**:Prometheues(招聘运维开发工程师提到需要懂PromQL) **日志服务:** Splunk **编程语言:** Golang、Python # 7、参考文档 1. ChatGPT软件工程师岗位描述: https://openai.com/careers/software-engineer-chatgpt 2. OpenAI 2023.2.20 故障分析报告: https://status.openai.com/incidents/mq5jgswy45fr 3. OpenAI开源Triton的Github地址: https://github.com/openai/triton 4. Patrick McFadin在Linkin上讨论ChatGPT是否使用了Cassandra: https://www.linkedin.com/posts/patrick-mcfadin-53a8046_this-isnt-your-regular-chatgpt-post-so-activity-7031372446536515584-P8fg/?utm_source=share&utm_medium=member_desktop # 8、最后 本文作者:叶正盛,NineData 程序员,玖章算术CEO,原阿里云资 深技术专家。 NineData 官网:www.ninedata.cloud,提供企业级数据库 SQL 开发工具,数据复制、对比、备份等产品,并提供了类似ChatGPT的SQL服务(SQL AI Copilot),免费使用,无需下载。 **欢迎大家留言或者转载!**