Targon(Bittensor Subnet 4)은 채굴자가 openai 호환 엔드포인트를 실행하고 합성 및 유기 쿼리를 제공하도록 장려하는 데 사용되는 결정론적 검증 메커니즘입니다.
주의사항: 이 소프트웨어를 사용하려면 이용 약관 문서에 제공된 이용 약관에 동의해야 합니다. 이 소프트웨어를 다운로드하고 실행하면 귀하는 이 이용 약관에 암묵적으로 동의하게 됩니다.
유효성 검사기의 경우 8xA100을 권장하지만 1xA100도 사용할 수 있습니다. 우리는 향후 업데이트에서 이러한 비용을 줄이는 데 중점을 둘 계획입니다.
광부에게는 A100 또는 H100이 일반적인 선택입니다. 벤치마킹은 어떤 GPU가 최적화에 가장 적합한지 결정하는 광부에게 달려 있습니다.
Targon을 실행하려면 PM2와 Targon 패키지를 설치해야 합니다. 다음 지침은 Ubuntu OS에만 적용됩니다. 특정 OS에 대해서는 공식 문서를 참조하세요.
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
메서드를 업데이트합니다.다음은 시작하는 데 도움이 되는 힌트/불완전한 코드 조각입니다.
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
다음을 특정 구성으로 바꾸십시오.
- [WALLET_NAME]
- [월렛_핫키]
- [MODEL_ENDPOINT]
- [API_KEY]
- [AXON_PORT]
참고: 추적 로깅은 매우 장황합니다. 로그 팽창을 줄이기 위해 대신 --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]
다음을 특정 구성으로 바꾸십시오.
- [WALLET_NAME]
default
또는 config
중 하나일 수 있습니다.endpoint
: 기본값은 https://targon.sybil.com/api/models
입니다. 이는 매니폴드 유효성 검사기를 모방합니다.default
: NousResearch/Meta-Llama-3.1-8B-Instruct만 실행config
: 개행 문자로 구분된 모델 목록을 사용하여 models.txt
라는 텍스트 파일을 구문 분석합니다.endpoint
인 경우에만 사용됩니다. 모델 목록에 대해 ping을 수행하도록 API 끝점을 설정합니다. 기본값은 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 Repository의 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 DB에 저장하기 위한 추가 플래그를 추가해야 합니다.
참고 : 플래그가 없다는 것은 데이터베이스가 없다는 뜻입니다!
--database.url [DB_CONNECTION_STRING]
다음을 특정 연결 URL로 바꾸십시오.
- [DB_CONNECTION_STRING]
다음은 이 기능을 활용하기 위해 Supabase 연결 문자열을 만드는 단계입니다.
Connect
버튼을 클릭합니다.transaction
에서 session
으로 변경합니다.--database.url
플래그와 연결 문자열을 사용하여 유효성 검사기를 시작합니다.sn4 채팅이나 디스코드에서 targon 허브를 설정하는 데 도움이 필요하면 SN4 팀에 문의하세요.
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을 환영합니다. 우리는 매 순간 개선을 위해 노력하고 있으며 열린 의사소통과 아이디어 공유를 통해 성공할 수 있다고 믿습니다.