2、全球最大交易所币安  
 
介绍
Autonomys-farmer 包含以下组件 :
autonomys-controller 负责代理 node rpc,用于管理集群组件
 
 
 
full-piece-sharded-cache piece 分片缓存全量节点
 
 
proof-server GPU 出块,用于计算 proof
 
 
plot-server plotting 服务,用于encode 数据
 
 
plot-client farming 组件,用于扫盘以及提交solution
 
 
 
架构
目前所有的集群管理都是基于 nats 来做的,但是 cache 的具体数据传输是通过 TCP 做 p2p 传输。
软件和硬件环境建议配置
本软件仅支持 Linux 操作系统,以及 Nvidia GPU 环境。
操作系统及依赖软件
 
GPU 驱动版本 ≥ 525.60.13 ,或者直接安装 cuda 12.4
 
 
 
 
 
 
 
类别 
中央处理器 
內存 
图形处理器 
固态硬盘 
网络 
运行组件 
 
 
节点机 
64核 
64 克/128 克 
需要 
500千兆字节 
千兆網卡 
controller autonomys-node proof-server nats-server 
P 盤機 
每個GPU需要30核 
每個GPU需要 64 G 
需要 
20GiB 用於緩存 plot 數據 
萬兆網卡*2 
plot-server sharded-cache full-piece-cache 
存儲機 
取決於存儲容量 
取決於存儲容量 
不需要 
取決於存儲容量 
萬兆網卡*2 
plot-client 
 
 
最佳實踐 
注:以下名稱 IP 等都是示例 
環境介紹 
 
服务器 
ip 地址 
配置 
部署组件 
 
 
 
 
 
controller autonomys-node
proof-server nats-server
 
 
 
 
 
 
 
controller autonomys-node
proof-server nats-server
 
 
 
 
 
 
 
controller autonomys-node
proof-server nats-server
 
 
 
 
 
 
 
autonomys-plot-server-0
autonomys-plot-server-1
autonomys-plot-server-2
autonomys-plot-server-3
sharded-cache full-piece-cache
 
 
 
 
 
 
 
autonomys-plot-server-0
autonomys-plot-server-1
autonomys-plot-server-2
autonomys-plot-server-3
sharded-cache full-piece-cache
 
 
 
 
 
 
8T NVMe SSD * 4
/mnt/nvme0n1
/mnt/nvme0n2
/mnt/nvme1n2
/mnt/nvme1n1
 
 
 
 
 
 
 
8T NVMe SSD * 4
/mnt/nvme0n1
/mnt/nvme0n2
/mnt/nvme1n1
/mnt/nvme1n2
 
 
 
 
 
 
 
Supervisor 配置
节点机配置 
单台节点机需要部署4个部件 :controller autonomys-node proof-server nats-server
部署顺序 : nats-server -> autonomys-node -> controller -> proof-server
 
 
 
nats-server 
以下是 nats-server 配置示例,供参考:
复制 
server_name=n1-cluster
 max_payload = 3MB
 jetstream {
    store_dir=/var/nats-data
 }
 cluster {
   name: c1-cluster
   listen: 0.0.0.0:4248
   routes: [
     nats://192.168.0.1:4248
     nats://192.168.0.2:4248
   ]
 }  
autonomys-controller 
复制 
# autonomys-controller 配置
 # /etc/supervisor/conf.d/autonomys-controller.conf
 [program:autonomys-controller]
 command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 controller --tmp --node-rpc-url ws://10.30.1.2:9944
 autorestart=true
 user=root
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-controller.log  
autonomys-node 
复制 
# autonomys-node 配置
 # /etc/supervisor/conf.d/autonomys-node.conf
 [program:autonomys-node]
 command=/root/autonomys/autonomys-node run --base-path /var/autonomys-node --farmer --rpc-listen-on 0.0.0.0:9944 --chain taurus --sync full --rpc-methods unsafe --rpc-cors all
 autorestart=true
 user=root
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-node.log  
autonomys-proof-server 
复制 
# autonomys-proof-server 配置
 # /etc/supervisor/conf.d/autonomys-proof-server.conf
 [program:autonomys-proof-server]
 command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 proof-server
 autorestart=true
 user=root
 environment=CUDA_VISIBLE_DEVICES=0
 redirect_stderr=true
 stdout_logfile_maxbytes=500MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-proof-server.log  
启动命令参数和环境变量解释:
--nats-server 参数用于指定 nats 服务器地址
 
 
CUDA_VISIBLE_DEVICES 环境变量用于指定GPU,0表示GPU0,1表示GPU1,以此类推
 
 
 
P 盘机配置 (以 4 GPU为例) 
单台P 盘机需要部署3个组件: ,,autonomys-plot-serverautonomys-sharded-cacheautonomys-full-piece-cache
autonomys-plot-server 组件从和组件获取 piece 用于 p 盘autonomys-sharded-cacheautonomys-full-piece-cache
 
 
 
