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
ใน neurons/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
โปรดแทนที่สิ่งต่อไปนี้ด้วยการกำหนดค่าเฉพาะของคุณ:
- [WALLET_NAME]
- [WALLET_HOTKEY]
- [MODEL_ENDPOINT]
- [API_KEY]
- [AXON_PORT]
หมายเหตุ: การบันทึกการติดตามมีความละเอียดมาก คุณสามารถใช้ --logging.info
แทนเพื่อให้บันทึกขยายตัวน้อยลง
นอกจากนี้:
--no-force-validator-permit [TRUE/FALSE]
มีค่าเริ่มต้นเป็นเท็จเพื่อบังคับให้คำขอที่เข้ามาต้องมีใบอนุญาต ตั้งค่านี้เป็นจริงหากคุณประสบปัญหาในการรับคำขอจากเครื่องมือตรวจสอบความถูกต้องในเครือข่าย 'ทดสอบ'
เครื่องมือตรวจสอบจะทำงานผ่าน pm2 ทำให้สามารถรีสตาร์ทอัตโนมัติและอัปเดตอัตโนมัติได้ เครื่องมือตรวจสอบความถูกต้องควรทำงานบน A100 เป็นอย่างน้อย แต่ยิ่งมีขนาดใหญ่ก็ยิ่งดี เนื่องจากคลัสเตอร์ขนาดใหญ่สามารถรองรับโมเดลได้มากขึ้น เครื่องควรมีการติดตั้ง 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
เท่านั้น ตั้งค่าจุดสิ้นสุด 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 นี่เป็นเพื่อให้แน่ใจว่าโค้ดเบสของคุณตรงกับเวอร์ชันล่าสุดบน Main of the Targon Github Repository
Validator Autoupdate ถูกนำมาใช้และตั้งค่าเริ่มต้นให้ทำงานเมื่อตั้งค่าน้ำหนักแล้ว หากต้องการ ปิดใช้งาน โปรดเพิ่มแฟล็กลงในโครงสร้างบรรทัดคำสั่งของคุณ:
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --autoupdate-off
Miner Autoupdate ไม่ได้ ถูกนำมาใช้ นักขุดจะต้องตรวจสอบพื้นที่เก็บข้อมูล Targon และอัปเดตตัวเองเมื่อมีการเปิดตัวเวอร์ชันใหม่ หากสนใจใช้คุณสมบัติการอัปเดตอัตโนมัติที่ผู้ตรวจสอบใช้ โปรดทำตามขั้นตอนด้านล่าง:
หมายเหตุ : ทีมงาน Manifold Labs จะไม่ได้รับการดูแลสิ่งนี้
from targon . updater import autoupdate
if self . config . autoupdate :
autoupdate ( branch = "main" )
เป้าหมายของฮับคือการให้วิธีง่ายๆ แก่ผู้ตรวจสอบความถูกต้องในการสร้างรายได้โดยตรงจากแบนด์วิธของ Bittensor สิ่งนี้ได้รับการออกแบบมาเป็นเทมเพลตเพื่อให้ผู้ตรวจสอบความถูกต้องใช้และสร้างฮับที่มีแบรนด์ของตนเองด้วย อย่างไรก็ตาม ยังคงสนับสนุนคำขอดึงข้อมูล
หากคุณสนใจใช้งานอินสแตนซ์ Targon Hub ของคุณเอง คุณจะต้องเพิ่มแฟล็กเพิ่มเติมเพื่อบันทึกบันทึกการตอบสนองของนักขุดต่อ PostgreSQL DB
หมายเหตุ : ไม่มีการตั้งค่าสถานะหมายความว่าไม่มีฐานข้อมูล!
--database.url [DB_CONNECTION_STRING]
โปรดแทนที่สิ่งต่อไปนี้ด้วย URL การเชื่อมต่อเฉพาะของคุณ:
- [DB_CONNECTION_STRING]
ด้านล่างนี้เป็นขั้นตอนในการสร้างสตริงการเชื่อมต่อ Supabase เพื่อใช้คุณสมบัตินี้:
Connect
สีเขียวใกล้กับมุมขวาบนของหน้าจอtransaction
เป็น session
ในเมนูแบบเลื่อนลง--database.url
และสตริงการเชื่อมต่อใหม่โปรดติดต่อทีม SN4 เพื่อขอความช่วยเหลือในการตั้งค่า targon hub ในการแชท sn4 หรือความขัดแย้งของเรา
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --database.url [DB_CONNECTION_STRING]
ขณะที่เครื่องมือตรวจสอบความถูกต้องทำงาน คุณจะเริ่มเห็นบันทึกถูกเพิ่มลงในฐานข้อมูล Supabase ของคุณ นี่จะเป็นสิ่งที่ Targon Hub ของคุณจะสอบถามโดยตรง
Targon ใช้ค่าการพิสูจน์การทำงานภายในองค์กรแบบใหม่เพื่อตรวจสอบการตอบสนองของโมเดล สิ่งเหล่านี้สร้างขึ้นเช่นเดียวกับ log-probs และสามารถใช้เพื่อตรวจสอบด้วยความแม่นยำสูงว่ามีการสร้างขึ้นตามแบบจำลองที่ร้องขอหรือไม่ เราใช้สิ่งนี้ร่วมกับการตรวจสอบปัญหาบันทึกเวอร์ชันที่รวดเร็วและช้า คำตอบที่ตรวจสอบแล้วจะได้คะแนนตามความเร็วและความสม่ำเสมอของการตรวจสอบ
คนขุดแร่คือโหนดที่รับผิดชอบในการสร้างเอาต์พุตจากการสืบค้นทั้งแบบออร์แกนิกและแบบสังเคราะห์
เครื่องมือตรวจสอบความถูกต้องคือโหนดที่รับผิดชอบในการตรวจสอบเอาต์พุตของผู้ขุด เครื่องมือตรวจสอบจะส่งคำขอที่สอดคล้องกับ openai ไปยังนักขุดด้วย คนขุดแร่จะส่งการตอบกลับพร้อมกับเอาต์พุต เครื่องมือตรวจสอบจะใช้ค่าการพิสูจน์การทำงานของการตอบสนองเพื่อตรวจสอบว่าการตอบสนองของนักขุดแต่ละคนนั้นถูกต้องหรือไม่ เครื่องมือตรวจสอบจะเก็บคะแนนของเวลาตอบสนองของนักขุดแต่ละคน และใช้ค่าเฉลี่ยเพื่อกำหนดคะแนนในแต่ละยุค
เครื่องมือตรวจสอบสามารถสอบถามนักขุดได้โดยตรงโดยใช้แพ็คเกจ openai และส่วนหัวของ Epistula ด้านล่างนี้เป็นต้นแบบสำหรับการสืบค้นคนงานเหมืองในหลาม
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 ยินดีต้อนรับ PR ทั้งหมดเพื่อปรับปรุงเครือข่ายย่อยและ Bittensor โดยรวม เรามุ่งมั่นที่จะปรับปรุงในทุกช่วงเวลาและเชื่อว่าผ่านการสื่อสารที่เปิดกว้างและแบ่งปันความคิดจะบรรลุความสำเร็จได้