戰(zhàn))
后端人工智能機(jī)器學(xué)習(xí)RAG向量數(shù)據(jù)庫【免費(fèi)下載鏈接】postgresmlPostgres with GPUs for ML/AI apps.項(xiàng)目地址https://gitcode.com/gh_mirrors/po/postgresml點(diǎn)擊查看免費(fèi)下載PostgresML 本質(zhì)上是 PostgreSQL 的一個擴(kuò)展因此自托管 PostgresML 與自托管一臺 PostgreSQL 數(shù)據(jù)庫服務(wù)器并無本質(zhì)區(qū)別你依然擁有主庫、副本與連接池的經(jīng)典拓?fù)渲皇菙?shù)據(jù)庫內(nèi)多出了一整套面向機(jī)器學(xué)習(xí)的 SQL 能力。本文將以 Ubuntu 22.04 為基線帶你走完從添加 APT 源、安裝擴(kuò)展、驗(yàn)證CREATE EXTENSION pgml到為 LLM 與 XGBoost/LightGBM/Catboost 配置 CUDA 與 GPU 驅(qū)動再到編譯安裝 pgvector 的完整自托管流程并基于倉庫內(nèi)真實(shí)打包與配置實(shí)現(xiàn)說明每個安裝步驟背后的包結(jié)構(gòu)與運(yùn)行機(jī)制。自托管架構(gòu)它就是一臺 PostgreSQL只是更聰明PostgresML 不會改變你熟悉的 PostgreSQL 運(yùn)維模型。官方自托管指南給出的典型架構(gòu)是三層主庫Primary承擔(dān)所有讀寫流量也是所有機(jī)器學(xué)習(xí)訓(xùn)練、模型存儲與在線預(yù)測的執(zhí)行者可選副本Replicas用于橫向擴(kuò)展讀能力把只讀查詢與預(yù)測壓力從主庫上分流連接池Pooler在應(yīng)用與數(shù)據(jù)庫之間做連接負(fù)載均衡避免大量短連接拖垮主庫。也就是說你并不需要為機(jī)器學(xué)習(xí)額外搭建一套獨(dú)立服務(wù)模型訓(xùn)練與預(yù)測都作為 SQL 函數(shù)直接運(yùn)行在數(shù)據(jù)庫進(jìn)程內(nèi)。這一點(diǎn)從倉庫的包結(jié)構(gòu)上也能得到印證真正的功能載體是postgresql-pgml這個 PostgreSQL 擴(kuò)展包其 Debian 控制文件packages/postgresql-pgml/DEBIAN/control將擴(kuò)展描述為用 Rust 基于 tcdi/pgrx 編寫并用 Python 與 PlPython 補(bǔ)充實(shí)現(xiàn)的數(shù)據(jù)庫內(nèi)機(jī)器學(xué)習(xí)引擎它可以直接對表或視圖訓(xùn)練算法也可以僅用 SQL 對新的數(shù)據(jù)點(diǎn)做預(yù)測。操作系統(tǒng)選擇為什么是 Ubuntu 22.04PostgresML 團(tuán)隊(duì)偏好 Ubuntu理由是它擁有最廣泛的硬件架構(gòu)支持、軟件包生態(tài)與驅(qū)動程序覆蓋。官方指南的后續(xù)所有命令都假設(shè)你運(yùn)行在Ubuntu 22.04Jammy當(dāng)前 LTS 版本上但文檔也明確指出PostgresML 可以非常容易地在任何其他 Linux 發(fā)行版上運(yùn)行。如果查閱倉庫中的打包腳本packages/postgresml/release.sh可以看到當(dāng)前構(gòu)建體系覆蓋了多個 Ubuntu LTS 版本代碼名映射表包括Ubuntu 版本代碼名20.04focal22.04jammy24.04noble這意味著即使你的宿主機(jī)版本與 22.04 略有差異倉庫也提供了面向多個 LTS 的構(gòu)建路徑不過為了與本文及官方文檔的命令完全一致建議在 22.04 上操作。通過 APT 安裝 PostgresML無需編譯源碼自托管 PostgresML 最省力的方式是從官方 APT 倉庫直接安裝無需額外安裝依賴、更無需從源碼編譯。整個過程只有三步。第一步添加 APT 源將官方倉庫寫入系統(tǒng)源列表echo deb [trustedyes] https://apt.postgresml.org jammy main | \ sudo tee -a /etc/apt/sources.list注意源聲明中的[trustedyes]PostgresML 團(tuán)隊(duì)沒有對 Debian 包做 GPG 簽名而是依賴 HTTPS 來保證二進(jìn)制的真實(shí)性與完整性。第二步更新軟件源sudo apt update第三步安裝主包sudo apt install -y postgresml-14關(guān)于包名中的14Ubuntu 22.04 自帶 PostgreSQL 14。如果你系統(tǒng)里安裝的是其他 PostgreSQL 主版本只需把包名中的14換成對應(yīng)版本號。官方指南聲明支持社區(qū)維護(hù)的所有版本即Postgres 12 到 15。而從當(dāng)前倉庫的打包腳本packages/postgresml/release.sh 中的for pg in {11..17}循環(huán)可以看到構(gòu)建體系已進(jìn)一步擴(kuò)展到 PostgreSQL 11 至 17你可以按自己系統(tǒng)實(shí)際安裝的版本選擇。一個安裝命令背后元包與依賴鏈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 擴(kuò)展本體。其控制文件packages/postgresql-pgml/DEBIAN/control顯示它還依賴libopenblas-devBLAS 線性代數(shù)庫與postgresql-server-dev-${PGVERSION}等編譯期/運(yùn)行期組件。文檔packages/README.md特別說明該擴(kuò)展之所以獨(dú)立分發(fā)是因?yàn)樗鼉?nèi)含大量不依賴 Python的算法即 Rust runtime且部分系統(tǒng)習(xí)慣在虛擬環(huán)境之外管理 Python 依賴官方不希望強(qiáng)制綁定。postgresml-python預(yù)構(gòu)建的 Python 虛擬環(huán)境包含 HuggingFace、PyTorch、Scikit-learn、XGBoost 等全部 Python 側(cè)依賴。其控制文件packages/postgresml-python/DEBIAN/control描述它為安裝使用 PostgresML 所必需的 Python 依賴。它體積龐大因此獨(dú)立分發(fā)——擴(kuò)展的更新頻率遠(yuǎn)高于 Python 依賴。裝完包后postinst腳本packages/postgresml/DEBIAN/postinst會自動完成兩項(xiàng)關(guān)鍵配置并重啟 PostgreSQLln -sf /etc/postgresml/postgresml.conf /etc/postgresql/${PGVERSION}/main/conf.d/01-postgresml.conf sudo service postgresql restart被軟鏈進(jìn) PostgreSQL 配置目錄的 packages/postgresml/etc/postgresml/postgresml.conf 內(nèi)容如下這就是擴(kuò)展能正常運(yùn)行的核心配置shared_preload_libraries pgml,pg_stat_statements pgml.venv /var/lib/postgresml-python/pgml-venvshared_preload_libraries要求 PostgreSQL 在共享內(nèi)存中預(yù)加載pgml以及用于監(jiān)控的pg_stat_statements這是擴(kuò)展必須被加載進(jìn)預(yù)加載庫的原因pgml.venv指向postgresml-python包安裝的虛擬環(huán)境路徑擴(kuò)展的 Python 運(yùn)行時HuggingFace 模型、Scikit-learn 算法等都從這個 venv 加載。如果你的場景不需要擴(kuò)展附帶的 Python 依賴、想自行管理 Python 環(huán)境也可以只安裝擴(kuò)展本體sudo apt install -y postgresql-pgml-14驗(yàn)證安裝創(chuàng)建擴(kuò)展安裝完成后以 postgres 系統(tǒng)用戶連接數(shù)據(jù)庫并創(chuàng)建擴(kuò)展sudo -u postgres psql在 psql 中執(zhí)行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創(chuàng)建成功時返回的CREATE EXTENSION信息表明擴(kuò)展已注冊進(jìn)當(dāng)前數(shù)據(jù)庫。日志中的兩行INFO會匯報 PostgreSQL 進(jìn)程內(nèi) Python 解釋器版本以及已就緒的機(jī)器學(xué)習(xí)庫版本——這說明 Python runtime 與各算法庫已全部加載成功。從擴(kuò)展的控制文件pgml-extension/pgml.control可以看到它的元信息trusted true普通用戶也可創(chuàng)建、schema pgml對象統(tǒng)一放在pgmlschema 下、superuser true僅超級用戶可安裝。這也解釋了為什么官方文檔要求用postgres超級用戶執(zhí)行CREATE EXTENSION。GPU 支持為 LLM 與梯度提升庫啟用 CUDA如果你手頭有 NVIDIA GPU希望用它加速 LLM 推理或 XGBoost/LightGBM/Catboost 的訓(xùn)練與預(yù)測就需要安裝 CUDA 與匹配的顯卡驅(qū)動。安裝 CUDANVIDIA 官方提供了可直接加入系統(tǒng)的 APT 源先下載并安裝 keyring 包c(diǎn)url -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要和你的系統(tǒng)版本、架構(gòu)匹配。驗(yàn)證 GPU 是否就緒裝完后用nvidia-smi檢查顯卡、驅(qū)動與 CUDA 是否協(xié)同工作$ 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 時經(jīng)常需要重啟系統(tǒng)后驅(qū)動與 CUDA 才能同時被正確檢測到因此nvidia-smi一時顯示異常不必驚慌先重啟再驗(yàn)證。作為參考倉庫的 Docker 構(gòu)建文件docker/Dockerfile展示了團(tuán)隊(duì)自己使用的 GPU 基線組合基于nvidia/cuda:12.6.3-devel-ubuntu24.04鏡像并安裝了postgresml-python、postgresml-17與postgresml-dashboard——可以看到 CUDA devel 基礎(chǔ)鏡像 APT 安裝擴(kuò)展正是官方認(rèn)可的 GPU 部署路徑之一。pgvector面向 CPU 指令集優(yōu)化的向量擴(kuò)展pgvector 是 PostgresML 存儲與檢索 embedding 時使用的向量擴(kuò)展官方很喜歡也經(jīng)常使用它。它的一個關(guān)鍵特性是針對機(jī)器的 CPU 架構(gòu)做了優(yōu)化如利用 AVX-512 等向量化指令加速因此最佳實(shí)踐是直接在最終使用它的那臺機(jī)器上從源碼編譯而不是復(fù)用別處編譯好的二進(jìn)制。安裝編譯依賴pgvector 的依賴極少只需標(biāo)準(zhǔn)構(gòu)建鏈與 PostgreSQL 開發(fā)頭文件sudo apt install -y \ build-essential \ postgresql-server-dev-14同樣postgresql-server-dev-14中的14要替換為你實(shí)際的 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擴(kuò)展成為可信擴(kuò)展普通非超級用戶也能在自己的數(shù)據(jù)庫中CREATE EXTENSION vector不必每次都找管理員。這一流程同樣體現(xiàn)在倉庫的 Dockerfiledocker/Dockerfile與本地開發(fā)入口docker/entrypoint.sh中——entrypoint 在啟動時會直接執(zhí)行CREATE EXTENSION vector說明在標(biāo)準(zhǔn)部署中pgml與vector兩個擴(kuò)展是配套使用的最小集合。在目標(biāo)數(shù)據(jù)庫中啟用編譯安裝完成后在任何你想要使用向量能力的數(shù)據(jù)庫中創(chuàng)建擴(kuò)展postgresml# CREATE EXTENSION vector; CREATE EXTENSION成功返回CREATE EXTENSION后vector類型、-距離運(yùn)算符等就緒你便可以在 PostgreSQL 中存儲 embedding 并做向量檢索了。從安裝到運(yùn)行一條完整的自托管路徑把上面的步驟串起來一臺可運(yùn)行的 PostgresML 自托管節(jié)點(diǎn)通常包含四件事PostgreSQL 主庫安裝postgresql-14并承載擴(kuò)展postgresql-pgml-14postgresml-python或元包postgresml-14提供機(jī)器學(xué)習(xí)能力shared_preload_libraries預(yù)加載pgmlpgml.venv指向 Python 虛擬環(huán)境CUDA 驅(qū)動可選當(dāng)需要 GPU 加速 LLM、XGBoost/LightGBM/Catboost 時安裝并用nvidia-smi驗(yàn)證兼容性pgvector推薦從源碼編譯到目標(biāo)機(jī)器作為 embedding 存儲與檢索的基礎(chǔ)。如果你的節(jié)點(diǎn)還要承擔(dān)只讀擴(kuò)展或連接負(fù)載均衡再按本文開頭的架構(gòu)圖追加副本與連接池即可。對于希望快速體驗(yàn)而非完整自托管的場景也可以直接參考倉庫中 Docker 化的部署方式docker/entrypoint.sh它以極少的步驟完成 PostgreSQL 啟動、角色創(chuàng)建、vector與pgml擴(kuò)展初始化并順帶拉起管理面板是理解擴(kuò)展如何被裝進(jìn)數(shù)據(jù)庫的最短路徑。贊分享后端人工智能機(jī)器學(xué)習(xí)RAG向量數(shù)據(jù)庫【免費(fèi)下載鏈接】postgresmlPostgres with GPUs for ML/AI apps.項(xiàng)目地址https://gitcode.com/gh_mirrors/po/postgresml點(diǎn)擊查看免費(fèi)下載相關(guān)推薦10倍提速FAISS GPU加速實(shí)戰(zhàn)指南從安裝到性能調(diào)優(yōu)全攻略10倍提速FAISS GPU加速實(shí)戰(zhàn)指南從安裝到性能調(diào)優(yōu)全攻略 你還在為高維向量檢索速度慢而煩惱嗎當(dāng)處理百萬甚至十億級向量時CPU往往力不從心而GPU機(jī)器學(xué)習(xí)搜索引擎向量數(shù)據(jù)庫Mem0 自托管服務(wù)器實(shí)戰(zhàn)指南FastAPI pgvector Dashboard 的本地部署、安全加固與 Postgres 鏡像遷移Mem0 自托管服務(wù)器實(shí)戰(zhàn)指南FastAPI pgvector Dashboard 的本地部署、安全加固與 Postgres 鏡像遷移 Mem0原人工智能AI AgentAgent 記憶RAG30倍加速FlagEmbedding Faiss GPU實(shí)戰(zhàn)指南從安裝到多卡部署30倍加速FlagEmbedding Faiss GPU實(shí)戰(zhàn)指南從安裝到多卡部署 你是否還在為百萬級向量檢索速度慢而困擾當(dāng)CPU索引需要10秒返回結(jié)果人工智能RAG大模型NLP模型評測上一篇語雀文檔離線備份與靜態(tài)化解決方案高效實(shí)現(xiàn)企業(yè)知識庫本地化下一篇SerpentAI高級技巧如何結(jié)合多種AI算法提升游戲表現(xiàn)創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考