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。我們在每個階段都努力改進,並相信透過開放的溝通和分享想法將會成功。