本文为 Chutes AI Validator(验证者节点) 的详细部署指南,涵盖从服务器准备、Ansible 自动化配置、Kubernetes 集群搭建,到各类密钥与数据库初始化的完整步骤。 适用于希望在 Bittensor 子网中运行独立验证节点的高级用户。
Chutes 是一个去中心化 AI 平台,用于运行验证者(Validator)和矿工(Miner)节点,支持 GPU 算力共享、模型部署与收益分配,介绍如何独立部署一套完整的验证者 API 服务。
建议部署:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install ansible
sudo apt update && sudo apt install -y ansible python3-pip
sudo dnf install epel-release -y
sudo dnf install ansible -y
ansible-galaxy collection install community.general
ansible-galaxy collection install kubernetes.core
git clone https://github.com/chutesai/chutes-api.git
cd chutes-api/ansible
进入 ansible
目录,修改 inventory.yml
,写入各节点 IP 与角色信息。
执行初始化:
ansible-playbook -i inventory.yml site.yml
加入集群:
ansible-playbook -i inventory.yml join-cluster.yml
安装额外组件(如 GPU Operator):
ansible-playbook -i inventory.yml extras.yml
用于保存镜像、构建上下文、Logo 等。可选:
创建 Kubernetes Secret:
microk8s kubectl create secret generic s3-credentials \
--from-literal="access-key-id=[AccessKey]" \
--from-literal="secret-access-key=[Secret]" \
--from-literal="bucket=[BucketName]" \
--from-literal="endpoint-url=[EndpointURL]" \
--from-literal="aws-region=[Region]" \
-n chutes
强烈建议使用托管数据库(Aurora / AlloyDB)保证安全性与备份。
microk8s kubectl create secret generic postgres-secret \
--from-literal="username=chutes" \
--from-literal="password=[Password]" \
--from-literal="url=postgresql+asyncpg://chutes:[Password]@[Host]:5432/chutes" \
--from-literal="hostname=[Host]" \
--from-literal="port=5432" \
--from-literal="database=chutes" \
-n chutes
microk8s kubectl create secret generic validator-credentials \
--from-literal="ss58=[ValidatorHotkey]" \
--from-literal="seed=[SecretSeedWithout0x]" \
-n chutes
microk8s kubectl create secret docker-registry regcred \
--docker-server=docker.io \
--docker-username=[User] \
--docker-password=[Pass] \
--docker-email=[Email] \
-n chutes
microk8s kubectl create secret generic registry-secret \
--from-literal="password=[RandomStrongPass]" \
-n chutes
microk8s kubectl create secret generic docker-pull \
--from-literal="username=[User]" \
--from-literal="password=[SamePass]" \
-n chutes
import secrets
print(secrets.token_bytes(32).hex()) # 64字符
print(secrets.token_bytes(64).hex()) # 128字符
创建:
microk8s kubectl create secret generic wallet-secret \
--from-literal="wallet-key=[64hex]" \
--from-literal="pg-key=[128hex]" \
-n chutes
python3 -c 'import uuid; print(uuid.uuid4())'
microk8s kubectl create secret generic redis-secret \
--from-literal="password=[UUID]" \
--from-literal="url=redis://:[UUID]@redis.chutes.svc.cluster.local:6379/0" \
-n chutes
python3 -c 'import uuid; print(uuid.uuid4())'
microk8s kubectl create secret generic gravaldb-secret \
--from-literal="password=[UUID]" \
-n chutes
python3 -c 'import uuid; print(uuid.uuid4())'
microk8s kubectl create secret generic ip-check-salt \
--from-literal="salt=[UUID]" \
-n chutes
购买 通配符证书(Wildcard TLS),例如:
*.yourdomain.com
确保以下子域支持 HTTPS:
api.yourdomain.com
registry.yourdomain.com
socket.yourdomain.com
events.yourdomain.com
graval.yourdomain.com
进入 charts
目录,修改 values.yaml
中:
subtensor
地址(如需自建)执行部署:
helm template . > prod.yaml
microk8s kubectl apply -f prod.yaml -n chutes
查看部署状态:
microk8s kubectl get po -n chutes -o wide
配置 Nginx 或 Cloud Load Balancer,将以下端口对应映射:
子域名 | 目标端口 |
---|---|
api.domain | 32000 |
socket.domain | 32001 |
graval.domain | 32002 |
registry.domain | 32003 |
events.domain | 32004 |
确保所有端口与 Helm Chart 一致。
将以下信息发送给矿工社区(如 Discord Subnet Channel):
registry.yourdomain.com
)api.yourdomain.com
)socket.yourdomain.com
)矿工更新配置后,即可向你的 Validator 分配 GPU 算力资源。
至此,你已完成:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。