محادثة | حالة بناء ويندوز | حالة بناء لينكس |
---|---|---|
مجموعة أدوات Microsoft المعرفية (https://cntk.ai) هي مجموعة أدوات موحدة للتعلم العميق تصف الشبكات العصبية كسلسلة من الخطوات الحسابية عبر رسم بياني موجه. في هذا الرسم البياني الموجه، تمثل العقد الطرفية قيم الإدخال أو معلمات الشبكة، بينما تمثل العقد الأخرى عمليات المصفوفة بناءً على مدخلاتها. يتيح CNTK للمستخدمين إدراك ودمج أنواع النماذج الشائعة بسهولة مثل شبكات DNN ذات التغذية الأمامية والشبكات التلافيفية (CNNs) والشبكات المتكررة (RNNs/LSTMs). إنه ينفذ تعلم النسب التدرج العشوائي (SGD، الانتشار العكسي للخطأ) من خلال التمايز التلقائي والتوازي عبر وحدات معالجة الرسومات والخوادم المتعددة. أصبح CNTK متاحًا بموجب ترخيص مفتوح المصدر منذ أبريل 2015. ونأمل أن يستفيد المجتمع من CNTK لمشاركة الأفكار بسرعة أكبر من خلال تبادل كود العمل مفتوح المصدر.
إذا كنت تفضل استخدام أحدث بتات CNTK من البرنامج الرئيسي، فاستخدم إحدى باقات CNTK الليلية:
يمكنك معرفة المزيد حول استخدام CNTK والمساهمة فيه من خلال الموارد التالية:
عزيزي المجتمع،
من خلال مساهماتنا المستمرة في ONNX وONNX Runtime، قمنا بتسهيل التشغيل التفاعلي ضمن النظام البيئي لإطار عمل الذكاء الاصطناعي والوصول إلى الأداء العالي وقدرات الاستدلال عبر الأنظمة الأساسية لكل من نماذج تعلم الآلة التقليدية والشبكات العصبية العميقة. على مدى السنوات القليلة الماضية، حظينا بشرف تطوير مثل هذه المشاريع الرئيسية للتعلم الآلي مفتوحة المصدر، بما في ذلك مجموعة أدوات Microsoft المعرفية، والتي مكنت مستخدميها من الاستفادة من التقدم على مستوى الصناعة في التعلم العميق على نطاق واسع.
سيكون الإصدار 2.7 اليوم هو الإصدار الرئيسي الأخير من CNTK. قد يكون لدينا بعض الإصدارات الثانوية اللاحقة لإصلاح الأخطاء، ولكن سيتم تقييمها على أساس كل حالة على حدة. لا توجد خطط لتطوير ميزات جديدة بعد هذا الإصدار.
يتمتع إصدار CNTK 2.7 بدعم كامل لـ ONNX 1.4.1، ونحن نشجع أولئك الذين يسعون إلى تشغيل نماذج CNTK الخاصة بهم للاستفادة من ONNX وONNX Runtime. للمضي قدمًا، يمكن للمستخدمين الاستمرار في الاستفادة من ابتكارات ONNX المتطورة عبر عدد من الأطر التي تدعمها. على سبيل المثال، يمكن للمستخدمين تصدير نماذج ONNX أصلاً من PyTorch أو تحويل نماذج TensorFlow إلى ONNX باستخدام محول TensorFlow-ONNX.
نحن ممتنون للغاية لكل الدعم الذي تلقيناه من المساهمين والمستخدمين على مر السنين منذ الإصدار الأولي مفتوح المصدر لـ CNTK. لقد مكّن CNTK كلاً من فرق Microsoft والمستخدمين الخارجيين من تنفيذ أعباء عمل معقدة وواسعة النطاق في جميع أنواع تطبيقات التعلم العميق، مثل الإنجازات التاريخية في التعرف على الكلام التي حققها باحثو Microsoft Speech، منشئو إطار العمل.
نظرًا لأن ONNX يستخدم بشكل متزايد في خدمة النماذج المستخدمة عبر منتجات Microsoft مثل Bing وOffice، فإننا ملتزمون بتجميع الابتكارات من البحث مع متطلبات الإنتاج الصارمة لدفع النظام البيئي إلى الأمام.
قبل كل شيء، هدفنا هو جعل الابتكارات في التعلم العميق عبر مجموعات البرامج والأجهزة مفتوحة ويمكن الوصول إليها قدر الإمكان. سنعمل جاهدين لجلب نقاط القوة الحالية لـ CNTK والأبحاث الحديثة إلى مشاريع أخرى مفتوحة المصدر لتوسيع نطاق هذه التقنيات حقًا.
مع الامتنان،
- فريق CNTK
اعتمد هذا المشروع قواعد السلوك الخاصة بشركة Microsoft مفتوحة المصدر. لمزيد من المعلومات، راجع الأسئلة الشائعة حول قواعد السلوك أو اتصل بـ [email protected] لطرح أي أسئلة أو تعليقات إضافية.
يمكنك العثور على المزيد من الأخبار على موجز المشروع الرسمي
2019-03-29. سي ان تي كيه 2.7.0
لإعداد بيئة البناء ووقت التشغيل على نظام التشغيل Windows:
لإعداد بيئة البناء ووقت التشغيل على Linux باستخدام عامل الإرساء، يرجى إنشاء صورة عامل الإرساء Unbuntu 16.04 باستخدام Dockerfiles هنا. بالنسبة لأنظمة Linux الأخرى، يرجى الرجوع إلى Dockerfiles لإعداد المكتبات التابعة لـ CNTK.
يمكن تصدير نماذج CNTK ذات الحلقات العودية إلى نماذج ONNX باستخدام عمليات المسح.
لتصدير نماذج أكبر من 2 غيغابايت بتنسيق ONNX، استخدم cntk.Function API: save(self, filename, format=ModelFormat.CNTKv2, use_external_files_to_store_parameters=False) مع تعيين "format" على ModelFormat.ONNX وتعيين use_external_files_to_store_parameters على True. في هذه الحالة، يتم حفظ معلمات النموذج في ملفات خارجية. يجب استخدام النماذج المصدرة مع ملفات المعلمات الخارجية عند إجراء تقييم النموذج باستخدام onnxruntime.
2018-11-26.
يدعم Netron الآن تصور ملفات CNTK v1 وCNTK .model
.
2018-09-17. سي ان تي كيه 2.6.0
تم تحديث تنفيذ مجموعة الإلتواء في CNTK. يبتعد التنفيذ المحدث عن إنشاء رسم بياني فرعي لالتفاف المجموعة (باستخدام التقطيع والربط)، ويستخدم بدلاً من ذلك واجهات برمجة تطبيقات cuDNN7 وMKL2017 مباشرةً. يؤدي هذا إلى تحسين التجربة من حيث الأداء وحجم النموذج.
على سبيل المثال، بالنسبة لعملية تلافيفية لمجموعة واحدة مع السمات التالية:
أرقام المقارنة لهذه العقدة الفردية هي كما يلي:
الرأس الأول | تنفيذي GPU. الوقت (بالملي ثانية، متوسط 1000 تشغيل) | تنفيذي وحدة المعالجة المركزية. الوقت (بالملي ثانية، متوسط 1000 تشغيل) | حجم النموذج (بالتنسيق كيلو بايت، CNTK) |
---|---|---|---|
التنفيذ القديم | 9.349 | 41.921 | 38 |
تنفيذ جديد | 6.581 | 9.963 | 5 |
تسريع / الادخار | 30% تقريبا. | 65-75% تقريبًا. | 87% |
تم تحديث تنفيذ الإلتواء المتسلسل في CNTK. ينشئ التطبيق المحدث طبقة تلافيفية متسلسلة منفصلة. تختلف هذه العملية عن طبقة الالتواء العادية، وتلتف أيضًا على المحور الديناميكي (التسلسل)، ويتم تطبيق filter_shape[0] على هذا المحور. يدعم التنفيذ المحدث الحالات الأوسع، مثل الخطوة > 1 لمحور التسلسل.
على سبيل المثال، التفاف متسلسل على مجموعة من الصور بالأبيض والأسود ذات القناة الواحدة. الصور لها نفس الارتفاع الثابت وهو 640، ولكن لكل منها عرض بأطوال متغيرة. ثم يتم تمثيل العرض بمحور متسلسل. تم تمكين الحشو، والخطوات لكل من العرض والارتفاع هي 2.
>>> f = SequentialConvolution((3,3), reduction_rank=0, pad=True, strides=(2,2), activation=C.relu)
>>> x = C.input_variable(**Sequence[Tensor[640]])
>>> x.shape
(640,)
>>> h = f(x)
>>> h.shape
(320,)
>>> f.W.shape
(1, 1, 3, 3)
هناك تغيير جذري في مشغلي Deep_to_space و space_to_Deepth . تم تحديثها لتتوافق مع مواصفات ONNX، وتحديدًا تم تغيير التقليب لكيفية وضع بُعد العمق ككتل في الأبعاد المكانية، والعكس بالعكس. يرجى الرجوع إلى أمثلة المستندات المحدثة لهاتين العمليتين لرؤية التغيير.
تمت إضافة دعم للعمليات المثلثية Tan
و Atan
.
تمت إضافة دعم لسمة alpha
في ELU المرجع.
تم تحديث خوارزميات الحشو التلقائي Convolution
لإنتاج حشو متماثل بأقصى جهد على وحدة المعالجة المركزية، دون التأثير على قيم مخرجات الالتفاف النهائية. يعمل هذا التحديث على زيادة نطاق الحالات التي يمكن تغطيتها بواسطة MKL API وتحسين الأداء، على سبيل المثال ResNet50.
يوجد تغيير جذري في خاصية الوسائط في CNTK python API. تم تحديث السلوك الافتراضي لإرجاع الوسائط بترتيب بايثون بدلاً من ترتيب C++. بهذه الطريقة، سيتم إرجاع الوسائط بنفس الترتيب الذي تم إدخالها فيه في العمليات. إذا كنت ترغب في الاستمرار في الحصول على الوسائط بترتيب C++، فيمكنك ببساطة تجاوز الخيار العام. يجب أن يؤثر هذا التغيير فقط على العمليات التالية: Times وTransposeTimes وGemm(داخلي).
LogSoftMax
لاستخدام تنفيذ أكثر استقرارًا عدديًا.BatchNormalization
الخاصة بـ CNTK إلى أحدث المواصفات.DepthToSpace
و SpaceToDepth
لمطابقة مواصفات ONNX بشأن التقليب لكيفية وضع بُعد العمق كبُعد للكتلة.alpha
في ELU
ONNX op.Convolution
Pooling
. على عكس ما سبق، لا تقوم هذه العمليات بتصدير عملية Pad
صريحة في أي موقف.ConvolutionTranspose
التصدير والاستيراد. يتم دعم السمات مثل output_shape
و output_padding
pads
بشكل كامل.StopGradient
الخاص بـ CNTK باعتباره أمرًا محظورًا.Hardmax
/ Softmax
/ LogSoftmax
.Select
عملية التصدير.MatMul
op.Gemm
op.MeanVarianceNormalization
الخاص بـ CNTK للتصدير/الاستيراد إلى أحدث المواصفات.LayerNormalization
الخاصة بـ CNTK إلى أحدث المواصفات.PRelu
op الخاص بـ CNTK إلى أحدث المواصفات.Gather
/الاستيراد إلى أحدث المواصفات.ImageScaler
op الخاصة بـ CNTK إلى أحدث المواصفات.Reduce
عمليات التصدير/الاستيراد إلى أحدث المواصفات.Flatten
op الخاص بـ CNTK إلى أحدث المواصفات.Unsqueeze
op.size
على دلالات القطر وليس نصف القطر. تمت إضافة التحقق من الصحة إذا كان حجم نواة LRN أكبر من حجم القناة.Min
/ Max
للتعامل مع المدخلات المتغيرة.تم تحويل مكتبة Cntk.Core.Managed رسميًا إلى .Net Standard وتدعم تطبيقات .Net Core و.Net Framework على كل من Windows وLinux. بدءًا من هذا الإصدار، يجب أن يكون مطورو .Net قادرين على استعادة حزم CNTK Nuget باستخدام ملف مشروع نمط .Net SDK الجديد مع تنسيق إدارة الحزم المعين على PackageReference.
يعمل رمز C# التالي الآن على كل من نظامي التشغيل Windows وLinux:
>>> var weightParameterName = "weight";
>>> var biasParameterName = "bias";
>>> var inputName = "input";
>>> var outputDim = 2;
>>> var inputDim = 3;
>>> Variable inputVariable = Variable.InputVariable(new int[] { inputDim }, DataType.Float, inputName);
>>> var weightParameter = new Parameter(new int[] { outputDim, inputDim }, DataType.Float, 1, device, weightParameterName);
>>> var biasParameter = new Parameter(new int[] { outputDim }, DataType.Float, 0, device, biasParameterName);
>>>
>>> Function modelFunc = CNTKLib.Times(weightParameter, inputVariable) + biasParameter;
على سبيل المثال، يكفي ببساطة إضافة جملة ItemGroup في ملف .csproj لتطبيق .Net Core: >>> >>> >>> >>> netcoreapp2.1 >>> x64 >>> >>> >>> >>> >>> >>> >>>
2018-04-16. نتك 2.5.1
أعد حزم CNTK 2.5 مع مكتبات الطرف الثالث المضمنة في الحزم (حزم عجلة Python)
2018-03-15. سي ان تي كيه 2.5
تغيير تنسيق إخراج تفاصيل ملف التعريف ليكون chrome://tracing
تمكين التوقيت لكل عقدة. مثال العمل هنا
import cntk as C
C . debugging . debug . set_node_timing ( True )
C . debugging . start_profiler () # optional
C . debugging . enable_profiler () # optional
#<trainer|evaluator|function> executions
< trainer | evaluator | function > . print_node_timing ()
C . debugging . stop_profiler ()
مثال لعرض تفاصيل ملف التعريف في chrome://tracing
تحسينات أداء استنتاج وحدة المعالجة المركزية باستخدام MKL
cntk.cntk_py.enable_cpueval_optimization()/cntk.cntk_py.disable_cpueval_optimization()
تم دمج 1BitSGD في CNTK
1BitSGD
متاح الآن مع ترخيص CNTK (ترخيص MIT) ضمن Source/1BitSGD/
1bitsgd
في هدف GPU الموجودوظيفة الخسارة الجديدة: softmax الهرمي
التدريب الموزع مع العديد من المتعلمين
مشغلي
MeanVarianceNormalization
.إصلاحات الشوائب
CNTKBinaryFormat
عند عبور حدود المسحmpi=no
cntk.convert
API في misc.converter.py
، والذي يمنع تحويل الشبكات المعقدة.اونكس
ONNX.checker
.OptimizedRNNStack
الخاص بـ CNTK (LSTM فقط).MeanVarianceNormalization
التجريبي.Identity
التجريبية ONNX op.LayerNormalization
الخاصة بـ CNTK باستخدام ONNX MeanVarianceNormalization
op.Concat
الخاص بـ CNTK.LeakyReLu
(تم إرجاع الوسيطة "alpha" إلى الكتابة المزدوجة).متنوعات
find_by_uid()
ضمن cntk.logging.graph
.2018-02-28. يدعم CNTK البناء الليلي
إذا كنت تفضل استخدام أحدث بتات CNTK من البرنامج الرئيسي، فاستخدم إحدى حزم CNTK الليلية.
وبدلاً من ذلك، يمكنك أيضًا النقر فوق شارة البناء المقابلة للانتقال إلى صفحة البناء الليلية.
2018-01-31. سي ان تي كيه 2.4
أبرز النقاط:
مكتب خدمات المشاريع
top_k
: في التمرير الأمامي، تحسب قيم k الأعلى (الأكبر) والمؤشرات المقابلة على طول المحور المحدد. في المسار الخلفي، يكون التدرج مبعثرًا إلى عناصر k العلوية (العنصر غير الموجود في الجزء العلوي k يحصل على تدرج صفري).gather
الآن وسيطة المحورsqueeze
expand_dims
لإزالة المحاور المفردة وإضافتها بسهولةzeros_like
والأخرى ones_like
. في العديد من المواقف، يمكنك الاعتماد فقط على CNTK الذي يبث بشكل صحيح 0 أو 1 ولكن في بعض الأحيان تحتاج إلى الموتر الفعلي.depth_to_space
: إعادة ترتيب العناصر في موتر الإدخال من بعد العمق إلى كتل مكانية. الاستخدام النموذجي لهذه العملية هو تنفيذ التفاف البكسل الفرعي لبعض نماذج الصور فائقة الدقة.space_to_depth
: إعادة ترتيب العناصر في موتر الإدخال من الأبعاد المكانية إلى بُعد العمق. إنه إلى حد كبير عكس DepthToSpace.sum
: قم بإنشاء مثيل دالة جديد يحسب مجموع عناصر موتر الإدخال.softsign
: قم بإنشاء مثيل دالة جديد يحسب softsign من حيث العنصر لموتر الإدخال.asinh
: قم بإنشاء مثيل دالة جديد يحسب asinh من حيث العناصر لموتر الإدخال.log_softmax
: قم بإنشاء مثيل دالة جديد يحسب قيم logsoftmax المقيسة لموتر الإدخال.hard_sigmoid
: قم بإنشاء مثيل دالة جديد يحسب القيم المقيسة hard_sigmoid لموتر الإدخال.element_and
، element_not
، element_or
، element_xor
العمليات المنطقية المتعلقة بالعنصرreduce_l1
: تحسب معيار L1 لعنصر موتر الإدخال على طول المحاور المتوفرة.reduce_l2
: تحسب معيار L2 لعنصر موتر الإدخال على طول المحاور المتوفرة.reduce_sum_square
: تحسب مجموع مربع عنصر موتر الإدخال على طول المحاور المتوفرة.image_scaler
: تغيير الصورة عن طريق قياس قيمها الفردية.اونكس
Reshape
op للتعامل مع InferredDimension
.producer_name
producer_version
إلى نماذج ONNX.auto_pad
أو pads
في ONNX Conv
op.Pooling
ONNXInputVariable
بمحور دفعي واحد فقط.Transpose
op لمطابقة المواصفات المحدثة.Conv
و ConvTranspose
و Pooling
لتتوافق مع المواصفات المحدثة.مشغلي
Convolution
op للمجموعات> 1. ومن المتوقع تنفيذ المزيد من التنفيذ الأمثل للالتفاف المجموعة في الإصدار التالي.Convolution
.هاليد ثنائي الإلتواء
Cntk.BinaryConvolution.so/dll
التي يمكن استخدامها مع وحدة netopt
. تحتوي المكتبة على عوامل الالتواء الثنائية المحسنة التي تعمل بشكل أفضل من عوامل الالتواء الثنائية القائمة على بايثون. لتمكين Halide في البناء، يرجى تنزيل إصدار Halide وتعيين بيئة HALIDE_PATH
المتغيرة قبل بدء البناء. في Linux، يمكنك استخدام ./configure --with-halide[=directory]
لتمكينه. لمزيد من المعلومات حول كيفية استخدام هذه الميزة، يرجى الرجوع إلى How_to_use_network_optimization.شاهد المزيد في ملاحظات الإصدار. احصل على الإصدار من صفحة إصدارات CNTK.