・ ・ |
Ignite هي مكتبة عالية المستوى للمساعدة في تدريب وتقييم الشبكات العصبية في PyTorch بمرونة وشفافية.
انقر على الصورة لرؤية الكود الكامل
كود أقل من PyTorch النقي مع ضمان أقصى قدر من التحكم والبساطة
نهج المكتبة وعدم انعكاس التحكم في البرنامج - استخدم الإشعال أينما ومتى تريد
واجهة برمجة تطبيقات قابلة للتوسيع للمقاييس ومديري التجارب والمكونات الأخرى
Ignite هي مكتبة توفر ثلاث ميزات عالية المستوى:
لا مزيد من الترميز for/while
الحلقات على العصور والتكرارات. يقوم المستخدمون بإنشاء مثيلات للمحركات وتشغيلها.
from ignite . engine import Engine , Events , create_supervised_evaluator
from ignite . metrics import Accuracy
# Setup training engine:
def train_step ( engine , batch ):
# Users can do whatever they need on a single iteration
# Eg. forward/backward pass for any number of models, optimizers, etc
# ...
trainer = Engine ( train_step )
# Setup single model evaluation engine
evaluator = create_supervised_evaluator ( model , metrics = { "accuracy" : Accuracy ()})
def validation ():
state = evaluator . run ( validation_data_loader )
# print computed metrics
print ( trainer . state . epoch , state . metrics )
# Run model's validation at the end of each epoch
trainer . add_event_handler ( Events . EPOCH_COMPLETED , validation )
# Start the training
trainer . run ( training_data_loader , max_epochs = 100 )
الشيء الرائع في المعالجات هو أنها توفر مرونة لا مثيل لها (مقارنة، على سبيل المثال، بعمليات الاسترجاعات). يمكن أن تكون المعالجات أي وظيفة: على سبيل المثال، lambda، أو وظيفة بسيطة، أو طريقة فئة، وما إلى ذلك. وبالتالي، فإننا لا نطلب أن نرث من واجهة ما ونتجاوز أساليبها المجردة التي يمكن أن تؤدي إلى زيادة حجم التعليمات البرمجية الخاصة بك وتعقيدها دون داع.
trainer . add_event_handler ( Events . STARTED , lambda _ : print ( "Start training" ))
# attach handler with args, kwargs
mydata = [ 1 , 2 , 3 , 4 ]
logger = ...
def on_training_ended ( data ):
print ( f"Training is ended. mydata= { data } " )
# User can use variables from another scope
logger . info ( "Training is ended" )
trainer . add_event_handler ( Events . COMPLETED , on_training_ended , mydata )
# call any number of functions on a single event
trainer . add_event_handler ( Events . COMPLETED , lambda engine : print ( engine . state . times ))
@ trainer . on ( Events . ITERATION_COMPLETED )
def log_something ( engine ):
print ( engine . state . output )
# run the validation every 5 epochs
@ trainer . on ( Events . EPOCH_COMPLETED ( every = 5 ))
def run_validation ():
# run validation
# change some training variable once on 20th epoch
@ trainer . on ( Events . EPOCH_STARTED ( once = 20 ))
def change_training_variable ():
# ...
# Trigger handler with customly defined frequency
@ trainer . on ( Events . ITERATION_COMPLETED ( event_filter = first_x_iters ))
def log_gradients ():
# ...
يمكن تجميع الأحداث معًا لتمكين إجراء مكالمات متعددة:
@ trainer . on ( Events . COMPLETED | Events . EPOCH_COMPLETED ( every = 10 ))
def run_validation ():
# ...
الأحداث المخصصة المتعلقة باستدعاءات الخطوات السابقة والمحسنة:
from ignite . engine import EventEnum
class BackpropEvents ( EventEnum ):
BACKWARD_STARTED = 'backward_started'
BACKWARD_COMPLETED = 'backward_completed'
OPTIM_STEP_COMPLETED = 'optim_step_completed'
def update ( engine , batch ):
# ...
loss = criterion ( y_pred , y )
engine . fire_event ( BackpropEvents . BACKWARD_STARTED )
loss . backward ()
engine . fire_event ( BackpropEvents . BACKWARD_COMPLETED )
optimizer . step ()
engine . fire_event ( BackpropEvents . OPTIM_STEP_COMPLETED )
# ...
trainer = Engine ( update )
trainer . register_events ( * BackpropEvents )
@ trainer . on ( BackpropEvents . BACKWARD_STARTED )
def function_before_backprop ( engine ):
# ...
مقاييس لمختلف المهام: الدقة، والاستدعاء، والدقة، ومصفوفة الارتباك، وIoU، وما إلى ذلك، ~ 20 مقياسًا للانحدار.
يمكن للمستخدمين أيضًا إنشاء مقاييسهم بسهولة من المقاييس الموجودة باستخدام العمليات الحسابية أو طرق الشعلة.
precision = Precision ( average = False )
recall = Recall ( average = False )
F1_per_class = ( precision * recall * 2 / ( precision + recall ))
F1_mean = F1_per_class . mean () # torch mean method
F1_mean . attach ( engine , "F1" )
من النقطة:
pip install pytorch-ignite
من كوندا:
conda install ignite -c pytorch
من المصدر:
pip install git+https://github.com/pytorch/ignite
من النقطة:
pip install --pre pytorch-ignite
من conda (يقترح هذا تثبيت الإصدار الليلي pytorch بدلاً من الإصدار الثابت باعتباره تبعية):
conda install ignite -c pytorch-nightly
اسحب صورة عامل الإرساء المضمنة مسبقًا من Docker Hub وقم بتشغيلها باستخدام docker v19.03+.
docker run --gpus all -it -v $PWD :/workspace/project --network=host --shm-size 16G pytorchignite/base:latest /bin/bash
قاعدة
pytorchignite/base:latest
pytorchignite/apex:latest
pytorchignite/hvd-base:latest
pytorchignite/hvd-apex:latest
pytorchignite/msdp-apex:latest
رؤية:
pytorchignite/vision:latest
pytorchignite/hvd-vision:latest
pytorchignite/apex-vision:latest
pytorchignite/hvd-apex-vision:latest
pytorchignite/msdp-apex-vision:latest
البرمجة اللغوية العصبية:
pytorchignite/nlp:latest
pytorchignite/hvd-nlp:latest
pytorchignite/apex-nlp:latest
pytorchignite/hvd-apex-nlp:latest
pytorchignite/msdp-apex-nlp:latest
لمزيد من التفاصيل، انظر هنا.
بعض المؤشرات للبدء:
مستوحاة من torchvision/المراجع، نقدم العديد من الخطوط الأساسية القابلة للتكرار لمهام الرؤية:
سمات:
أسهل طريقة لإنشاء نصوص التدريب الخاصة بك باستخدام PyTorch-Ignite:
مشكلات GitHub: الأسئلة، وتقارير الأخطاء، وطلبات الميزات، وما إلى ذلك.
مناقشة.PyTorch، فئة "إشعال".
PyTorch-Ignite Discord Server: للدردشة مع المجتمع
مناقشات GitHub: المناقشات والأفكار والأسئلة والأجوبة المتعلقة بالمكتبة العامة وما إلى ذلك.
لقد أنشأنا نموذجًا لـ "تعليقات المستخدمين". نحن نقدر أي نوع من التعليقات، وهذه هي الطريقة التي نود أن نرى بها مجتمعنا:
شكرًا لك!
يرجى الاطلاع على إرشادات المساهمة لمزيد من المعلومات.
كما هو الحال دائما، العلاقات العامة هي موضع ترحيب :)
انظر المشاريع الأخرى في "المستخدمة من قبل"
إذا كان مشروعك ينفذ ورقة بحثية، أو يمثل حالات استخدام أخرى لم يتم تناولها في برامجنا التعليمية الرسمية، أو رمز مسابقة Kaggle، أو أن الكود الخاص بك فقط يقدم نتائج مثيرة للاهتمام ويستخدم Ignite. نود أن نضيف مشروعك إلى هذه القائمة، لذا يرجى إرسال تقرير العلاقات العامة مع وصف موجز للمشروع.
إذا كنت تستخدم PyTorch-Ignite في منشور علمي، فإننا نقدر الاستشهادات بمشروعنا.
@misc{pytorch-ignite,
author = {V. Fomin and J. Anmol and S. Desroziers and J. Kriss and A. Tejani},
title = {High-level library to help with training neural networks in PyTorch},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/pytorch/ignite}},
}
PyTorch-Ignite هو مشروع تابع لـ NumFOCUS، يتم تشغيله وصيانته بواسطة متطوعين في مجتمع PyTorch بصفتهم أفرادًا (وليس كممثلين لأصحاب العمل). راجع صفحة "نبذة عنا" للحصول على قائمة المساهمين الأساسيين. للأسئلة والمشكلات المتعلقة بالاستخدام، يرجى الاطلاع على القنوات المختلفة هنا. لجميع الأسئلة والاستفسارات الأخرى، يرجى إرسال بريد إلكتروني إلى [email protected].