@@ -12,55 +12,82 @@ PostgreSQL , PolarDB , DuckDB , Data+AI , GPU , wire protocol , 被动请求 , r
1212----
1313
1414## 背景
15- 数据库服务器集成GPU一定不是好主意! 数据库到底要提升什么能力? 来更好的结合AI?
15+ 数据库服务器集成GPU一定不是好主意! 为什么呢?
16+
17+ 先回答以下5个问题, 马上豁然开朗!
1618
17191、数据库什么时候/场景要使用GPU, 使用GPU是高频操作吗? 频率如何?
18- - 推理, 例如基于问题和数据, 让大模型进行推理. 也许能成为高频操作, 但是再看问题2.
19- - RAG, 例如基于问题和记忆 /相关知识点, 让大模型生成结果. 也许能成为高频操作, 但是再看问题2.
20- - 预训练, 使用数据库存储预训练的数据集, 预训练的过程中进行调用. 低频操作, 这种场景要的是数据的大吞吐, 所以你看deepseek开源smallpod(base on duckdb)测的benchmark是什么? 大吞吐的数据进出.
21- - 微调, 使用数据库存储微调的数据集, 微调的过程中进行调用. 低频操作
20+ - 1 推理, 例如基于问题和数据, 让大模型进行推理. 也许能成为高频操作, 但是再看问题2.
21+ - 2 RAG, 例如基于问题和"历史记忆 /相关知识点" , 让大模型生成结果. 也许能成为高频操作, 但是再看问题2.
22+ - 3 预训练, 使用数据库存储预训练的数据集, 预训练的过程中进行调用. 低频操作, 这种场景要的是数据的大吞吐, 所以你看deepseek开源smallpod(base on duckdb)测的benchmark是什么? 大吞吐的数据进出.
23+ - 4 微调, 使用数据库存储微调的数据集, 微调的过程中进行调用. 低频操作
2224
23252、数据库使用GPU时, 发给GPU的数据最多有多少?
2426- 不能超过模型能处理的上下文, 例如一般是128K(参数量相同的情况下上下文支持越大的模型, 回复精确度越低), 目前最大的可能是1MB.
2527- 通常发给大模型的数据不会太大. 可能在KB级别.
2628
27- 如果数据库的带宽是10GB, 每秒可以向GPU发送131万次请求(每个请求1KB). 显然这样的请求量, GPU早就成为瓶颈了. 一定不会是数据库的传输带宽, move data更便宜 .
29+ 如果数据库的带宽是10GB, 每秒可以向GPU发送131万次请求(每个请求1KB). 显然这样的请求量, GPU算力早就成为瓶颈了. 瓶颈一定不会是数据库的传输带宽, 所以 move data 更划算 .
2830
29313、数据库服务器升级/更换GPU时, 需要停止该服务器上运行的数据库吗?
3032- 肯定影响啊, 为了降低影响, 至少得切换吧?
3133
32344、企业中除了数据库要用GPU, 还有哪些应用需要使用GPU, 相比于数据库, 这些应用使用GPU的频率更高还是更低?
33- - 大概率是面向C端/AI Agent的应用使用GPU更高频. 在数据库服务器中安装GPU卡, 增加了数据库集群的故障点.
35+ - 大概率是面向C端/AI Agent的应用使用GPU更高频. 在数据库服务器中安装GPU卡, 增加了数据库集群的故障点. 为了低频需求增加故障点感觉不值得!
3436
35- 5、数据库服务器需要额外的空间来存储模型吗?
36- - 当然需要, 因为使用大模型时, 需要把模型参数全部加在到GPU内存中. (模型有大有小, deepseek R1 671B参数量化后还需要400多GB. 如果你希望使用各种不同的模型, 则需要在数据库服务器上预留更多的存储空间来存放模型, 到时候切换模型还会导致瞬间的占用存储模型文件的磁盘IO, 也可能影响数据库稳定性).
37+ 5、数据库服务器需要额外的空间来存储模型吗? 需要存储多个模型吗? 加载模型时会导致IO飙升吗?
38+ - 当然需要, 因为使用大模型时, 需要把模型参数全部加在到GPU内存中. (模型有大有小, deepseek R1 671B参数量化后还需要400多GB. 我们一般会在不同场景中使用各种不同的模型, 那么就要在数据库服务器上预留更多的存储空间来存放不同的模型文件, 切换模型时需要将模型导入GPU内存, 导致瞬间磁盘IO飙升(指存储模型文件的磁盘))
39+ - 显然, 把模型文件放在数据库服务器上, 把GPU放在数据库服务器上, 可能影响数据库稳定性.
3740
3841综上, 数据库服务器集成GPU一定不是好主意.
3942
40- 其实数据库要的是大模型的推理能力, 集成GPU不是目的, 而是手段. 正确的做法一定是建立独立的GPU服务器集群, 让数据库使用API调用大模型的能力.
43+ 个人认为, 数据库要的是大模型的推理能力. 集成GPU不是目的, 而是手段. 正确的做法一定是建立独立的GPU服务器集群, 让数据库拥有使用API调用大模型的能力即可.
4144
42- 所以 ` postgresml ` 这个项目的价值不是它集成了GPU (个人认为这个反而是败笔), 有价值的实际上是“数据库与大模型在能力上的结合对业务和数据产生了新的价值 ”.
45+ ` postgresml ` 这个项目的价值不是它让PG集成了GPU (个人认为这个反而是败笔), 有价值的实际上是“数据库与大模型在能力上的结合给业务和数据带来了新的价值 ”.
4346
4447https://postgresml.org/docs/
4548
4649https://github.com/postgresml/postgresml
4750
4851https://www.star-history.com/#postgresml/postgresml&Date
4952
50- ## 数据库到底要提升什么能力?来更好的结合AI?
51- 个人观点:
53+ 可以看到postgresml项目刚出来的时候star增长很陡峭, 2024之后增长斜率大幅下降, 而2024是AI应用爆发之年, 斜率逆势下降必有因, 该项目方向可能是错的.
54+
55+ ## 数据库到底要提升什么能力? 才能更好的结合AI?
56+ 以下纯属个人观点:
5257
53581、wire protocol的改进.
5459
55- GPU服务器集群可以部署更大参数量、更多的模型, 算力将大幅提升, 同时上下文的能力未来也可能会有大幅提升 .
60+ GPU服务器集群可以部署更大参数量、更多的模型, 算力将大幅提升, 同时未来上下文的能力也可能会有大幅提升 .
5661
57- 所以一次SQL请求中从数据库提取大量数据还是有可能的 . 所以要在wire protocol这块下功夫:
58- - 避免序列号反序列化 , 数据直达模型
59- - 协议层传输加密/ 压缩能力
60- - 更高效的支持mcp(resource/tools/prompt)
61- - random URL+token支持. 例如, 在数据库中生成SQL对应的URL和相应token, 在一个时间窗口内(例如30秒 ), 可以直接通过这个url (例如 ( ` protocol://url/parameter:$?&token:$? ` ) ) 访问对应数据库获取相应数据. 结合mcp server , 这就让AI agent可以更高效的从数据库中访问需要的数据.
62+ 所以一次SQL请求中, 从数据库提取大量数据还是有可能的 . 所以要在wire protocol这块下功夫, 提升move data效率、降低move data成本 :
63+ - 避免序列化反序列化 , 数据直达模型
64+ - 协议层支持传输加密& 压缩能力
65+ - 更高效的支持mcp server (resource/tools/prompt)
66+ - random URL+token支持. 解释一下, 例如, 在数据库中生成SQL对应的URL和相应token以及有效访问时间, 在一个有效时间窗口内(例如30秒内 ), 可以直接通过这个url (如 ( ` protocol://DSN/ url/parameter:$?&token:$? ` ) ) 访问对应数据库获取相应数据(实则为请求对应SQL的结果). 通过数据库mcp server和新的wire protocol , 这就让AI agent可以更高效的从数据库中访问需要的数据.
6267
63682、内置调用大模型API的异步函数接口
64- - 因为大模型的请求通常都比较长, 通过接口异步化, 可以把请求提前, 可以使用并发, 可以提高整体数据库吞吐. 和PostgreSQL 18的AIO优化一个思路.
69+ - 因为大模型的请求通常都比较长, 通过接口异步化, 可以把请求提前, 可以使用并发, 可以提高整体数据处理吞吐. 和PostgreSQL 18的AIO优化一个思路.
70+ - [ 《PostgreSQL 18 功能整理 : 14以来最值得期待的版本》] ( ../202504/20250407_11.md )
71+
72+ <b > 注意, 本文讨论范围不包含池化架构. 池化后的硬件和软件应用全面结耦, 不存在上述问题. </b >
73+
74+ #### [ 期望 PostgreSQL|开源PolarDB 增加什么功能?] ( https://github.com/digoal/blog/issues/76 " 269ac3d1c492e938c0191101c7238216 ")
75+
76+
77+ #### [ PolarDB 开源数据库] ( https://openpolardb.com/home " 57258f76c37864c6e6d23383d05714ea ")
78+
79+
80+ #### [ PolarDB 学习图谱] ( https://www.aliyun.com/database/openpolardb/activity " 8642f60e04ed0c814bf9cb9677976bd4 ")
81+
82+
83+ #### [ PostgreSQL 解决方案集合] ( ../201706/20170601_02.md " 40cff096e9ed7122c512b35d8561d9c8 ")
84+
85+
86+ #### [ 德哥 / digoal's Github - 公益是一辈子的事.] ( https://github.com/digoal/blog/blob/master/README.md " 22709685feb7cab07d30f30387f0a9ae ")
87+
88+
89+ #### [ About 德哥] ( https://github.com/digoal/blog/blob/master/me/readme.md " a37735981e7704886ffd590565582dd0 ")
90+
6591
92+ ![ digoal's wechat] ( ../pic/digoal_weixin.jpg " f7ad92eeba24523fd47a6e1a0e691b59 ")
6693
0 commit comments