autonomys-sharded-cache 
复制 
# sharded-cache 配置
 # /etc/supervisor/conf.d/autonomys-sharded-cache.conf
 [program:autonomys-sharded-cache]
 command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 sharded-cache path=/var/autonomys-sharded-cache
 autorestart=true
 user=root
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-sharded-cache.log  
启动命令参数解释 :
--nats-server参数用于指定 nats 服务器地址
 
 
path=/path/to/autonomys-sharded-cache参数用于指定 piece 缓存存储路径
 
 
 
autonomys-full-piece 
复制 
# autonomys-full-piece 配置
 # /etc/supervisor/conf.d/autonomys-full-piece.conf
 [program:autonomys-full-piece]
 command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 full-piece-sharded-cache --tmp path=/var/autonomys-full-piece
 autorestart=true
 user=root
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-full-piece.log  
启动命令参数解释 :
--nats-server 参数用于指定 nats 服务器地址
 
 
path=/path/to/autonomys-full-piece 参数用于指定 full-piece 存储路径
 
 
 
autonomys-plot-server 
复制 
# autonomys-plot-server 配置文件
 # /etc/supervisor/conf.d/autonomys-plot-server.conf
 [group:autonomys-plot-server]
 programs=autonomys-plot-server-0,autonomys-plot-server-1,autonomys-plot-server-2,autonomys-plot-server-3
 [program:autonomys-plot-server-0]
 command=numactl -C 0-31 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9966 /var/plot-server/base-path-0
 autorestart=true
 user=root
 environment=CUDA_VISIBLE_DEVICES=0
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-plotter-0.log
 [program:autonomys-plot-server-1]
 command=numactl -C 96-127 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9967 /var/plot-server/base-path-1
 autorestart=true
 user=root
 environment=CUDA_VISIBLE_DEVICES=1
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-plotter-1.log
 [program:autonomys-plot-server-2]
 command=numactl -C 96-127 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9968 /var/plot-server/base-path-2
 autorestart=true
 user=root
 environment=CUDA_VISIBLE_DEVICES=2
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-plotter-2.log
 [program:autonomys-plot-server-3]
 command=numactl -C 144-175 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9969 /var/plot-server/base-path-3
 autorestart=true
 user=root
 environment=CUDA_VISIBLE_DEVICES=3
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-plotter-3.log  
啟動命令參數及環境變量解釋:
--nats-server 參數用於指定 nats 服務器地址
 
 
CUDA_VISIBLE_DEVICES 環境變量用於指定 GPU,0 表示 GPU0,1 表示GPU1,以此類推
 
 
GPU_CONCURRENCY 增大此值會提高顯存使用量,在使用不同型號的 GPU 時,可以考慮適當調整該變量
 
 
 
需要注意的是, 使用 numactl 工具綁定 CPU 核心時,需考慮 GPU 的 numa 親和性,以達到最佳性能。
 
 
 
使用 命令可以查看 GPU numa 親和性nvidia-smi topo -m
复制 
# nvidia-smi topo -m
         GPU0    GPU1    NIC0    NIC1    CPU Affinity    NUMA Affinity   GPU NUMA ID
 GPU0     X      SYS     NODE    NODE    0-47,96-143     0               N/A
 GPU1     X      SYS     NODE    NODE    0-47,96-143     0               N/A
 GPU2    SYS      X      SYS     SYS     48-95,144-191   1               N/A
 GPU3    SYS      X      SYS     SYS     48-95,144-191   1               N/A
 NIC0    NODE    SYS      X      PIX
 NIC1    NODE    SYS     PIX      X
 Legend:
   X    = Self
   SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
   NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
   PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
   PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
   PIX  = Connection traversing at most a single PCIe bridge
   NV#  = Connection traversing a bonded set of # NVLinks
 NIC Legend:
   NIC0: mlx5_0
   NIC1: mlx5_1  
存儲機配置(以 4 盤為例) 
autonomys-plot-client 
复制 
# autonomys-plot-client 配置
 # /etc/supervisor/conf.d/autonomys-plot-client.conf
 [program:autonomys-plot-client]
 command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-client --reward-address stBR..S8V  path=/mnt/nvme0n1/,sectors=8000 path=/mnt/nvme0n2/,sectors=8000 path=/mnt/nvme1n0/,sectors=8000 path=/mnt/nvme1n1/,sectors=8000
 autorestart=true
 user=root
 redirect_stderr=true
 stdout_logfile_maxbytes=100MB
 stdout_logfile_backups=2
 stdout_logfile=/var/log/autonomys-plot-client.log  
啟動命令參數解釋:
--nats-server 參數用於指定 nats 服務器地址
 
 
path=/path/to/plot-dir,sectors=8000 參數用於指定 plot 的文件路徑以及 plot 的扇區數量
 
 
 
附錄
使用命令
手动初始化集群,执行后会在n秒后重新初始化整个集群
复制 
autonomys-farmer util \
 reinitialization-cache \
     --nats-servers nats://192.168.200.6:4222 \
     --delay 0  
• :初始化延迟,单位:秒--delay 0
模拟 plot 的 download sector 过程,对 cache cluster 发起请求,检查集群状态
复制 
autonomys-farmer util \
 sharded-cache-benchmark \
     --nats-servers nats://192.168.0.2:4222 \
     --sectors 256 \
     --epoch 1 \
     --cache-item-type split-parity-piece  
返回Oula