Targon(Bittensor Subnet 4)是一种确定性验证机制,用于激励矿工运行符合 openai 的端点并提供综合和有机查询。
注意:使用本软件,您必须同意条款和条件文档中提供的条款和协议。下载并运行该软件即表示您默示同意这些条款和条件。
对于验证器,我们建议使用 8xA100,但也可以使用 1xA100。我们计划在接下来的更新中重点关注降低这些成本。
对于矿工来说,A100 或 H100 是常见的选择。矿工可以通过基准测试来确定哪种 GPU 最适合其优化。
为了运行 Targon,您需要安装 PM2 和 Targon 软件包。以下说明仅适用于 Ubuntu 操作系统。对于您的具体操作系统,请参阅官方文档。
要安装或更新 nvm,您应该运行安装脚本。为此,您可以手动下载并运行脚本,或者使用以下 cURL 或 Wget 命令:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
运行上述任一命令都会下载脚本并运行它。该脚本将 nvm 存储库克隆到/.nvm,并尝试将下面代码片段中的源行添加到正确的配置文件中( /.bash_profile、~/.zshrc、~/.profile 或 ~/.bashrc)。
export NVM_DIR= " $( [ -z " ${XDG_CONFIG_HOME-} " ] && printf %s " ${HOME} /.nvm " || printf %s " ${XDG_CONFIG_HOME} /nvm " ) "
[ -s " $NVM_DIR /nvm.sh " ] && . " $NVM_DIR /nvm.sh " # This loads nvm
nvm install node
npm install pm2@latest -g
您现在已经安装了 PM2。
git clone https://github.com/manifold-inc/targon.git
cd targon
python3 -m pip install -e .
您现在已经安装了 Targon。您现在可以运行验证器或矿工。
在 Targon 中启动或注册您的矿工之前,首先您需要运行 VLLM 来服务验证器所请求的不同图像。您可以在 https://stats.sybil.com/stats/validator 的实时选项卡下找到列表。您运行的模型越多,您的激励就越高。
VLLM 是推荐的引擎,但这不是必需的。如果您使用 VLLM,请确保包含--return-tokens-as-token-ids
标志,否则您的响应将失败。
一旦运行一个(或多个)模型,请修改默认矿工代码以在每个请求上代理到正确的 VLLM 实例。验证者将包含X-Targon-Model
标头,以便矿工节点不需要解析实际的主体。
在miner.py
脚本中,您将找到一个名为list_models
的函数。要为多个模型提供服务,您必须:
async def list_models(self):
return [
"ExampleName/Meta-Llama-3.1-8B-Instruct",
"ExampleName/mythomax-l2-13b",
"ExampleName/Hermes-3-Llama-3.1-8B",
"ExampleName/Nxcode-CQ-7B-orpo",
"ExampleName/deepseek-coder-33b-instruct",
"ExampleName/Llama-3.1-Nemotron-70B-Instruct-HF",
]
create_chat_completion
和create_completion
方法,以根据模型路由到适当的 vllm 上游服务器(位于标头中或来自请求负载的模型参数)这是一个提示/不完整的代码片段,可以帮助您入门:
model_port_map = {
'ExampleName/mythomax-l2-13b': 1001,
'ExampleName/Hermes-3-Llama-3.1-8B': 1002,
'ExampleName/Nxcode-CQ-7B-orpo': 1003,
'ExampleName/deepseek-coder-33b-instruct': 1004,
'ExampleName/Llama-3.1-Nemotron-70B-Instruct-HF': 1005
}
full_url = f"http://127.0.0.1:{model_port_map.get(body.get('model'), 1000)}{path}"
完成后,您就可以继续启动矿工节点了。
通过 PM2 运行矿工需要运行 vLLM 实例。
pm2 start neurons/miner.py --name miner --interpreter python3 -- --wallet.name [WALLET_NAME] --netuid 4 --wallet.hotkey [WALLET_HOTKEY] --subtensor.network finney --model-endpoint [MODEL_ENDPOINT] --api_key [API_KEY] --axon.port [AXON PORT] --logging.trace
请将以下内容替换为您的具体配置:
- [钱包_名称]
- [钱包_热键]
- [MODEL_ENDPOINT]
- [API_KEY]
- [AXON_端口]
注意:跟踪日志记录非常详细。您可以使用--logging.info
来代替,以减少日志膨胀。
此外:
--no-force-validator-permit [TRUE/FALSE]
默认为 false 以强制传入请求获得许可。如果您在从“测试”网络上的验证器获取请求时遇到问题,请将此设置为 true。
验证器只需通过 pm2 运行,即可实现自动重启和自动更新。验证器至少应在 A100 上运行,但越大越好,因为更大的集群可以处理更多模型。该机器应该与 docker 一起安装 nvidia-smi / cuda。
无需 vllm 实例
验证器实例:
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME]
请将以下内容替换为您的具体配置:
- [钱包_名称]
default
或config
。endpoint
:默认为https://targon.sybil.com/api/models
。这将模仿流形验证器default
:仅运行 NousResearch/Meta-Llama-3.1-8B-Instructconfig
:解析名为models.txt
的文本文件,其中包含由换行符分隔的模型列表endpoint
时使用。将 api 端点设置为 ping 模型列表。默认为 targon 中心。示例模型配置文件
models.txt
NousResearch/Meta-Llama-3.1-8B-Instruct NousResearch/Meta-Llama-3.1-70B-Instruct NousResearch/Meta-Llama-3.1-405B-Instruct
自动更新在 targon/utils.py 中实现。这是为了确保您的代码库与 Targon Github 存储库 Main 上的最新版本匹配。
验证器自动更新已实现,并且默认在设置权重后运行。要禁用,请将该标志添加到您的命令行构建中:
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --autoupdate-off
矿工自动更新未实现。矿工需要检查 Targon 存储库并在新版本发布时进行自我更新。如果有兴趣利用验证器使用的自动更新功能,请按照以下步骤操作:
注意:这不会由 Manifold Labs 团队维护。
from targon . updater import autoupdate
if self . config . autoupdate :
autoupdate ( branch = "main" )
该中心的目标是为验证者提供一种简单的方法来直接从其位张量带宽中产生收入。这是设计作为验证者使用和创建自己的品牌中心的模板,但仍然鼓励拉取请求。
如果您有兴趣运行自己的 Targon Hub 实例,则需要添加一个附加标志来保存矿工对 PostgreSQL 数据库的响应记录。
注意:没有标志意味着没有数据库!
--database.url [DB_CONNECTION_STRING]
请将以下内容替换为您的具体连接 URL:
- [DB_CONNECTION_STRING]
以下是创建 Supabase 连接字符串以利用此功能的步骤:
Connect
按钮transaction
更改为session
--database.url
标志和连接字符串启动验证器请联系 SN4 团队,寻求在 sn4 聊天或我们的 Discord 中设置 targon hub 的帮助
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --database.url [DB_CONNECTION_STRING]
当验证器运行时,您将开始看到记录被添加到 Supabase 数据库中。这将直接是您的 Targon Hub 将查询的内容。
Targon 使用新颖的内部工作量证明值来验证模型响应。它们的生成方式与日志概率类似,可用于高精度验证是否使用所请求的模型生成了响应。我们将其与日志概率验证的快速和慢速版本结合使用。已验证的响应根据验证的速度和一致性进行评分。
矿工是一个负责从查询生成输出的节点,包括有机的和合成的。
验证器是负责验证矿工输出的节点。验证者将向矿工发送符合 openai 标准的请求。然后,矿工将发送回带有输出的响应。然后,验证器将使用响应的工作量证明值来验证每个矿工的响应是否准确。验证者将记录每个矿工响应时间的分数,并使用他们的平均值来分配每个时期的分数。
验证者可以使用任何 openai 包和 Epistula 标头直接查询矿工。下面是用 python 查询矿工的样板。
miner = openai . AsyncOpenAI (
base_url = f"http:// { axon . ip } : { axon . port } /v1" ,
api_key = "sn4" ,
max_retries = 0 ,
timeout = Timeout ( 12 , connect = 5 , read = 5 ),
http_client = openai . DefaultAsyncHttpxClient (
event_hooks = {
"request" : [
# This injects Epistula headers right before the request is sent.
# wallet.hotkey is the public / private keypair
#
# You can find this function in the `epistula.py` file in
# the targon repo
create_header_hook ( wallet . hotkey , axon . hotkey_ss58 )
]
}
),
)
项目维护者保留使用常识判断权衡同行评审员意见的权利,也可以根据优点进行权衡。随着时间的推移,对项目表现出更深入的承诺和理解的审稿人,或者拥有明确领域专业知识的审稿人,自然会拥有更大的权重,正如各行各业的人所期望的那样。如果补丁集影响共识关键代码,那么讨论和同行评审要求的门槛就会更高,请记住,错误可能会给更广泛的社区带来高昂的代价。这包括重构关键共识代码。如果补丁集提议更改 Targon 子网,则必须在不和谐服务器和其他渠道上进行了广泛讨论,并附有广泛讨论的 BIP,并且基于以下判断具有普遍广泛认为是值得更改的技术共识:维护者。话虽这么说,Manifold 欢迎所有为了改善子网和 Bittensor 整体而提出的 PR。我们在每一个阶段都努力改进,并相信通过开放的沟通和分享想法将会取得成功。