Targon (Bittensor Subnet 4) es un mecanismo de verificación determinista que se utiliza para incentivar a los mineros a ejecutar puntos finales compatibles con openai y atender consultas sintéticas y orgánicas.
AVISO: Al utilizar este software, debe aceptar los Términos y acuerdos proporcionados en el documento de términos y condiciones. Al descargar y ejecutar este software, usted acepta implícitamente estos términos y condiciones.
Para validadores recomendamos un 8xA100, aunque también se podría utilizar un 1xA100. Planeamos centrarnos en reducir estos costos en las próximas actualizaciones.
Para los mineros, los A100 o H100 son opciones comunes. La evaluación comparativa depende del minero para determinar qué GPU funciona mejor para sus optimizaciones.
Para ejecutar Targon, necesitará instalar PM2 y el paquete Targon. Las siguientes instrucciones se aplican sólo a los sistemas operativos Ubuntu. Para su sistema operativo específico, consulte la documentación oficial.
Para instalar o actualizar nvm, debe ejecutar el script de instalación. Para hacerlo, puede descargar y ejecutar el script manualmente o usar el siguiente comando cURL o Wget:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Al ejecutar cualquiera de los comandos anteriores, se descarga un script y lo ejecuta. El script clona el repositorio nvm para /.nvm e intenta agregar las líneas fuente del siguiente fragmento al archivo de perfil correcto ( /.bash_profile, ~/.zshrc, ~/.profile o ~/.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
Ya ha instalado PM2.
git clone https://github.com/manifold-inc/targon.git
cd targon
python3 -m pip install -e .
Ya has instalado Targon. Ahora puedes ejecutar un validador o un minero.
Antes de iniciar o registrar su minero en Targon, primero querrá ejecutar VLLM sirviendo las diferentes imágenes que solicitan los validadores. Puede encontrar una lista en https://stats.sybil.com/stats/validator en la pestaña en vivo. Cuantos más modelos ejecute, mayor será su incentivo.
VLLM es el motor recomendado, sin embargo, no es obligatorio. Si está utilizando VLLM, asegúrese de incluir el indicador --return-tokens-as-token-ids
; de lo contrario, sus respuestas fallarán.
Una vez que tenga uno (o varios) modelos en ejecución, modifique el código de minero predeterminado para representar la instancia VLLM adecuada en cada solicitud. Los verificadores incluirán el encabezado X-Targon-Model
para que el nodo minero no necesite analizar el cuerpo real.
En el script miner.py
encontrará una función llamada list_models
. Para servir varios modelos debes:
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
y create_completion
en neurons/miner.py para enrutarlos al servidor ascendente vllm apropiado según el modelo (que se encuentra en los encabezados o en el parámetro del modelo de carga útil de la solicitud).Aquí hay una pista/fragmento de código incompleto para ayudarlo a comenzar:
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}"
Una vez que esto esté completo, estará listo para continuar iniciando su nodo minero.
Ejecutar un minero a través de PM2 requerirá que se esté ejecutando la instancia 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
Reemplace lo siguiente con su configuración específica:
- [WALLET_NAME]
- [WALLET_HOTKEY]
- [MODEL_ENDPOINT]
- [API_KEY]
- [AXON_PORT]
NOTA: El registro de seguimiento es muy detallado. Puede utilizar --logging.info
en su lugar para reducir la sobrecarga de registros.
Además:
--no-force-validator-permit [TRUE/FALSE]
El valor predeterminado es falso para forzar que las solicitudes entrantes tengan un permiso. Establezca esto en verdadero si tiene problemas para recibir solicitudes de validadores en la red de "prueba".
Los validadores simplemente se ejecutan a través de pm2, lo que permite reinicios y actualizaciones automáticas. Se debe ejecutar un validador al menos en un A100, pero cuanto más grande, mejor, ya que los clústeres más grandes pueden manejar más modelos. La máquina debe tener instalado nvidia-smi/cuda junto con la ventana acoplable.
No se necesita instancia de vllm
Instancia de validador:
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME]
Reemplace lo siguiente con su configuración específica:
- [WALLET_NAME]
default
o config
.endpoint
: el valor predeterminado es https://targon.sybil.com/api/models
. Esto imitará el validador múltiple.default
: solo ejecute NousResearch/Meta-Llama-3.1-8B-Instructconfig
: analiza un archivo de texto llamado models.txt
con una lista de modelos separados por nuevas líneasendpoint
. Establece el punto final de la API para hacer ping para obtener una lista de modelos. El valor predeterminado es targon hub.Ejemplo de archivo de configuración de modelo
models.txt
NousResearch/Meta-Llama-3.1-8B-Instruct NousResearch/Meta-Llama-3.1-70B-Instruct NousResearch/Meta-Llama-3.1-405B-Instruct
La actualización automática se implementa en targon/utils.py. Esto es para garantizar que su código base coincida con la última versión en Principal del Repositorio Targon Github.
La actualización automática del validador está implementada y de forma predeterminada se ejecuta una vez que se han establecido los pesos. Para deshabilitarlo , agregue la bandera a la compilación de su línea de comando:
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --autoupdate-off
Miner Autoupdate no está implementado. Los mineros deberán consultar el repositorio de Targon y actualizarse a medida que se publiquen nuevas versiones. Si está interesado en utilizar la función de actualización automática que utilizan los validadores, siga los pasos a continuación:
NOTA : Esto no será mantenido por el equipo de Manifold Labs.
from targon . updater import autoupdate
if self . config . autoupdate :
autoupdate ( branch = "main" )
El objetivo del centro es brindar a los validadores una forma sencilla de generar ingresos directamente a partir de su ancho de banda bittensor. Esto está diseñado como una plantilla para que los validadores tomen y creen sus propios centros de marca; sin embargo, aún se recomiendan las solicitudes de extracción.
Si está interesado en ejecutar su propia instancia de Targon Hub, deberá agregar un indicador adicional para guardar los registros de las respuestas de los mineros en una base de datos PostgreSQL.
NOTA : ¡Sin bandera significa que no hay base de datos!
--database.url [DB_CONNECTION_STRING]
Reemplace lo siguiente con su URL de conexión específica:
- [DB_CONNECTION_STRING]
A continuación se detallan los pasos para crear una cadena de conexión de Supabase para utilizar esta función:
Connect
cerca de la parte superior derecha de la pantalla.transaction
a session
en el menú desplegable--database.url
y cadena de conexiónComuníquese con el equipo de SN4 para obtener ayuda para configurar Targon Hub en el chat de SN4 o en nuestro Discord.
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --database.url [DB_CONNECTION_STRING]
A medida que se ejecuta su validador, comenzará a ver registros que se agregan a su base de datos de Supabase. Esto será directamente lo que consultará su Targon Hub.
Targon utiliza un valor de prueba de trabajo interno novedoso para verificar las respuestas del modelo. Estos se generan como log-probs y se pueden usar para verificar con alta precisión que se generó una respuesta con el modelo solicitado. Usamos esto en combinación con una versión rápida y lenta de verificación de prueba de registro. Las respuestas verificadas se califican según la velocidad y la coherencia de la verificación.
Un minero es un nodo que se encarga de generar una salida a partir de una consulta, tanto orgánica como sintética.
Un validador es un nodo responsable de verificar la salida de un minero. El validador enviará una solicitud compatible con openai a un minero con. Luego, el minero enviará una respuesta con el resultado. Luego, el validador utilizará los valores de prueba de trabajo de la respuesta para verificar que la respuesta de cada minero sea precisa. Los validadores llevarán la puntuación del tiempo de respuesta de cada minero y utilizarán sus promedios para asignar puntuaciones a cada época.
Los validadores pueden consultar a los mineros directamente utilizando cualquier paquete openai y encabezados de Epistula. A continuación se muestra un texto estándar para consultar a un minero en 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 )
]
}
),
)
Los mantenedores del proyecto se reservan el derecho de sopesar las opiniones de los revisores pares utilizando el sentido común y también pueden sopesar en función del mérito. Los revisores que han demostrado un compromiso y una comprensión más profundos del proyecto a lo largo del tiempo o que tienen una experiencia clara en el campo pueden, naturalmente, tener más peso, como cabría esperar en todos los ámbitos de la vida. Cuando un conjunto de parches afecta el código crítico para el consenso, el listón será mucho más alto en términos de discusión y requisitos de revisión por pares, teniendo en cuenta que los errores podrían ser muy costosos para la comunidad en general. Esto incluye la refactorización del código crítico para el consenso. Cuando un conjunto de parches propone cambiar la subred Targon, debe haber sido discutido extensamente en el servidor de Discord y otros canales, estar acompañado de un BIP ampliamente discutido y tener un consenso técnico generalmente percibido de ser un cambio que vale la pena basado en el juicio de los mantenedores. Dicho esto, Manifold da la bienvenida a todas las relaciones públicas para mejorar la subred y Bittensor en su conjunto. Nos esforzamos por mejorar en cada intervalo y creemos que a través de la comunicación abierta y el intercambio de ideas el éxito será posible.