
NEOML هو إطار تعلم آلي شامل يتيح لك إنشاء نماذج ML وتدريبها ونشرها. يتم استخدام هذا الإطار من قبل مهندسي Abbyy لمهام رؤية الكمبيوتر ومهام معالجة اللغة الطبيعية ، بما في ذلك المعالجة المسبقة للصور ، والتصنيف ، وتحليل تخطيط المستندات ، و OCR ، واستخراج البيانات من المستندات المنظمة وغير المنظمة.
الميزات الرئيسية:
تم اختبار إصدار مكتبة с ++ الكامل على المنصات:
| OS الهدف | المترجم | بنيان |
|---|---|---|
| Windows 7+ (وحدة المعالجة المركزية و GPU) | MSVC 2019+ | x86 ، x86_64 |
| Ubuntu 14+ (وحدة المعالجة المركزية) | GCC 5.4+ | x86_64 |
| ماكوس 10.11+ (وحدة المعالجة المركزية) | Apple Clang 12+ | ARM64 ، x86_64 |
| iOS 11+ (وحدة المعالجة المركزية ، GPU) | Apple Clang 12+ | ARM64-V8A ، x86_64 |
| Android 5.0+ (CPU) ، Android 7.0+ (GPU) | Clang 7+ | Armeabi-V7a ، Arm64-V8a ، x86 ، x86_64 |
تم اختبار إصدارات مكتبة Java و Objective-C على المنصات:
| OS الهدف | المترجم | بنيان |
|---|---|---|
| iOS 11+ (وحدة المعالجة المركزية ، GPU) | Apple Clang 12+ | ARM64-V8A ، x86_64 |
| Android 5.0+ (CPU) ، Android 7.0+ (GPU) | Clang 7+ | Armeabi-V7a ، Arm64-V8a ، x86 ، x86_64 |
تم تصميم المكتبة باستخدام CMAKE (الإصدارات الموصى بها 3.18 وبعد ذلك).
للحصول على أفضل أداء وحدة المعالجة المركزية على Windows و Linux و MacOS ، نستخدم Intel MKL.
عند المعالجة على وحدة معالجة الرسومات ، يمكنك اختياريا استخدام CUDA (الإصدار 11.2 UPD.1) على Windows أو Linux و Vulkan (الإصدار 1.1.130 وما بعده) على Windows أو Linux أو Android.
نستخدم أيضًا اختبار Google للاختبار ومؤسسات بروتوكول Google للعمل مع تنسيق نموذج ONNX.
نحن نستخدم مولدًا من كود JIT XBYAK لتسريع بعض الملاحظات على معالجات x86_64.
انظر هنا للحصول على إرشادات حول إنشاء إصدار مكتبة C ++ للمنصات المختلفة.
انظر هنا للحصول على تعليمات حول بناء إصدارات Java و Objective-C التي من شأنها أن تدير فقط الشبكات العصبية المدربة.
سوف تساعدك العديد من البرامج التعليمية مع رمز النماذج على البدء في العمل مع المكتبة:
تم تطوير المكتبة مع وضع هذه المبادئ في الاعتبار:
يتم فصل واجهة المستخدم تمامًا عن الحسابات ذات المستوى المنخفض الذي ينفذه محرك الرياضيات.
الشيء الوحيد الذي عليك فعله هو تحديد نوع محرك الرياضيات في البداية الذي سيتم استخدامه للحسابات. يمكنك أيضًا اختيار تحديد محرك الرياضيات تلقائيًا ، استنادًا إلى تكوين الجهاز الذي تم اكتشافه.
ستكون بقية رمز تعلم الآلة هي نفسها بغض النظر عن محرك الرياضيات الذي تختاره.
تعمل كل شبكة مع مثيل واحد لمحرك الرياضيات ، ويجب إنشاء جميع طبقاتها مع نفس محرك الرياضيات. إذا كنت قد اخترت محرك الرياضيات GPU ، فسيؤدي ذلك جميع الحسابات. هذا يعني أنه لا يجوز لك اختيار استخدام وحدة المعالجة المركزية لحسابات "الضوء" مثل إضافة المتجهات ووحدة معالجة الرسومات "الثقيلة" مثل مضاعفة المصفوفات. لقد قدمنا هذا التقييد لتجنب التزامن غير الضروري وتبادل البيانات بين الأجهزة.
واجهة محرك الرياضيات آمنة مؤشرات الترابط. يمكن استخدام نفس الحالة في شبكات مختلفة ومواضيع مختلفة.
لاحظ أن هذا قد يستلزم بعض النفقات العامة المزامنة.
ومع ذلك ، فإن تنفيذ الشبكة العصبية ليس آمنًا للخيط ؛ قد تعمل الشبكة فقط في موضوع واحد.
تعمل مكتبة Neoml أيضًا مع النماذج التي أنشأتها أطر أخرى ، طالما أنها تدعم تنسيق ONNX. انظر وصف الاستيراد API. ومع ذلك ، لا يمكنك تصدير نموذج مدرب Neoml إلى تنسيق ONNX.
تستخدم المكتبة تنسيقها الثنائي الخاص (الذي تنفذه CArchive و CArchiveFile ) لتوفير وتحميل النماذج المدربة.
غالبًا ما تساعد المعالجة على وحدة معالجة الرسومات في تحسين أداء العمليات الرياضية بشكل كبير. تستخدم مكتبة Neoml GPU على حد سواء لتدريب وتشغيل النماذج. هذا إعداد اختياري ويعتمد على إمكانيات الأجهزة والبرامج الخاصة بنظامك.
للعمل على وحدة معالجة الرسومات ، تتطلب المكتبة:
تنشأ مكتبة Neoml في البنية التحتية الداخلية Abbyy. لأسباب مختلفة ، يستخدم Abbyy إطار عمل عبر المنصات يسمى FineObj. لهذا السبب ، يستخدم إصدار المكتبة المفتوحة بعضًا من هذه الإطار البدائي. انظر وصف الفصول المشتركة.
يحتوي Neoml على مكتبتين C ++:
توفر المكتبة كائنات C ++ التي تنفذ مختلف الخوارزميات عالية المستوى. يتكون من عدة أجزاء:
محرك الرياضيات المستخدم في الحسابات هو وحدة منفصلة تنفذ الوظائف الرياضية ذات المستوى المنخفض المستخدمة في مكتبة الخوارزميات. يمكن للمستخدم أيضًا استدعاء هذه الوظائف ولكن عادة لا يحتاج إلى ذلك.
تحتوي هذه الوحدة على تطبيقات مختلفة للمنصات المختلفة. على وجه الخصوص ، هناك تطبيق يستخدم وحدة معالجة الرسومات للحسابات.
محرك الرياضيات هو أيضًا مجموعة من واجهات C ++ الموضحة هنا.
انظر الوثائق الواسعة لوحدة Python على ReadTheDocs.io.
للعمل مع إصدار الاستدلال للمكتبة في Java و Kotlin ، نقدم واجهة Java.
للعمل مع إصدار الاستدلال للمكتبة في Swift و Objective-C ، نقدم واجهة Objective-C.
حقوق الطبع والنشر © 2016-2020 Abbyy Production LLC. مرخصة بموجب ترخيص Apache ، الإصدار 2.0. انظر ملف الترخيص.