Targon (Bittensor Subnet 4) هي آلية تحقق حتمية تُستخدم لتحفيز القائمين بالتعدين على تشغيل نقاط النهاية المتوافقة مع openai وتقديم الاستعلامات الاصطناعية والعضوية.
إشعار: باستخدام هذا البرنامج، يجب عليك الموافقة على الشروط والاتفاقيات المنصوص عليها في وثيقة الشروط والأحكام. عن طريق تنزيل هذا البرنامج وتشغيله، فإنك توافق ضمنيًا على هذه الشروط والأحكام.
بالنسبة لأجهزة التحقق من الصحة، نوصي باستخدام 8xA100، على الرغم من إمكانية استخدام 1xA100 أيضًا. ونحن نخطط للتركيز على خفض هذه التكاليف في التحديثات القادمة.
بالنسبة لعمال المناجم، تعد A100 أو H100s من الخيارات الشائعة. إن قياس الأداء أمر متروك لعامل التعدين لتحديد وحدة معالجة الرسومات التي تعمل بشكل أفضل لتحسيناتها.
لتشغيل 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]
- [WALET_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-Instructconfig
: تحليل ملف نصي يسمى models.txt
مع قائمة النماذج مفصولة بأسطر جديدةendpoint
. يضبط نقطة نهاية واجهة برمجة التطبيقات على 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. هذا للتأكد من أن قاعدة التعليمات البرمجية الخاصة بك تتطابق مع أحدث إصدار موجود في مستودع 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 في دردشة sn4 أو خلافنا
pm2 start neurons/validator.py --name validator --interperter python3 -- --wallet.name [WALLET_NAME] --database.url [DB_CONNECTION_STRING]
أثناء تشغيل أداة التحقق من الصحة، ستبدأ في رؤية السجلات تتم إضافتها إلى قاعدة بيانات Supabase الخاصة بك. سيكون هذا هو ما سيستفسر عنه Targon Hub مباشرةً.
يستخدم Targon قيمة إثبات عمل جديدة داخلية للتحقق من استجابات النموذج. يتم إنشاؤها تمامًا مثل سجل 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 الفرعية، فيجب أن تتم مناقشتها على نطاق واسع على خادم Discord والقنوات الأخرى، وأن تكون مصحوبة بـ BIP الذي تمت مناقشته على نطاق واسع ولديها إجماع فني متصور على نطاق واسع بشكل عام على أنه تغيير جدير بالاهتمام بناءً على حكم المشرفين. ومع ذلك، يرحب Manifold بجميع العلاقات العامة من أجل تحسين الشبكة الفرعية وBittensor ككل. نحن نسعى جاهدين للتحسين في كل فترة ونؤمن أنه من خلال التواصل المفتوح وتبادل الأفكار سيكون النجاح قابلاً للتحقيق.