單細(xì)胞測(cè)序已成為生物醫(yī)學(xué)研究中最突出的技術(shù)之一。它在細(xì)胞水平上破譯轉(zhuǎn)錄組和表觀基因組變化的能力使研究人員獲得了有價(jià)值的新見解。因此,單細(xì)胞實(shí)驗(yàn)的規(guī)模和復(fù)雜性增加了 100 多倍,涉及 100 多萬(wàn)個(gè)細(xì)胞的實(shí)驗(yàn)越來(lái)越普遍。
但是,必須在高度迭代的過(guò)程中對(duì)結(jié)果數(shù)據(jù)進(jìn)行分析。至關(guān)重要的是,快速算法用于這些迭代步驟,以實(shí)現(xiàn)快速周轉(zhuǎn)時(shí)間。
為了使用 Python 進(jìn)行更一致的單細(xì)胞分析,scverse致力于構(gòu)建一個(gè)完整的生態(tài)系統(tǒng),以幫助研究人員進(jìn)行分析。該生態(tài)系統(tǒng)的核心是一種數(shù)據(jù)結(jié)構(gòu),它可以在整個(gè)數(shù)據(jù)處理管道中維護(hù)各種轉(zhuǎn)換的注釋,從而實(shí)現(xiàn)單細(xì)胞分析。
AnnData 是一個(gè) Python 包,用于處理內(nèi)存和磁盤上的注釋數(shù)據(jù)矩陣,是 Scanpy 庫(kù),是 scverse 生態(tài)系統(tǒng)中的主要單細(xì)胞分析套件。Scanpy 構(gòu)建在 PyData 生態(tài)系統(tǒng)中常見的其他庫(kù)之上,如 NumPy 、 SciPy 、 Numba 和 Scikit-learn,用于幾乎所有典型的分析步驟。
然而, Scanpy 算法大多是基于 CPU 的,并且在較大的實(shí)驗(yàn)中速度顯著減慢。單細(xì)胞分析過(guò)程的高度迭代性質(zhì)只會(huì)加劇這個(gè)問題。
GPU 用于單細(xì)胞分析
RAPIDS 可用于 GPU 進(jìn)行下游單細(xì)胞 RNA 測(cè)序(scRNA-seq)分析的一般可行性,這一可行性已在 《使用 GPU 加速單細(xì)胞基因組分析》 中得到證實(shí)。此外,該工作還產(chǎn)生了 rapids-single-cell-examples GitHub repo,其中包含一系列由 RAPIDS 和 NVIDIA Parabricks 構(gòu)建的示例。RAPIDS 是一個(gè) GPU 的開源庫(kù)套件,用于 Python 的加速數(shù)據(jù)科學(xué),而 Parabricks 是一套免費(fèi)的 GPU 加速的、基于深度學(xué)習(xí)的行業(yè)標(biāo)準(zhǔn)基因組分析。
雖然這些示例筆記本在 GPU 上展示了一些典型的單細(xì)胞 RNA 工作流程,但它們從未用于日常使用,也從未被用作像 Scanpy 這樣的庫(kù)的 GPU – 加速替代品。
從以前的工作中汲取靈感,一個(gè)新興的圖書館叫 rapids-singlecell,是一種用于 scRNA 分析的 GPU 加速工具。該工具旨在成為與 scverse 生態(tài)系統(tǒng)兼容的每日可驅(qū)動(dòng)單細(xì)胞分析套件,它使用 RAPIDS 和 CuPy 以提供 GPU 加速的函數(shù),這些函數(shù)幾乎是 Scanpy 中相應(yīng)函數(shù)的替代品。更多信息可以參考 rapids-single-cell-examples。
一般來(lái)說(shuō),用戶可以期望通過(guò)使用 RAPIDS,將性能提高 10 到 20 倍。想要了解更多信息,請(qǐng)?jiān)L問 使用 RAPIDS 加速單細(xì)胞基因組分析。
使用 RAPIDS 進(jìn)行更快的單細(xì)胞分析
RAPIDS-singlecell 遵循與 scverse Python 庫(kù)類似的可用性模型。它也是用 Python 編寫的,但將許多性能關(guān)鍵部分放在 GPU 上,隱藏了通常與編寫 CUDA 應(yīng)用程序(通常用于為 NVIDIA GPU 編寫加速算法的語(yǔ)言)相關(guān)的所有復(fù)雜性。
RAPIDS-singlecell 由五類組成,將在以下章節(jié)中進(jìn)行描述。每個(gè)類別都加速了典型的單細(xì)胞分析工作流的不同部分。
想了解更多信息,包括 RAPIDS-singlecell 提供的各種 API,請(qǐng)?jiān)L問 rapids-singlecell 文檔。
cunData
AnData ,或注釋數(shù)據(jù)對(duì)象,是一種廣泛使用的數(shù)據(jù)結(jié)構(gòu),用于處理單細(xì)胞 RNA 測(cè)序數(shù)據(jù)。相反, cunData 是 GPU 的 AnData 對(duì)象的最小化和輕量級(jí)版本,它取代了用于預(yù)處理的 scverse 標(biāo)準(zhǔn)(圖 1 )。 cunData 不是將計(jì)數(shù)矩陣. X 存儲(chǔ)在 CPU 上,而是將其作為 CuPy 稀疏矩陣存儲(chǔ)在 GPU 上。這使得對(duì)計(jì)數(shù)矩陣執(zhí)行計(jì)算更快、更高效。它還包含細(xì)胞(. obs 屬性)和基因(. var 屬性)的注釋數(shù)據(jù)幀,用于存儲(chǔ)細(xì)胞類型和基因名稱等附加信息。
圖 1 。 cunData 類結(jié)構(gòu)示意圖
cunData 還包括其他功能,例如能夠?qū)⒉煌姹镜挠?jì)數(shù)矩陣(如原始整數(shù)計(jì)數(shù))存儲(chǔ)在. Layers 中。與將. Layers 存儲(chǔ)在主機(jī)( CPU )內(nèi)存中的 AnData 不同, cunData 還在 GPU 上存儲(chǔ). Layers ,從而減少了將數(shù)據(jù)從主機(jī)復(fù)制到 GPU 內(nèi)存的需要,并實(shí)現(xiàn)了加速計(jì)算。
cunData 支持. uns 屬性中的非結(jié)構(gòu)化注釋,以及. obsm 和. vrm 屬性中的細(xì)胞和基因的多維注釋,這些注釋存儲(chǔ)在主機(jī)內(nèi)存中。這些注釋使用戶能夠包括關(guān)于其數(shù)據(jù)的附加信息,例如空間坐標(biāo)或主成分分析( PCA )嵌入。
類似地, cunData 支持像 AnnData 一樣的切片。但是,與視圖相反,這些切片始終是原始數(shù)據(jù)的完整副本??傮w而言,與更具特征豐富的 CPU 結(jié)合的 AnnData 對(duì)象相比, cunData 能夠更快地預(yù)處理 scRNA-seq 數(shù)據(jù)。
下面的 Python 片段演示了 AnnData 對(duì)象(用于處理單細(xì)胞 RNA 測(cè)序數(shù)據(jù)的標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu))到 cunData 對(duì)象的轉(zhuǎn)換。
import scanpy as sc import rapids_singlecell as rsc adata = sc.read("PATH TO DATASET") cudata = rsc.cunnData.cunnData(adata=adata)
預(yù)處理
預(yù)處理函數(shù)存儲(chǔ)在cunnData_funcs,為 Scanpy 預(yù)處理功能提供了加速的替代方案。這些函數(shù)在cunData對(duì)象,并使用 RAPIDS cuML 和 CuPy 來(lái)顯著加速基于 Scikit-learn 、 NumPy 和 SciPy 的 Scanpy 函數(shù)。
過(guò)濾細(xì)胞和基因可以用filter_cells和filter_genes功能。質(zhì)量控制由calculate_qc_metrics作用
# Basic QC rapids-singlecell rsc.pp.flag_gene_family(cudata,gene_family_name="MT", gene_family_prefix="mt-") rsc.pp.calculate_qc_metrics(cudata,qc_vars=["MT"]) cudata = cudata[cudata.obs["n_genes_by_counts"] > 500] cudata = cudata[cudata.obs["pct_counts_MT"] < 20] rsc.pp.filter_genes(cudata,min_count=3)
為了規(guī)范化您的數(shù)據(jù), cunData _ funcs 提供了 GPU 替代normalize_total, log1p,以及最近推出的normalize_pearson_residualsScanpy 的函數(shù)。注釋highly variable genes對(duì)于 Scanpy 支持的所有口味(包括seurat,cellranger,seurat_v3,pearson_residuals)以及poisson_gene_selection,它改編自 scvi 工具。
# log normalization and highly variable gene selection cudata.layers["counts"] = cudata.X.copy() rsc.pp.normalize_total(cudata,target_sum=1e4) rsc.pp.log1p(cudata) rsc.pp.highly_variable_genes(cudata,n_top_genes=5000,flavor="seurat_v3",layer = "counts") cudata = cudata[:,cudata.var["highly_variable"]==True]
這個(gè)regress_out用 cuML 線性回歸估計(jì)器加速了用于去除不必要的變異源的函數(shù)。它還支持多目標(biāo)回歸,這是在版本 22 . 12 的 cuML 中引入的,同時(shí)與以前的版本保持向后兼容。
cuML 包裝的主成分分析(PCA)、截?cái)嗥娈愔捣纸猓═runcated SVD)和增量主成分分析(Incremental PCA)為您提供與 Scanpy 提供的 PCA 函數(shù) 相同的選項(xiàng)。在 cunnData_funcs 中的 PCA 版本中,您可以選擇要用于分析的圖層,這是 Scanpy 目前不支持的附加功能。
# Regression, scaling and PCA rsc.pp.regress_out(cudata,keys=["total_counts", "pct_counts_MT"]) rsc.pp.scale(cudata,max_value=10) rsc.pp.pca(cudata, n_comps = 100) sc.pl.pca_variance_ratio(cudata, log=True,n_pcs=100)
cunndata_funcs可以將預(yù)處理加速 10 到 20 倍(表 1-3 )。經(jīng)過(guò)預(yù)處理后, cunData 對(duì)象被轉(zhuǎn)換為 AnnData 對(duì)象。
adata_preprocessed = cudata.to_AnnData()
工具
scanpy_gpu提供了在 AnData 對(duì)象上工作的函數(shù),目的是提供加速的函數(shù)。在 Scanpy 和 RAPIDS -singlecell 之間保持盡可能接近的語(yǔ)法,元數(shù)據(jù)也被寫入.uns屬性該屬性對(duì)于存儲(chǔ)經(jīng)過(guò)訓(xùn)練的參數(shù)(例如在 PCA 計(jì)算期間計(jì)算的方差比)非常有用。scanpy_gpu為 AnnData 對(duì)象提供了一個(gè) PCA 函數(shù),相當(dāng)于cunnData_funcs.
Scanpy 已經(jīng)支持使用 cuML 計(jì)算 GPU 上的 UMAP 和最近鄰居。scanpy_gpu通過(guò)添加更多算法,如基于加速圖的算法,擴(kuò)展了對(duì) Scanpy GPU 的支持clustering使用Leiden和Louvain來(lái)自 cuGraph ,以及Force Atlas 2用于直觀地布置圖形數(shù)據(jù)的算法。scanpy_gpu也使用PCA和kernel density estimation( KDE )來(lái)自 cuML 和diffusion maps以類似于 Scanpy 使用 SciPy 和 NumPy 進(jìn)行科學(xué)計(jì)算的方式,使用 CuPy 庫(kù)進(jìn)行計(jì)算。
對(duì)于批量校正,scanpy_gpu提供的 GPU 端口Harmony Integration,可以調(diào)用harmony_gpu。PyMDE(最小失真嵌入),一種能夠嵌入單細(xì)胞數(shù)據(jù),同時(shí)以概率方式聯(lián)合學(xué)習(xí)圖和低維表示的函數(shù),也可以在scvi-tools中使用。
RAPIDS – 單細(xì)胞置換性質(zhì)的接近下降可以使用 Scanpy 進(jìn)行可視化,使用起來(lái)很直觀,Scanpy 用于繪圖可以直接在 scverse 框架內(nèi)進(jìn)行。
解耦器
這個(gè)decoupler工具使用統(tǒng)一的框架實(shí)現(xiàn)了幾種不同的統(tǒng)計(jì)方法,重點(diǎn)關(guān)注生物活動(dòng)(如細(xì)胞、分子和生理過(guò)程,例如基因集和轉(zhuǎn)錄因子活性)。decoupler_gpu重新實(shí)現(xiàn)并加速了加權(quán)和 (run_wsum) 以及多元線性模型 (run_mlm) 方法。RAPIDS 中的 GPU 端口-singlecell 使用與解耦器相同的網(wǎng)絡(luò)/模型。表 1 顯示 wsum 的性能提高了 37 倍。
Squidpy 開發(fā)
RAPIDS – 單細(xì)胞正在不斷擴(kuò)展,為 scverse 生態(tài)系統(tǒng)提供新的加速功能。庫(kù)中添加了全面的測(cè)試,以確保代碼的正確性和可靠性。 Squidpy 能夠?qū)臻g分子數(shù)據(jù)進(jìn)行詳細(xì)分析和可視化。它有助于理解復(fù)雜的細(xì)胞相互作用和空間模式,極大地促進(jìn)了 scverse 生態(tài)系統(tǒng)的擴(kuò)展。
RAPIDS 加速了一些功能,空間自相關(guān)與莫蘭的 I 和 Geary 的 C 承諾性能提升高達(dá) 100 倍。配體受體 (ligrec) 在 Squidpy 中的交互分析也得到了優(yōu)化和加速,性能提升超過(guò) 10 倍。
基準(zhǔn)
我們的基準(zhǔn)測(cè)試結(jié)果表明,將 GPU 加速與 RAPIDS – 單細(xì)胞包和解耦器功能一起使用,可以顯著提高 scRNA-seq 分析的性能。
例如,運(yùn)行示例 rapids-singlecell notebook,在具有兩個(gè) AMD Epyc Milan 7543500GB 內(nèi)存和一個(gè)NVIDIA A100 80GB GPU 的環(huán)境下,使用 RAPIDS-singlecell 包僅需 51 秒即可完成,而傳統(tǒng)的掃描 CPU 工作流程僅需 1106 秒。
類似地,解耦器功能也顯示出顯著的速度改進(jìn),與 CPU 上的 83 秒相比, GPU 上的 mlm 功能僅運(yùn)行了 12 秒wsum方法在 GPU 上只需 26 秒,而在 CPU 上只需要 16 分 10 秒。
總之,這些結(jié)果證明了 GPU 加速使 scRNA-seq 分析更快、更有效的潛力。表 1 總結(jié)了這些基準(zhǔn)結(jié)果。
作用 | CPU | GPU | 加速 |
整個(gè)筆記本電腦(不包括 PR 功能) | 1106 秒( 18 . 5 分鐘) | 51 秒 | 21 倍 |
預(yù)處理 | 74 秒 | 8 秒 | 9 倍 |
HVG (Seurat v3) | 27 秒 | 1 . 6 秒 | 16 倍 |
Regress out | 35 秒 | 0 . 7 秒 | 50 倍 |
scale | 3 . 2 秒 | 0 . 4 秒 | 8 倍 |
PCA | 417 秒 | 18 秒 | 23 倍 |
Neighbors | 22 秒 | 5 . 1 秒 | 4 . 3 倍 |
UMAP | 36 秒 | 0 . 4 秒 | 90 倍 |
TSNE | 133 秒 | 2 . 4 秒 | 55 倍 |
Louvain | 17 秒 | 0 . 6 秒 | 28 倍 |
Leiden | 14 秒 | 0 . 2 秒 | 70 倍 |
邏輯回歸 | 58 秒 | 3 . 7 秒 | 15 倍 |
繪圖( FA2 ) | 256 秒 | 0 . 3 秒 | 850 倍 |
run_mlm ( DoRothEA ) | 83 秒 | 12 秒 | 7 倍 |
Run_wsum (程序) | 970 秒( 16 分鐘) | 26 秒 | 37 倍 |
表 1 。 90000 個(gè)單元格數(shù)據(jù)集的服務(wù)器節(jié)點(diǎn)基準(zhǔn)測(cè)試
除了之前的基準(zhǔn)測(cè)試結(jié)果之外,運(yùn)行一個(gè)示例rapids-singlecell 筆記本,當(dāng)使用 RAPIDS-singlecell 時(shí),服務(wù)器節(jié)點(diǎn)上的 500K 個(gè) cell 大約只需要 2 分鐘。而在 CPU 上進(jìn)行同樣的分析則需要 41 分鐘。
此外,使用pearson_residuals對(duì)于高度可變的基因選擇和標(biāo)準(zhǔn)化,也可以使用 GPU 加速,從而在 scRNA-seq 分析中提供額外的速度改進(jìn)。這些基準(zhǔn)結(jié)果匯總在表 2 中。
RAPIDS-singlecell 不僅能夠在高端服務(wù)器節(jié)點(diǎn)上加速單小區(qū)數(shù)據(jù)分析,而且能夠在消費(fèi)級(jí)硬件上加速singlecell 數(shù)據(jù)分析。在 AMD 5950x CPU 、 64GB 內(nèi)存和 NVIDIA RTX 3090 GPU 的臺(tái)式機(jī)系統(tǒng)上,使用 RAPIDS-singlecell ,端到端運(yùn)行具有 50000 個(gè)電池的同一筆記本電腦大約需要 5 分鐘。盡管系統(tǒng)使用RAPIDS Memory Manager (RMM)和統(tǒng)一內(nèi)存來(lái)超額訂閱 GPU 內(nèi)存,但與 CPU 服務(wù)器相比,它的速度仍然顯著提高。這些基準(zhǔn)結(jié)果匯總在表 2 中。
作用 | CPU | GPU ( A100 ) | GPU ( 3090 ) | 加速 |
整個(gè)筆記本(不包括公關(guān)功能) | 2460 秒( 41 分鐘) | 110 秒 | 290 秒 | 22 倍 |
預(yù)處理 | 305 秒 | 28 秒 | 169 秒 | 10 倍 |
HVG (Seurat v3) | 48 秒 | 1 . 5 秒 | 13 秒 | 32 倍 |
Regress out | 104 秒 | 5 . 1 秒 | 16 秒 | 20 倍 |
scale | 8 . 4 秒 | 1 . 3 秒 | 5 秒 | 6 . 4 倍 |
PCA | 86 秒 | 3 . 7 秒 | 35 秒 | 23 倍 |
Neighbors | 74 秒 | 17 . 1 秒 | 18 . 3 秒 | 4 . 3 倍 |
UMAP | 281 秒( 4 . 6 分鐘) | 6 . 7 秒 | 7 . 6 秒 | 60 倍 |
TSNE | 786 秒( 13 分鐘) | 10 秒 | 12 . 9 秒 | 105 倍 |
Louvain | 283 秒( 4 . 5 分鐘) | 4 . 5 秒 | 5 . 7 秒 | 62 倍 |
Leiden | 282 秒( 4 . 5 分鐘) | 0 . 6 秒 | 0 . 9 秒 | 470 倍 |
邏輯回歸 | 452 秒( 7 . 5 分鐘) | 33 秒 | 63 秒 | 13 倍 |
擴(kuò)散貼圖 | 30 秒 | 0 . 75 秒 | 1 . 3 秒 | 40 倍 |
重型車輛(公共車輛) | 104 秒 | 2 . 1 秒 | 15 . 6 秒 | 50 倍 |
規(guī)格化( PR ) | 22 秒 | 0 . 3 秒 | 1 秒 | 73 倍 |
表 2 。 500000 個(gè)單元格數(shù)據(jù)集的服務(wù)器節(jié)點(diǎn)和消費(fèi)者系統(tǒng)基準(zhǔn)
當(dāng)使用 RAPIDS -singlecell 時(shí),在桌面系統(tǒng)上端到端運(yùn)行具有約 90K 個(gè)單元格的相同示例筆記本(表 1 )僅需 48 秒。相比之下,傳統(tǒng)的掃描 CPU 工作流程需要 774 秒。加速解耦器功能還顯示出在消費(fèi)級(jí)硬件上的顯著速度改進(jìn)。表 3 總結(jié)了這些基準(zhǔn)結(jié)果。
作用 | CPU | GPU | 加速 |
整個(gè)筆記本電腦(不包括解耦器功能) | 774 秒( 13 分鐘) | 48 秒 | 16 倍 |
預(yù)處理 | 114 秒 | 6 秒 | 19 倍 |
Regress out | 62 秒 | 1 . 6 秒 | 39 倍 |
主成分分析 | 42 秒 | 0 . 7 秒 | 60 倍 |
HVG (Seurat v3) | 2 . 7 秒 | 0 . 4 秒 | 6 . 7 倍 |
PCA | 175 秒 | 21 . 7 秒 | 8 倍 |
Neighbors | 14 . 9 秒 | 4 . 6 秒 | 3 . 2 倍 |
UMAP | 31 秒 | 0 . 3 秒 | 103 倍 |
TSNE | 95 秒 | 1 . 4 秒 | 68 倍 |
Louvain | 9 . 3 秒 | 0 . 5 秒 | 18 倍 |
Leiden | 13 . 2 秒 | 0 . 1 秒 | 130 倍 |
邏輯回歸 | 76 秒 | 3 . 75 秒 | 20 倍 |
繪圖( FA2 ) | 191 秒 | 0 . 23 秒 | 830 倍 |
run_mlm ( DoRothEA ) | 55 秒 | 12 秒 | 4 . 5 倍 |
Run_wsum (程序) | 690 秒( 11 . 5 分鐘) | 28 秒 | 26 倍 |
表 3 。 90000 個(gè)細(xì)胞數(shù)據(jù)集的消費(fèi)者系統(tǒng)基準(zhǔn)
安裝
安裝 RAPIDS – 單電池有多種方法。最簡(jiǎn)單的方法是使用 GitHub 存儲(chǔ)庫(kù)中提供的一個(gè) yaml 文件。這些設(shè)置了整個(gè)環(huán)境,包括運(yùn)行示例筆記本所需的一切。
conda create -f conda/rsc_rapids_23.02.yml
您還可以從 PyPI 將 RAPIDS -singlecell 安裝到 Conda 環(huán)境中,并從 Conda 安裝 RAPIDS 。默認(rèn)安裝程序不包括 RAPIDS 或 CuPy 。 Scanpy 也被排除在外,因?yàn)樗诩夹g(shù)上是不必要的。
pip install rapids-singlecell
最后,您可以使用 RAPIDS 中的新實(shí)驗(yàn) PyPI 包從 PyPI 安裝整個(gè)庫(kù),包括 RAPDIS 依賴項(xiàng)。然而,這種安裝方法需要用戶正確設(shè)置 CUDA ,以便可以通過(guò) RAPIDS 和 CuPy 找到它。
要執(zhí)行此操作,可以使用以下命令:
pip install 'rapids-singlecell[rapids]’ --extra-index-url=https://pypi.nvidia.com
結(jié)論
帶 RAPIDS-singlecell 庫(kù)·,可以在比 CPU 僅計(jì)算其 UMAP 嵌入所花費(fèi)的時(shí)間更短的時(shí)間內(nèi)運(yùn)行 500K 個(gè)小區(qū)的完整分析。因此,它能夠在單細(xì)胞數(shù)據(jù)分析階段實(shí)現(xiàn)更快的迭代過(guò)程。
RAPIDS-singlecell 還使生物信息學(xué)家能夠與醫(yī)生或生物學(xué)家實(shí)時(shí)分析數(shù)據(jù),從而更好地協(xié)作和解釋數(shù)據(jù)。根據(jù)我們的經(jīng)驗(yàn),即使在消費(fèi)類 3090 系列顯卡上,也可以在沒有任何問題的情況下分析 200K 單元。更好的是, RMM 使 GPU 存儲(chǔ)器能夠被超額訂閱并溢出到主存儲(chǔ)器,從而使規(guī)模遠(yuǎn)遠(yuǎn)超過(guò) 500K 個(gè)單元。
使用數(shù)據(jù)中心類 NVIDIA A100 80 GB GPU ,您可以分析包含多達(dá) 2 個(gè)的矩陣31-1 (約 21 . 5 億)個(gè)非零計(jì)數(shù)。(請(qǐng)注意,這是用于稀疏矩陣計(jì)算的基于 CuPy 32 位整數(shù)的索引的當(dāng)前限制。)這種強(qiáng)大的功能使用戶能夠分析超過(guò) 100 萬(wàn)個(gè)單元格的數(shù)據(jù)集。
20 倍以上加速了 RAPIDS-singlecell 提供的功能使研究人員能夠更加專注于分析和解釋他們的單細(xì)胞數(shù)據(jù),而不是等待漫長(zhǎng)的計(jì)算過(guò)程。本著 RAPIDS 的真正精神,這最終提高了生產(chǎn)力,并促進(jìn)了對(duì)細(xì)胞生物學(xué)的新見解,這在以前是不可能的。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4855瀏覽量
102711 -
gpu
+關(guān)注
關(guān)注
28文章
4673瀏覽量
128592 -
人工智能
+關(guān)注
關(guān)注
1789文章
46652瀏覽量
237073
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論