[ PROMPT_NODE_26218 ]
distributed_computing
[ SKILL_DOCUMENTATION ]
# 使用 Arboreto 进行分布式计算
Arboreto 利用 Dask 进行并行计算,实现了从单机多核处理到多节点集群环境的高效 GRN 推理。
## 计算架构
GRN 推理本质上是可并行的:
- 每个目标基因的回归模型可以独立训练
- Arboreto 将计算表示为 Dask 任务图
- 任务被分配到可用的计算资源中
## 本地多核处理(默认)
默认情况下,Arboreto 使用本地机器上所有可用的 CPU 核心:
python
from arboreto.algo import grnboost2
# 自动使用所有本地核心
network = grnboost2(expression_data=expression_matrix, tf_names=tf_names)
这对于大多数用例已足够,无需额外配置。
## 自定义本地 Dask 客户端
如需对本地资源进行精细控制,可创建自定义 Dask 客户端:
python
from distributed import LocalCluster, Client
from arboreto.algo import grnboost2
if __name__ == '__main__':
# 配置本地集群
local_cluster = LocalCluster(
n_workers=10, # 工作进程数
threads_per_worker=1, # 每个工作进程的线程数
memory_limit='8GB' # 每个工作进程的内存限制
)
# 创建客户端
custom_client = Client(local_cluster)
# 使用自定义客户端运行推理
network = grnboost2(
expression_data=expression_matrix,
tf_names=tf_names,
client_or_address=custom_client
)
# 清理
custom_client.close()
local_cluster.close()
### 自定义客户端的好处
- **资源控制**:限制 CPU 和内存使用
- **多次运行**:为不同的参数集重用同一个客户端
- **监控**:访问 Dask 仪表板以获取性能洞察
## 使用同一客户端进行多次推理运行
为多次具有不同参数的推理运行重用单个 Dask 客户端:
python
from distributed import LocalCluster, Client
from arboreto.algo import grnboost2
if __name__ == '__main__':
# 初始化一次客户端
local_cluster = LocalCluster(n_workers=8, threads_per_worker=1)
client = Client(local_cluster)
# 运行多次推理
network_seed1 = grnboost2(
expression_data=expression_matrix,
tf_names=tf_names,
client_or_address=client,
seed=666
)
network_seed2 = grnboost2(
expression_data=expression_matrix,
tf_names=tf_na