TorchGWAS : GPU-accelerated GWAS for thousands of quantitative phenotypes
TorchGWAS 以單張 A100 在 10 分鐘完成 2,048 個基因表現型 GWAS,吞吐量較 64 核 CPU 工具提升 300–1700 倍。
- A100 在 10 分鐘跑完 2,048 個表現型,20 分鐘達 20,480 個,對照 CPU 每個需 100 秒
- 與 fastGWA 相比吞吐量提升 300–1700 倍,批次越大 GPU 並行效率越高邊際成本越低
- 支援 NumPy、PLINK、BGEN 三種格式,協變量調整內建,開源 Python 工具鏈直接可用
同一批 23,000 人的基因資料、8.9M 個基因標記,fastGWA 用 64 核 CPU 算一個表現型要花約 100 秒;TorchGWAS 用單張 NVIDIA A100 在 10 分鐘內跑完 2,048 個表現型——吞吐量提升 300 到 1700 倍。這個差距不是微幅優化,而是從根本上改變了影像基因體學大規模篩查的可行性門檻。
影像表徵學習催生的 GWAS 新瓶頸:表現型從一個變成幾萬個
全基因組關聯研究(GWAS,Genome-Wide Association Study,掃描全基因組 SNP 與特徵之間統計關聯的分析)長期以個別特徵(表現型,phenotype)為單位逐一計算,這在研究血壓、身高等單一測量時是合理的。
問題出現在現代生物資訊工作流。當影像資料或表徵學習(representation learning)模型處理一個隊列後,單個樣本可以產出數千乃至數萬個量化特徵——器官體積、組織質地、結構連接度、影像嵌入維度等,這些全都是候選表現型。若要對每一個表現型都跑完整的 GWAS,以傳統工具的速度,一個隊列的分析可能耗費數天乃至數週。
現有的 GWAS 工具在單一特徵上效率優異,卻沒有針對「相同基因型矩陣、大量不同表現型」的批次化場景做優化。基因型矩陣每次都需要重新載入與初始化,這個固定成本在表現型數量暴增時就成了無法被攤薄的瓶頸。TorchGWAS 的設計出發點正是:既然基因型資料在整個篩查流程中是重複使用的,為何不把矩陣一次載入 GPU,同時對數千個表現型並行做線性迴歸?
單張 A100 批次計算 2,048 個表現型的架構設計
TorchGWAS 的加速邏輯可以用一個類比理解:傳統 GWAS 工具像是逐一掃描每張影像,TorchGWAS 則是把一整批影像同時送進 GPU 的平行計算陣列,一次讀完。
具體實作上,TorchGWAS 以 PyTorch(深度學習框架,提供 GPU 張量運算)為底層,利用 GPU 大規模平行矩陣運算的能力,將多個表現型的線性迴歸計算批次化執行。基因型矩陣(變異位點 × 樣本)只需載入一次,然後對所有表現型向量並行做最小二乘計算,大幅減少重複讀取與初始化的固定開銷。
工具支援三種主流基因型輸入格式:NumPy(Python 矩陣格式)、PLINK(基因研究界標準二進位格式)、BGEN(英國生物銀行常用格式),確保與現有資料管線的兼容性。協變量(covariate,用於統計控制的背景變數,如年齡、性別、族群主成分)的調整在工具內部完成,使用者只需提供對應表格,無需在外部預處理。命令列介面與 Python API 並行提供,附帶教學文件、基準測試腳本與範例工作流,以開源形式公開發布。
300 到 1700 倍吞吐量:A100 對 64 核 CPU 的基準測試數據
基準測試設定為 8.9M 標記 × 23,000 樣本,對照工具為 fastGWA(目前基因研究界廣泛使用的線性混合模型 GWAS 工具),硬體為 AMD EPYC 7763 64 核 CPU。fastGWA 每個表現型平均耗時約 100 秒。
TorchGWAS 在單張 NVIDIA A100 GPU 上,10 分鐘內完成 2,048 個表現型的全基因組關聯分析;擴展到 20 分鐘時,處理量達到 20,480 個表現型。吞吐量提升幅度在 300 倍到 1700 倍之間,倍數區間的變化反映了批次大小對 GPU 利用率的影響——批次越大,矩陣運算的並行效率越高,每個表現型的邊際成本越低。
值得注意的是,fastGWA 屬於線性混合模型工具,對族群結構有更完整的統計處理,與 TorchGWAS 目前提供的線性迴歸模式在方法論上並非完全等價。但對需要快速篩查大量表現型、找出值得深入分析候選特徵的場景,線性迴歸通常已足夠作為第一道高通量過濾,再由後續分析做更精密的統計建模。
| 項目 | fastGWA(64核 CPU) | TorchGWAS(A100 GPU) |
|---|---|---|
| 每個表現型平均耗時 | ~100 秒 | ~0.29 秒 |
| 10 分鐘可處理表現型數 | ~6 個 | 2,048 個 |
| 20 分鐘可處理表現型數 | ~12 個 | 20,480 個 |
| 吞吐量提升倍數 | 基準(1×) | 300–1700 倍 |
影像基因體學規模化的開源工具定位
TorchGWAS 的定位不是取代現有 GWAS 工具,而是補上「表現型豐富場景」這個現有工具沒有針對優化的缺口。
對影像基因體學(imaging genomics)研究者而言,這個工具降低的不只是計算時間,更是研究設計的格局限制:以往因算力限制只能事先挑選少數表現型跑 GWAS 的研究,現在可以把整個影像特徵空間帶進去做探索性關聯分析,從「事先選定特徵」轉向「全面掃描特徵空間」。
目前公開版本提供穩定的線性 GWAS 與多變量表現型篩查功能,原始碼、文件與教學已公開,支援 Python 和命令列工作流直接接入現有基因體學管線。
同樣的 8.9M 標記,單張 A100 在 20 分鐘跑完 20,480 個表現型,批次化是影像基因體學突破算力瓶頸的關鍵路徑。