Targon (Bittensor Subnet 4) — это детерминированный механизм проверки, который используется для стимулирования майнеров запускать конечные точки, совместимые с openai, и обслуживать синтетические и органические запросы.
ВНИМАНИЕ. Используя это программное обеспечение, вы должны согласиться с Условиями и положениями, изложенными в документе «Условия использования». Загружая и запуская это программное обеспечение, вы безоговорочно соглашаетесь с этими условиями.
Для валидаторов мы рекомендуем 8xA100, хотя можно также использовать 1xA100. Мы планируем сосредоточиться на снижении этих затрат в следующих обновлениях.
Для майнеров обычным выбором являются A100 или H100. Майнер должен провести бенчмаркинг, чтобы определить, какой графический процессор лучше всего подходит для его оптимизации.
Чтобы запустить 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, сначала вам нужно запустить 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
в нейронах/miner.py для маршрутизации на соответствующий вышестоящий сервер 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_PORT]
ПРИМЕЧАНИЕ. Журнал трассировки очень подробный. Вместо этого вы можете использовать --logging.info
, чтобы меньше раздувать журналы.
Кроме того:
--no-force-validator-permit [TRUE/FALSE]
по умолчанию установлено значение false, чтобы заставить входящие запросы иметь разрешение. Установите для этого параметра значение true, если у вас возникли проблемы с получением запросов от валидаторов в «тестовой» сети.
Валидаторы просто запускаются через pm2, обеспечивая автоматический перезапуск и автоматическое обновление. Валидатор должен быть запущен как минимум на A100, но чем больше, тем лучше, поскольку более крупные кластеры могут обрабатывать больше моделей. На машине должен быть установлен 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-Instruct.config
: проанализировать текстовый файл с именем models.txt
со списком моделей, разделенных символами новой строки.endpoint
. Устанавливает конечную точку API для проверки связи для списка моделей. По умолчанию используется концентратор таргона.Пример файла конфигурации модели
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. Это необходимо для того, чтобы ваша кодовая база соответствовала последней версии в Main репозитория Targon Github.
Автоматическое обновление валидатора реализовано и по умолчанию запускается после установки весов. Чтобы отключить , добавьте флаг в сборку командной строки:
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 за помощью в настройке targon Hub в чате sn4 или в нашем Discord.
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, он должен быть широко обсужден на сервере Discord и других каналах, сопровождаться широко обсуждаемым BIP и иметь общепризнанный технический консенсус о целесообразности изменения, основанный на суждении ремонтники. При этом Manifold приветствует все пиар-сообщения, направленные на улучшение подсети и Bittensor в целом. Мы стремимся к совершенствованию на каждом этапе и верим, что благодаря открытому общению и обмену идеями успех будет достижим.