Sparsezoo عبارة عن مستودع متزايد باستمرار من نماذج متشابكة (تم تقليمها ومقبلًا) مع وصفات متشابكة للشبكات العصبية. إنه يبسط ويسرع وقتك في بناء نماذج التعلم العميق الأداء مع مجموعة من النماذج والوصفات المحسنة للاستدلال إلى النموذج الأولي من. اقرأ المزيد عن التباين.
متوفر عبر API واستضافته في السحابة ، يحتوي sparsezoo على كل من خط الأساس والموديلات التي يتم تنشيطها بدرجات مختلفة من أداء الاستدلال مقابل استرداد فقدان خط الأساس. تتيح لك الأساليب التي تعتمد على الوصفة المبنية حول خوارزميات التباين باستخدام النماذج على النحو المعطى ، أو نقل التعلم من النماذج إلى مجموعات البيانات الخاصة ، أو نقل الوصفات إلى بنياتك.
يحتوي مستودع GitHub على رمز Python API للتعامل مع الاتصال والمصادقة على السحابة.
AI التوليدي
يتم اختبار هذا المستودع على Python 3.8-3.11 ، وأنظمة Linux/Debian. يوصى بالتثبيت في بيئة افتراضية للحفاظ على نظامك بالترتيب.
تثبيت مع PIP باستخدام:
pip install sparsezooتمكنك API Python API Sparsezoo من البحث وتنزيل النماذج المتشابكة. وترد أمثلة رمز أدناه. نشجع المستخدمين على تحميل نماذج sparsezoo عن طريق نسخ كعب مباشرة من صفحة نموذج.
Model هو كائن أساسي يعمل كواجهة رئيسية مع مكتبة sparsezoo. إنه يمثل نموذجًا متناثرًا ، إلى جانب جميع أدلة وملفاته.
from sparsezoo import Model
stub = "zoo:cv/classification/resnet_v1-50/pytorch/sparseml/imagenet/pruned95_quant-none"
model = Model ( stub )
print ( str ( model ))
>> Model ( stub = zoo : cv / classification / resnet_v1 - 50 / pytorch / sparseml / imagenet / pruned95_quant - none ) from sparsezoo import Model
directory = ".../.cache/sparsezoo/eb977dae-2454-471b-9870-4cf38074acf0"
model = Model ( directory )
print ( str ( model ))
>> Model ( directory = ... / . cache / sparsezoo / eb977dae - 2454 - 471 b - 9870 - 4 cf38074acf0 ) ما لم ينص على خلاف ذلك ، يتم حفظ النموذج الذي تم إنشاؤه من كعب sparsezoo إلى دليل ذاكرة التخزين المؤقت المحلي sparsezoo. يمكن تجاوز هذا عن طريق تمرير وسيطة download_path الاختيارية إلى المُنشئ:
from sparsezoo import Model
stub = "zoo:cv/classification/resnet_v1-50/pytorch/sparseml/imagenet/pruned95_quant-none"
download_directory = "./model_download_directory"
model = Model ( stub , download_path = download_directory ) بمجرد تهيئة النموذج من كعب ، يمكن تنزيله إما عن طريق استدعاء طريقة download() أو عن طريق استدعاء خاصية path . كلا المسارين عالميين لجميع الملفات في sparsezoo. سيؤدي استدعاء خاصية path دائمًا إلى تنزيل الملف ما لم يتم تنزيل الملف بالفعل.
# method 1
model . download ()
# method 2
model_path = model . path ندعو طريقة available_files لتفقد الملفات الموجودة في نموذج sparsezoo. ثم ، نختار ملفًا عن طريق الاتصال بالسمة المناسبة:
model . available_files
>> { 'training' : Directory ( name = training ),
>> 'deployment' : Directory ( name = deployment ),
>> 'sample_inputs' : Directory ( name = sample_inputs . tar . gz ),
>> 'sample_outputs' : { 'framework' : Directory ( name = sample_outputs . tar . gz )},
>> 'sample_labels' : Directory ( name = sample_labels . tar . gz ),
>> 'model_card' : File ( name = model . md ),
>> 'recipes' : Directory ( name = recipe ),
>> 'onnx_model' : File ( name = model . onnx )}بعد ذلك ، قد نلقي نظرة فاحصة على محتويات نموذج sparsezoo:
model_card = model . model_card
print ( model_card )
>> File ( name = model . md ) model_card_path = model . model_card . path
print ( model_card_path )
>> ... / . cache / sparsezoo / eb977dae - 2454 - 471 b - 9870 - 4 cf38074acf0 / model . md بشكل عام ، يشارك كل ملف في نموذج sparsezoo مجموعة من السمات: name ، path ، URL ، parent :
name يخدم كمعرف للملف/الدليلpath إلى موقع الملف/الدليلURL عنوان خادم الملف/الدليل المعنيparent إلى موقع الدليل الأصل للملف/الدليل المعني الدليل هو نوع فريد من الملفات التي تحتوي على ملفات أخرى. لهذا السبب ، يحتوي على سمة files إضافية.
print ( model . onnx_model )
>> File ( name = model . onnx )
print ( f"File name: { model . onnx_model . name } n "
f"File path: { model . onnx_model . path } n "
f"File URL: { model . onnx_model . url } n "
f"Parent directory: { model . onnx_model . parent_directory } " )
>> File name : model . onnx
>> File path : ... / . cache / sparsezoo / eb977dae - 2454 - 471 b - 9870 - 4 cf38074acf0 / model . onnx
>> File URL : https : // models . neuralmagic . com / cv - classification / ...
>> Parent directory : ... / . cache / sparsezoo / eb977dae - 2454 - 471 b - 9870 - 4 cf38074acf0 print ( model . recipes )
>> Directory ( name = recipe )
print ( f"File name: { model . recipes . name } n "
f"Contains: { [ file . name for file in model . recipes . files ] } n "
f"File path: { model . recipes . path } n "
f"File URL: { model . recipes . url } n "
f"Parent directory: { model . recipes . parent_directory } " )
>> File name : recipe
>> Contains : [ 'recipe_original.md' , 'recipe_transfer-classification.md' ]
>> File path : / home / user / . cache / sparsezoo / eb977dae - 2454 - 471 b - 9870 - 4 cf38074acf0 / recipe
>> File URL : None
>> Parent directory : / home / user / . cache / sparsezoo / eb977dae - 2454 - 471 b - 9870 - 4 cf38074acf0قد يحتوي نموذج sparsezoo على عدة نقاط تفتيش. قد يحتوي النموذج على نقطة تفتيش تم حفظها قبل أن يتم تحديد كمية النموذج - سيتم استخدام نقطة التفتيش لتعلم النقل. قد تم حفظ نقطة تفتيش أخرى بعد خطوة القياس الكمي - عادة ما يتم استخدامها مباشرة للاستدلال.
قد تختلف الوصفات أيضًا حسب حالة الاستخدام. قد نرغب في الوصول إلى وصفة تم استخدامها لتشويه النموذج الكثيف ( recipe_original ) أو الصفة التي تمكننا من النقل المتفرّب من النموذج المتشابك بالفعل ( recipe_transfer ).
هناك طريقتان للوصول إلى تلك الملفات المحددة.
available_recipes = model . recipes . available
print ( available_recipes )
>> [ 'original' , 'transfer-classification' ]
transfer_recipe = model . recipes [ "transfer-classification" ]
print ( transfer_recipe )
>> File ( name = recipe_transfer - classification . md )
original_recipe = model . recipes . default # recipe defaults to `original`
original_recipe_path = original_recipe . path # downloads the recipe and returns its path
print ( original_recipe_path )
>> ... / . cache / sparsezoo / eb977dae - 2454 - 471 b - 9870 - 4 cf38074acf0 / recipe / recipe_original . md بشكل عام ، نتوقع أن يتم تضمين نقاط التفتيش التالية في النموذج:
checkpoint_prepruningcheckpoint_postpruningcheckpoint_preqatcheckpoint_postqat نقطة التفتيش التي يتخلف عنها النموذج هي حالة preqat (قبل خطوة القياس الكمي مباشرة).
from sparsezoo import Model
stub = "zoo:nlp/question_answering/bert-base/pytorch/huggingface/squad/pruned_quant_3layers-aggressive_84"
model = Model ( stub )
available_checkpoints = model . training . available
print ( available_checkpoints )
>> [ 'preqat' ]
preqat_checkpoint = model . training . default # recipe defaults to `preqat`
preqat_checkpoint_path = preqat_checkpoint . path # downloads the checkpoint and returns its path
print ( preqat_checkpoint_path )
>> ... / . cache / sparsezoo / 0857 c6f2 - 13 c1 - 43 c9 - 8 db8 - 8 f89a548dccd / training
[ print ( file . name ) for file in preqat_checkpoint . files ]
>> vocab . txt
>> special_tokens_map . json
>> pytorch_model . bin
>> config . json
>> training_args . bin
>> tokenizer_config . json
>> trainer_state . json
>> tokenizer . json يمكنك أيضًا طلب نوع وصفة/نقطة تفتيش محددة مباشرة عن طريق إلحاق وسيطات استعلام عنوان URL المناسبة إلى كعب:
from sparsezoo import Model
stub = "zoo:cv/classification/resnet_v1-50/pytorch/sparseml/imagenet/pruned95_quant-none?recipe=transfer"
model = Model ( stub )
# Inspect which files are present.
# Note that the available recipes are restricted
# according to the specified URL query arguments
print ( model . recipes . available )
>> [ 'transfer-classification' ]
transfer_recipe = model . recipes . default # Now the recipes default to the one selected by the stub string arguments
print ( transfer_recipe )
>> File ( name = recipe_transfer - classification . md )يجوز للمستخدم أن يطلب بسهولة مجموعة من البيانات التي تمثل مدخلات ومخرجات النموذج.
sample_data = model . sample_batch ( batch_size = 10 )
print ( sample_data [ 'sample_inputs' ][ 0 ]. shape )
>> ( 10 , 3 , 224 , 224 ) # (batch_size, num_channels, image_dim, image_dim)
print ( sample_data [ 'sample_outputs' ][ 0 ]. shape )
>> ( 10 , 1000 ) # (batch_size, num_classes) تمكن Function search_models المستخدم من تصفية محتويات مستودع sparsezoo بسرعة للعثور على كعب الاهتمام:
from sparsezoo import search_models
args = {
"domain" : "cv" ,
"sub_domain" : "segmentation" ,
"architecture" : "yolact" ,
}
models = search_models ( ** args )
[ print ( model ) for model in models ]
>> Model ( stub = zoo : cv / segmentation / yolact - darknet53 / pytorch / dbolya / coco / pruned82_quant - none )
>> Model ( stub = zoo : cv / segmentation / yolact - darknet53 / pytorch / dbolya / coco / pruned90 - none )
>> Model ( stub = zoo : cv / segmentation / yolact - darknet53 / pytorch / dbolya / coco / base - none ) يمكن للمستخدمين تحديد الدليل الذي سيتم حفظ النماذج (مؤقتًا أثناء التنزيل) وسيتم حفظ بيانات الاعتماد المطلوبة في جهاز العمل الخاص بك. SPARSEZOO_MODELS_PATH هو المسار الذي سيتم فيه حفظ النماذج التي تم تنزيلها مؤقتًا. الافتراضي ~/.cache/sparsezoo/ SPARSEZOO_CREDENTIALS_PATH هو المسار الذي سيتم فيه حفظ credentials.yaml . افتراضي ~/.cache/sparsezoo/
بالإضافة إلى واجهات برمجة تطبيقات Python ، يتم تثبيت نقطة إدخال برنامج Console Script مع حزمة sparsezoo . هذا يتيح التفاعل السهل مباشرة من وحدة التحكم/المحطة.
تنزيل مساعدة القيادة
sparsezoo.download -h
تنزيل نموذج RESNET-50
sparsezoo.download zoo:cv/classification/resnet_v1-50/pytorch/sparseml/imagenet/base-none
قم بتنزيل نموذج Resnet-50 المشقوق والكمي
sparsezoo.download zoo:cv/classification/resnet_v1-50/pytorch/sparseml/imagenet/pruned_quant-moderateمساعدة أمر البحث
sparsezoo search -h
البحث عن جميع نماذج Mobilenetv1 تصنيف في مجال رؤية الكمبيوتر
sparsezoo search --domain cv --sub-domain classification --architecture mobilenet_v1
البحث عن جميع طرز Resnet-50
sparsezoo search --domain cv --sub-domain classification
--architecture resnet_v1 --sub-architecture 50لقراءة أكثر تعمقا ، تحقق من وثائق sparsezoo.
يتم استضافة التصميمات الرسمية على PYPI
بالإضافة إلى ذلك ، يمكن العثور على مزيد من المعلومات عبر إصدارات GitHub.
تم ترخيص المشروع بموجب إصدار ترخيص Apache 2.0.
نحن نقدر المساهمات في الكود والأمثلة والتكامل والوثائق وكذلك تقارير الأخطاء وطلبات الميزات! تعلم كيف هنا.
للحصول على مساعدة المستخدم أو أسئلة حول sparsezoo ، قم بالتسجيل أو تسجيل الدخول إلى Slack Magic Community Slack . نحن ننمو عضو المجتمع من قبل عضو وسعيد رؤيتك هناك. يمكن أيضًا نشر الأخطاء أو طلبات الميزات أو الأسئلة الإضافية في قائمة انتظار قضية GitHub.
يمكنك الحصول على أحدث الأخبار ، ودعوات الحدث والمناسبات ، والأوراق البحثية ، وغيرها من الحكايات أداء ML من خلال الاشتراك في مجتمع السحر العصبي.
لمزيد من الأسئلة العامة حول السحر العصبي ، يرجى ملء هذا النموذج.