ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

PostgresML 自托管完全指南:从 APT 安装到 GPU 加速与 pgvector 实战

PostgresML 自托管完全指南:从 APT 安装到 GPU 加速与 pgvector 实战 后端人工智能机器学习RAG向量数据库【免费下载链接】postgresmlPostgres with GPUs for ML/AI apps.项目地址https://gitcode.com/gh_mirrors/po/postgresml点击查看免费下载PostgresML 本质上是 PostgreSQL 的一个扩展因此自托管 PostgresML 与自托管一台 PostgreSQL 数据库服务器并无本质区别你依然拥有主库、副本与连接池的经典拓扑只是数据库内多出了一整套面向机器学习的 SQL 能力。本文将以 Ubuntu 22.04 为基线带你走完从添加 APT 源、安装扩展、验证CREATE EXTENSION pgml到为 LLM 与 XGBoost/LightGBM/Catboost 配置 CUDA 与 GPU 驱动再到编译安装 pgvector 的完整自托管流程并基于仓库内真实打包与配置实现说明每个安装步骤背后的包结构与运行机制。自托管架构它就是一台 PostgreSQL只是更聪明PostgresML 不会改变你熟悉的 PostgreSQL 运维模型。官方自托管指南给出的典型架构是三层主库Primary承担所有读写流量也是所有机器学习训练、模型存储与在线预测的执行者可选副本Replicas用于横向扩展读能力把只读查询与预测压力从主库上分流连接池Pooler在应用与数据库之间做连接负载均衡避免大量短连接拖垮主库。也就是说你并不需要为机器学习额外搭建一套独立服务模型训练与预测都作为 SQL 函数直接运行在数据库进程内。这一点从仓库的包结构上也能得到印证真正的功能载体是postgresql-pgml这个 PostgreSQL 扩展包其 Debian 控制文件packages/postgresql-pgml/DEBIAN/control将扩展描述为用 Rust 基于 tcdi/pgrx 编写并用 Python 与 PlPython 补充实现的数据库内机器学习引擎它可以直接对表或视图训练算法也可以仅用 SQL 对新的数据点做预测。操作系统选择为什么是 Ubuntu 22.04PostgresML 团队偏好 Ubuntu理由是它拥有最广泛的硬件架构支持、软件包生态与驱动程序覆盖。官方指南的后续所有命令都假设你运行在Ubuntu 22.04Jammy当前 LTS 版本上但文档也明确指出PostgresML 可以非常容易地在任何其他 Linux 发行版上运行。如果查阅仓库中的打包脚本packages/postgresml/release.sh可以看到当前构建体系覆盖了多个 Ubuntu LTS 版本代码名映射表包括Ubuntu 版本代码名20.04focal22.04jammy24.04noble这意味着即使你的宿主机版本与 22.04 略有差异仓库也提供了面向多个 LTS 的构建路径不过为了与本文及官方文档的命令完全一致建议在 22.04 上操作。通过 APT 安装 PostgresML无需编译源码自托管 PostgresML 最省力的方式是从官方 APT 仓库直接安装无需额外安装依赖、更无需从源码编译。整个过程只有三步。第一步添加 APT 源将官方仓库写入系统源列表echo deb [trustedyes] https://apt.postgresml.org jammy main | \ sudo tee -a /etc/apt/sources.list注意源声明中的[trustedyes]PostgresML 团队没有对 Debian 包做 GPG 签名而是依赖 HTTPS 来保证二进制的真实性与完整性。第二步更新软件源sudo apt update第三步安装主包sudo apt install -y postgresml-14关于包名中的14Ubuntu 22.04 自带 PostgreSQL 14。如果你系统里安装的是其他 PostgreSQL 主版本只需把包名中的14换成对应版本号。官方指南声明支持社区维护的所有版本即Postgres 12 到 15。而从当前仓库的打包脚本packages/postgresml/release.sh 中的for pg in {11..17}循环可以看到构建体系已进一步扩展到 PostgreSQL 11 至 17你可以按自己系统实际安装的版本选择。一个安装命令背后元包与依赖链postgresml-14并不是一个孤立的包而是一个元包meta package。它的 Debian 控制文件packages/postgresml/DEBIAN/control揭示了完整依赖链Depends: postgresml-python ( 2.7.13), postgresql-pgml-${PGVERSION} ( ${PACKAGE_VERSION})即安装postgresml-14会自动拉入两个组件postgresql-pgml-14真正的 PostgreSQL 扩展本体。其控制文件packages/postgresql-pgml/DEBIAN/control显示它还依赖libopenblas-devBLAS 线性代数库与postgresql-server-dev-${PGVERSION}等编译期/运行期组件。文档packages/README.md特别说明该扩展之所以独立分发是因为它内含大量不依赖 Python的算法即 Rust runtime且部分系统习惯在虚拟环境之外管理 Python 依赖官方不希望强制绑定。postgresml-python预构建的 Python 虚拟环境包含 HuggingFace、PyTorch、Scikit-learn、XGBoost 等全部 Python 侧依赖。其控制文件packages/postgresml-python/DEBIAN/control描述它为安装使用 PostgresML 所必需的 Python 依赖。它体积庞大因此独立分发——扩展的更新频率远高于 Python 依赖。装完包后postinst脚本packages/postgresml/DEBIAN/postinst会自动完成两项关键配置并重启 PostgreSQLln -sf /etc/postgresml/postgresml.conf /etc/postgresql/${PGVERSION}/main/conf.d/01-postgresml.conf sudo service postgresql restart被软链进 PostgreSQL 配置目录的 packages/postgresml/etc/postgresml/postgresml.conf 内容如下这就是扩展能正常运行的核心配置shared_preload_libraries pgml,pg_stat_statements pgml.venv /var/lib/postgresml-python/pgml-venvshared_preload_libraries要求 PostgreSQL 在共享内存中预加载pgml以及用于监控的pg_stat_statements这是扩展必须被加载进预加载库的原因pgml.venv指向postgresml-python包安装的虚拟环境路径扩展的 Python 运行时HuggingFace 模型、Scikit-learn 算法等都从这个 venv 加载。如果你的场景不需要扩展附带的 Python 依赖、想自行管理 Python 环境也可以只安装扩展本体sudo apt install -y postgresql-pgml-14验证安装创建扩展安装完成后以 postgres 系统用户连接数据库并创建扩展sudo -u postgres psql在 psql 中执行postgres# CREATE EXTENSION pgml; INFO: Python version: 3.10.6 (main, Nov 2 2022, 18:53:38) [GCC 11.3.0] INFO: Scikit-learn 1.1.3, XGBoost 1.7.1, LightGBM 3.3.3, NumPy 1.23.5 CREATE EXTENSION创建成功时返回的CREATE EXTENSION信息表明扩展已注册进当前数据库。日志中的两行INFO会汇报 PostgreSQL 进程内 Python 解释器版本以及已就绪的机器学习库版本——这说明 Python runtime 与各算法库已全部加载成功。从扩展的控制文件pgml-extension/pgml.control可以看到它的元信息trusted true普通用户也可创建、schema pgml对象统一放在pgmlschema 下、superuser true仅超级用户可安装。这也解释了为什么官方文档要求用postgres超级用户执行CREATE EXTENSION。GPU 支持为 LLM 与梯度提升库启用 CUDA如果你手头有 NVIDIA GPU希望用它加速 LLM 推理或 XGBoost/LightGBM/Catboost 的训练与预测就需要安装 CUDA 与匹配的显卡驱动。安装 CUDANVIDIA 官方提供了可直接加入系统的 APT 源先下载并安装 keyring 包curl -LsSf \ https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb \ -o /tmp/cuda-keyring.deb sudo dpkg -i /tmp/cuda-keyring.deb sudo apt update sudo apt install -y cuda注意 URL 中的ubuntu2204与x86_64要和你的系统版本、架构匹配。验证 GPU 是否就绪装完后用nvidia-smi检查显卡、驱动与 CUDA 是否协同工作$ nvidia-smi Fri Oct 6 09:38:19 2023 --------------------------------------------------------------------------------------- | NVIDIA-SMI 535.54.04 Driver Version: 536.23 CUDA Version: 12.2 | |------------------------------------------------------------------------------------- | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 NVIDIA GeForce RTX 3070 Ti On | 00000000:08:00.0 On | N/A | | 0% 41C P8 28W / 290W | 1268MiB / 8192MiB | 5% Default | | | | N/A | ---------------------------------------------------------------------------------------上方的Driver Version与CUDA Version是两套体系必须彼此兼容。官方还给出一个常见提醒首次安装 CUDA 时经常需要重启系统后驱动与 CUDA 才能同时被正确检测到因此nvidia-smi一时显示异常不必惊慌先重启再验证。作为参考仓库的 Docker 构建文件docker/Dockerfile展示了团队自己使用的 GPU 基线组合基于nvidia/cuda:12.6.3-devel-ubuntu24.04镜像并安装了postgresml-python、postgresml-17与postgresml-dashboard——可以看到 CUDA devel 基础镜像 APT 安装扩展正是官方认可的 GPU 部署路径之一。pgvector面向 CPU 指令集优化的向量扩展pgvector 是 PostgresML 存储与检索 embedding 时使用的向量扩展官方很喜欢也经常使用它。它的一个关键特性是针对机器的 CPU 架构做了优化如利用 AVX-512 等向量化指令加速因此最佳实践是直接在最终使用它的那台机器上从源码编译而不是复用别处编译好的二进制。安装编译依赖pgvector 的依赖极少只需标准构建链与 PostgreSQL 开发头文件sudo apt install -y \ build-essential \ postgresql-server-dev-14同样postgresql-server-dev-14中的14要替换为你实际的 PostgreSQL 版本。从源码编译安装git clone https://github.com/pgvector/pgvector /tmp/pgvector git -C /tmp/pgvector checkout v0.5.0 echo trusted true /tmp/pgvector/vector.control make -C /tmp/pgvector sudo make install -C /tmp/pgvector注意其中的echo trusted true vector.control追加trusted true会让vector扩展成为可信扩展普通非超级用户也能在自己的数据库中CREATE EXTENSION vector不必每次都找管理员。这一流程同样体现在仓库的 Dockerfiledocker/Dockerfile与本地开发入口docker/entrypoint.sh中——entrypoint 在启动时会直接执行CREATE EXTENSION vector说明在标准部署中pgml与vector两个扩展是配套使用的最小集合。在目标数据库中启用编译安装完成后在任何你想要使用向量能力的数据库中创建扩展postgresml# CREATE EXTENSION vector; CREATE EXTENSION成功返回CREATE EXTENSION后vector类型、-距离运算符等就绪你便可以在 PostgreSQL 中存储 embedding 并做向量检索了。从安装到运行一条完整的自托管路径把上面的步骤串起来一台可运行的 PostgresML 自托管节点通常包含四件事PostgreSQL 主库安装postgresql-14并承载扩展postgresql-pgml-14postgresml-python或元包postgresml-14提供机器学习能力shared_preload_libraries预加载pgmlpgml.venv指向 Python 虚拟环境CUDA 驱动可选当需要 GPU 加速 LLM、XGBoost/LightGBM/Catboost 时安装并用nvidia-smi验证兼容性pgvector推荐从源码编译到目标机器作为 embedding 存储与检索的基础。如果你的节点还要承担只读扩展或连接负载均衡再按本文开头的架构图追加副本与连接池即可。对于希望快速体验而非完整自托管的场景也可以直接参考仓库中 Docker 化的部署方式docker/entrypoint.sh它以极少的步骤完成 PostgreSQL 启动、角色创建、vector与pgml扩展初始化并顺带拉起管理面板是理解扩展如何被装进数据库的最短路径。赞分享后端人工智能机器学习RAG向量数据库【免费下载链接】postgresmlPostgres with GPUs for ML/AI apps.项目地址https://gitcode.com/gh_mirrors/po/postgresml点击查看免费下载相关推荐10倍提速FAISS GPU加速实战指南从安装到性能调优全攻略10倍提速FAISS GPU加速实战指南从安装到性能调优全攻略 你还在为高维向量检索速度慢而烦恼吗当处理百万甚至十亿级向量时CPU往往力不从心而GPU机器学习搜索引擎向量数据库Mem0 自托管服务器实战指南FastAPI pgvector Dashboard 的本地部署、安全加固与 Postgres 镜像迁移Mem0 自托管服务器实战指南FastAPI pgvector Dashboard 的本地部署、安全加固与 Postgres 镜像迁移 Mem0原人工智能AI AgentAgent 记忆RAG30倍加速FlagEmbedding Faiss GPU实战指南从安装到多卡部署30倍加速FlagEmbedding Faiss GPU实战指南从安装到多卡部署 你是否还在为百万级向量检索速度慢而困扰当CPU索引需要10秒返回结果人工智能RAG大模型NLP模型评测上一篇语雀文档离线备份与静态化解决方案高效实现企业知识库本地化下一篇SerpentAI高级技巧如何结合多种AI算法提升游戏表现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表