تعمل TASO على تحسين الرسوم البيانية الحسابية لنماذج DNN باستخدام تحويلات الرسم البياني التي تم إنشاؤها تلقائيًا والتي تم التحقق منها. بالنسبة لنموذج DNN التعسفي، تستخدم TASO تحويلات الرسم البياني التي تم إنشاؤها تلقائيًا لبناء مساحة بحث كبيرة للرسوم البيانية الحسابية المحتملة التي تعادل نموذج DNN الأصلي. تستخدم TASO خوارزمية بحث قائمة على التكلفة لاستكشاف المساحة، وتكتشف تلقائيًا الرسوم البيانية الحسابية المحسنة للغاية. يتفوق TASO على مُحسِّنات الرسم البياني في أطر التعلم العميق الحالية بما يصل إلى 3x.
راجع تعليمات تثبيت TASO من المصدر. نحن نوفر أيضًا صور عامل إرساء مُصممة مسبقًا مع جميع التبعيات المثبتة مسبقًا.
يمكن لـ TASO تحسين أي نماذج DNN مدربة مسبقًا مباشرةً بتنسيقات الرسوم البيانية ONNX وTensorFlow وPyTorch. توفر TASO أيضًا واجهة Python لتحسين بنيات DNN التعسفية. تدعم TASO تصدير الرسوم البيانية الحسابية المحسنة إلى ONNX، والتي يمكن استخدامها مباشرة كمدخلات بواسطة معظم أطر التعلم العميق الحالية.
يمكن لـ TASO تحسين نماذج ONNX المدربة مسبقًا بشكل مباشر، ويمكن القيام بذلك في بضعة أسطر فقط من كود Python. يوضح مقتطف الكود التالي كيفية تحميل نموذج DNN مُدرب مسبقًا من ONNX، وتحسين النموذج، وحفظ النموذج المُحسّن في ملف ONNX.
import taso
import onnx
old_model = taso . load_onnx ( "/path/to/load/onnx/model" )
taso_graph = taso . optimize ( old_model )
new_model = taso . export_onnx ( taso_graph )
onnx . save ( new_model , "/path/to/save/new/onnx/model" )
يتمتع النموذج المُحسّن بنفس دقة النموذج الأصلي ويمكن استخدامه مباشرة بواسطة أطر التعلم العميق الحالية. تتوفر بعض ملفات ONNX الأصلية والمحسّنة بواسطة TASO في مجلد onnx
.
يمكن لـ TASO تحسين نماذج TensorFlow عن طريق تحويل النموذج إلى ONNX باستخدام tf2onnx.
tf2onnx
من PyPi كما يلي أو من المصدر. pip install -U tf2onnx
tf2onnx
. python -m tf2onnx.convert
--saved-model /path/to/tensorflow/saved/model
--output /path/to/onnx/model/file
يحتوي PyTorch على دعم مدمج لـ ONNX كجزء من حزمة torch.onnx. يمكن لـ TASO تحسين نماذج PyTorch مباشرةً بتنسيق ONNX.
يمكن لـ TASO أيضًا تحسين بنيات DNN التعسفية باستخدام واجهة TASO Python. يقوم مقتطف التعليمات البرمجية التالي بإنشاء الرسم البياني لـ DNN الموجود في أقصى اليسار والموضح في الشكل. يقوم TASO تلقائيًا بإجراء سلسلة من التحويلات غير التافهة، ويكتشف في النهاية الرسم البياني لـ DNN الموجود في أقصى اليمين، وهو أسرع بمقدار 1.3x على وحدة معالجة الرسومات V100. تتوفر المزيد من أمثلة DNN في مجلد examples
.
import taso
import onnx
#Build DNN model
graph = taso . new_graph ()
input = graph . new_input ( dims = ( 1 , 128 , 56 , 56 ))
w1 = graph . new_weight ( dims = ( 128 , 128 , 3 , 3 ))
w2 = graph . new_weight ( dims = ( 128 , 128 , 1 , 1 ))
w3 = graph . new_weight ( dims = ( 128 , 128 , 3 , 3 ))
left = graph . conv2d ( input = input , weight = w1 , strides = ( 1 , 1 ), padding = "SAME" , activation = "RELU" )
left = graph . conv2d ( input = left , weight = w3 , strides = ( 1 , 1 ), padding = "SAME" )
right = graph . conv2d ( input = input , weight = w2 , strides = ( 1 , 1 ), padding = "SAME" , activation = "RELU" )
output = graph . add ( left , right )
output = graph . relu ( output )
#Optimize DNN model
new_graph = taso . optimize ( graph )
onnx_model = taso . export_onnx ( new_graph )
onnx . save ( onnx_model , "/path/to/save/new/onnx/model" )
زيهاو جيا، أوديد بادون، جيمس توماس، تود وارسوسكي، ماتي زاهاريا، وأليكس أيكن. TASO: تحسين حساب التعلم العميق من خلال الإنشاء الآلي لبدائل الرسم البياني. في وقائع ندوة مبادئ أنظمة التشغيل (SOSP)، أونتاريو، كندا، أكتوبر 2019.
زيهاو جيا، وجيمس توماس، وتود وارسزاوسكي، ومينجيو جاو، وماتي زاهاريا، وأليكس أيكن. تحسين حساب DNN من خلال بدائل الرسم البياني المريحة. في وقائع مؤتمر الأنظمة والتعلم الآلي (SysML)، بالو ألتو، كاليفورنيا، أبريل 2019.