Targon (Bittensor Subnet 4) ist ein deterministischer Verifizierungsmechanismus, der Minern einen Anreiz gibt, OpenAI-konforme Endpunkte auszuführen und synthetische und organische Abfragen zu bedienen.
HINWEIS: Wenn Sie diese Software verwenden, müssen Sie den im Dokument „Bedingungen und Konditionen“ aufgeführten Bedingungen und Vereinbarungen zustimmen. Durch das Herunterladen und Ausführen dieser Software stimmen Sie diesen Geschäftsbedingungen stillschweigend zu.
Für Validatoren empfehlen wir einen 8xA100, obwohl auch ein 1xA100 verwendet werden könnte. Wir planen, uns in den kommenden Updates darauf zu konzentrieren, diese Kosten zu senken.
Für Bergleute sind A100 oder H100 die gängige Wahl. Beim Benchmarking ist es Sache des Miners, zu ermitteln, welche GPU für seine Optimierungen am besten geeignet ist.
Um Targon auszuführen, müssen Sie PM2 und das Targon-Paket installieren. Die folgenden Anweisungen gelten nur für Ubuntu-Betriebssysteme. Informationen zu Ihrem spezifischen Betriebssystem finden Sie in der offiziellen Dokumentation.
Um NVM zu installieren oder zu aktualisieren, sollten Sie das Installationsskript ausführen. Dazu können Sie entweder das Skript herunterladen und manuell ausführen oder den folgenden cURL- oder Wget-Befehl verwenden:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Wenn Sie einen der oben genannten Befehle ausführen, wird ein Skript heruntergeladen und ausgeführt. Das Skript klont das NVM-Repository /.nvm und versucht, die Quellzeilen aus dem Snippet unten zur richtigen Profildatei hinzuzufügen ( /.bash_profile, ~/.zshrc, ~/.profile oder ~/.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
Sie haben PM2 jetzt installiert.
git clone https://github.com/manifold-inc/targon.git
cd targon
python3 -m pip install -e .
Sie haben Targon jetzt installiert. Sie können jetzt einen Validator oder einen Miner ausführen.
Bevor Sie Ihren Miner in Targon starten oder registrieren, sollten Sie zunächst VLLM ausführen, das verschiedene von Validatoren angeforderte Bilder bereitstellt. Eine Liste finden Sie unter https://stats.sybil.com/stats/validator im Live-Tab. Je mehr Modelle Sie betreiben, desto höher ist Ihr Anreiz.
VLLM ist die empfohlene Engine, sie ist jedoch nicht erforderlich. Wenn Sie VLLM verwenden, stellen Sie sicher, dass Sie das Flag --return-tokens-as-token-ids
einschließen, da Ihre Antworten sonst fehlschlagen.
Sobald ein (oder mehrere) Modelle ausgeführt werden, ändern Sie den Standard-Miner-Code, um bei jeder Anfrage einen Proxy für die richtige VLLM-Instanz zu erstellen. Verifizierer enthalten den X-Targon-Model
Header, sodass der Miner-Knoten den tatsächlichen Körper nicht analysieren muss.
Im miner.py
-Skript finden Sie eine Funktion namens list_models
. Um mehrere Modelle zu bedienen, müssen Sie:
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
und create_completion
in neurons/miner.py, um basierend auf dem Modell (entweder in den Headern oder aus dem Modellparameter der Anforderungsnutzlast) an den entsprechenden vllm-Upstream-Server weiterzuleiten.Hier ist ein Hinweis/unvollständiger Codeausschnitt, um Ihnen den Einstieg zu erleichtern:
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}"
Sobald dies abgeschlossen ist, können Sie mit dem Starten Ihres Miner-Knotens fortfahren.
Für die Ausführung eines Miners über PM2 muss die vLLM-Instanz ausgeführt werden.
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
Bitte ersetzen Sie Folgendes durch Ihre spezifische Konfiguration:
- [WALLET_NAME]
- [WALLET_HOTKEY]
- [MODEL_ENDPOINT]
- [API_KEY]
- [AXON_PORT]
HINWEIS: Die Trace-Protokollierung ist sehr ausführlich. Sie können stattdessen --logging.info
verwenden, um die Protokollaufblähung zu verringern.
Zusätzlich:
--no-force-validator-permit [TRUE/FALSE]
Der Standardwert ist „false“, um bei eingehenden Anfragen eine Genehmigung zu erzwingen. Setzen Sie dies auf „true“, wenn Sie Probleme beim Empfang von Anfragen von Validatoren im „Test“-Netzwerk haben.
Validatoren werden einfach über pm2 ausgeführt und ermöglichen so automatische Neustarts und automatische Updates. Ein Validator sollte mindestens auf einem A100 laufen, aber je größer, desto besser, da größere Cluster mehr Modelle verarbeiten können. Auf dem Computer sollte nvidia-smi/cuda zusammen mit Docker installiert sein.
Keine vllm-Instanz erforderlich
Validator-Instanz:
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME]
Bitte ersetzen Sie Folgendes durch Ihre spezifische Konfiguration:
- [WALLET_NAME]
default
oder config
.endpoint
: Standardmäßig ist https://targon.sybil.com/api/models
. Dadurch wird der Verteilervalidator nachgeahmtdefault
: Nur NousResearch/Meta-Llama-3.1-8B-Instruct ausführenconfig
: Analysieren Sie eine Textdatei namens models.txt
mit einer durch Zeilenumbrüche getrennten Liste von Modellenendpoint
ist. Setzt den API-Endpunkt auf Ping für eine Liste von Modellen. Standardmäßig wird der Targon-Hub verwendet.Beispiel einer Modellkonfigurationsdatei
models.txt
NousResearch/Meta-Llama-3.1-8B-Instruct NousResearch/Meta-Llama-3.1-70B-Instruct NousResearch/Meta-Llama-3.1-405B-Instruct
Autoupdate ist in targon/utils.py implementiert. Dadurch soll sichergestellt werden, dass Ihre Codebasis mit der neuesten Version im Main des Targon Github Repository übereinstimmt.
Die automatische Aktualisierung des Validators ist implementiert und wird standardmäßig ausgeführt, sobald Gewichtungen festgelegt wurden. Um es zu deaktivieren , fügen Sie bitte das Flag zu Ihrem Befehlszeilen-Build hinzu:
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --autoupdate-off
Miner Autoupdate ist nicht implementiert. Miner müssen das Targon-Repository überprüfen und sich selbst aktualisieren, sobald neue Versionen veröffentlicht werden. Wenn Sie daran interessiert sind, die von Validatoren verwendete Autoupdate-Funktion zu nutzen, führen Sie bitte die folgenden Schritte aus:
HINWEIS : Dies wird nicht vom Manifold Labs-Team gepflegt.
from targon . updater import autoupdate
if self . config . autoupdate :
autoupdate ( branch = "main" )
Das Ziel des Hubs besteht darin, Validatoren eine einfache Möglichkeit zu bieten, direkt Einnahmen aus ihrer Bitsor-Bandbreite zu generieren. Dies ist als Vorlage für Validatoren konzipiert, mit der sie ihre eigenen Marken-Hubs erstellen können. Pull-Anfragen werden jedoch weiterhin empfohlen.
Wenn Sie daran interessiert sind, Ihre eigene Instanz von Targon Hub auszuführen, müssen Sie ein zusätzliches Flag hinzufügen, um die Datensätze der Miner-Antworten in einer PostgreSQL-Datenbank zu speichern.
HINWEIS : Kein Flag bedeutet keine Datenbank!
--database.url [DB_CONNECTION_STRING]
Bitte ersetzen Sie Folgendes durch Ihre spezifische Verbindungs-URL:
- [DB_CONNECTION_STRING]
Im Folgenden finden Sie Schritte zum Erstellen einer Supabase-Verbindungszeichenfolge zur Nutzung dieser Funktion:
Connect
.transaction
auf session
--database.url
und der neuen VerbindungszeichenfolgeBitte wenden Sie sich an das SN4-Team, um Hilfe bei der Einrichtung des Targon-Hubs im SN4-Chat oder in unserem Discord zu erhalten
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --database.url [DB_CONNECTION_STRING]
Während Ihr Validator ausgeführt wird, werden Sie feststellen, dass Datensätze zu Ihrer Supabase-Datenbank hinzugefügt werden. Dies ist direkt das, was Ihr Targon Hub abfragt.
Targon verwendet einen neuartigen, internen Proof-of-Work-Wert, um Modellantworten zu verifizieren. Diese werden genau wie Log-Probs generiert und können verwendet werden, um mit hoher Genauigkeit zu überprüfen, ob eine Antwort mit dem angeforderten Modell generiert wurde. Wir verwenden dies in Kombination mit einer schnellen und einer langsamen Version der Log-Prob-Überprüfung. Verifizierte Antworten werden nach Geschwindigkeit und Konsistenz der Überprüfung bewertet.
Ein Miner ist ein Knoten, der für die Generierung einer organischen und synthetischen Ausgabe aus einer Abfrage verantwortlich ist.
Ein Validator ist ein Knoten, der für die Überprüfung der Ausgabe eines Miners verantwortlich ist. Der Validator sendet eine OpenAI-konforme Anfrage an einen Miner mit. Der Miner sendet dann eine Antwort mit der Ausgabe zurück. Der Validator verwendet dann die Proof-of-Work-Werte der Antwort, um zu überprüfen, ob die Antwort jedes Miners korrekt ist. Validatoren erfassen die Reaktionszeit jedes Bergmanns und verwenden ihre Durchschnittswerte, um jeder Epoche Punkte zuzuweisen.
Validatoren können Miner direkt mit jedem OpenAI-Paket und Epistula-Headern abfragen. Unten finden Sie ein Beispiel für die Abfrage eines Miners in 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 )
]
}
),
)
Projektträger behalten sich das Recht vor, die Meinungen von Peer-Reviewern anhand ihres gesunden Menschenverstandes abzuwägen und können auch auf der Grundlage ihrer Leistung abwägen. Gutachter, die im Laufe der Zeit ein tieferes Engagement und Verständnis für das Projekt gezeigt haben oder über klare Fachkenntnisse verfügen, können natürlich mehr Gewicht haben, wie man es in allen Lebensbereichen erwarten würde. Wenn sich ein Patch-Set auf konsenskritischen Code auswirkt, liegt die Messlatte hinsichtlich Diskussion und Peer-Review-Anforderungen viel höher, wobei zu berücksichtigen ist, dass Fehler für die breitere Community sehr kostspielig sein können. Dazu gehört auch die Umgestaltung von konsenskritischem Code. Wenn ein Patch-Set eine Änderung des Targon-Subnetzes vorschlägt, muss dies ausführlich auf dem Discord-Server und anderen Kanälen diskutiert worden sein, von einem ausführlich diskutierten BIP begleitet sein und einen allgemein weithin wahrgenommenen technischen Konsens darüber haben, dass es sich um eine lohnenswerte Änderung handelt, basierend auf der Einschätzung von die Betreuer. Dennoch begrüßt Manifold alle PRs zur Verbesserung des Subnetzes und Bittensors als Ganzes. Wir streben in jedem Intervall nach Verbesserungen und glauben, dass durch offene Kommunikation und den Austausch von Ideen Erfolg erreichbar ist.