ChatGPT软件技术栈解密

1,635 阅读4分钟

ChatGPT 点燃了通用AI浪潮,继农业革命、工业革命、计算机技术革命后,也将可能掀起 AI 技术革命。

业界对 ChatGPT 的 AI 算法关注得比较多,但是 OpenAI 已经演变为服务数亿用户的平台服务。近3个月 ChatGPT 的 SLA 大约99%,也就是说平均每天大约有15分钟不可用,整体技术架构和可靠性也备受关注。

OpenAI 网站近90天状态图

OpenAI 网站近90天状态图(绿色表示可用,其它表示异常)

ChatGPT 没有对外正式分享他们的技术架构,所以很难100%准确知道架构大图,本文尝试从以下几个方面:

  • 互联网公开信息(twitter、linkedIn等)
  • OpenAI 最新招聘岗位要求
  • OpenAI 几次故障报告
  • Github 代码

绘制了 ChatGPT 的主要软件技术栈大图。

ChatGPT软件技术栈大图

1、云服务

OpenAI 是云时代的 AI 创业公司,所有业务都是架设在公有云上,在创业初期得到 AWS 的支持,下面这个对话是 OpenAI 截止2021年公开信息的回答:

OpenAI 使用了AWS云服务

OpenAI 截止2021年公开信息显示使用了AWS云服务

上面这段话来自 OpenAI 的官网早期文章介绍,可以看到曾使用了大量 AWS 服务。

近两年又得到微软巨额投资,并且明确了要由 Azure 提供服务。可以肯定 ChatGPT 是在转向以 Azure 为主的多云方案,AWS 服务会逐渐减少。

另外使用了 Terraform 多云管理服务来做云资源的管理。

2、数据库

首先问 ChatGPT 自己,基本上都没有明确的答案。不过从官网职位和故障报告可以得到比较准确的信息:

ChatGPT 的核心业务数据保存在关系型数据库 PostgreSQL 中,这个在官方网站有介绍,数亿用户的账号、AK和对话等信息都保存在这里。

2023.2.20号的故障报告也说明了主数据库 PostgreSQL 发生问题。并且提到使用了PgBouncer的连接池服务。

同时使用了 Redis 集群作为缓存服务,在2023.3.20 ChatGPT 爆出了安全漏洞,部分用户可以看到其他人的聊天记录,就是因为踩了 Redis-py 在连接取消状态下会话错乱的 bug,CEO Sam Altman 也在 twitter 出来道歉。

另外还在招聘中希望懂 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 上开源了(
github.com/openai/trit… NVIDIA 的 CUDA,目标是能更高效的开发机器学习算法。Triton 的编程语言使用了 c++和 python。

关于更细节的 AI 训练和部署服务架构还待挖掘。下图是来自网上陈巍博士分享的一张大模型典型架构图,供参考:

来源:zhuanlan.zhihu.com/p/611464068

6、应用部署与监控运维

容器服务:Kubernetes

监控与运维:Prometheues(招聘运维开发工程师提到需要懂PromQL)

日志服务: Splunk

编程语言: Golang、Python

7、参考文档

  1. ChatGPT软件工程师岗位描述:

openai.com/careers/sof…

  1. OpenAI 2023.2.20 故障分析报告:

status.openai.com/incidents/m…

  1. OpenAI开源Triton的Github地址:

github.com/openai/trit…

  1. Patrick McFadin在Linkin上讨论ChatGPT是否使用了Cassandra:

www.linkedin.com/posts/patri…

8、最后

本文作者:叶正盛,NineData 程序员,玖章算术CEO,原阿里云资深技术专家。

NineData 官网:www.ninedata.cloud , 提供企业级数据库 SQL 开发工具,数据复制、对比、备份等产品,并提供了类似ChatGPT的SQL服务(SQL AI Copilot),免费使用,无需下载。

欢迎大家留言或者转载!