سنخبرك اليوم كيف طورنا نظام بحث عن الآبار المرشحة للتكسير الهيدروليكي (HF) باستخدام التعلم الآلي (فيما يلي - ML) وما نتج عنه. دعنا نفهم سبب الحاجة إلى التكسير الهيدروليكي ، وما علاقة ML به ، ولماذا قد تكون تجربتنا مفيدة ليس فقط لرجال النفط.
تحت الخفض ، بيان مفصل للمشكلة ، وصف لحلول تكنولوجيا المعلومات لدينا ، واختيار المقاييس ، وإنشاء خط أنابيب ML ، وتطوير بنية لإصدار نموذج في المنتج.
كتبنا حول لماذا يتم كسر في مقالاتنا السابقة هنا و هنا .
لماذا التعلم الآلي هنا؟ من ناحية أخرى ، يعتبر التكسير الهيدروليكي أرخص من الحفر ، لكنه لا يزال مكلفًا ، ومن ناحية أخرى ، لن يكون من الممكن القيام بذلك في كل بئر - لن يكون هناك أي تأثير. جيولوجي خبير يبحث عن أماكن مناسبة. نظرًا لأن عدد الشركات العاملة كبير (عشرات الآلاف) ، غالبًا ما يتم تجاهل الخيارات ، وتفقد الشركة أرباحها المحتملة. يمكن أن يؤدي استخدام التعلم الآلي إلى تسريع تحليل المعلومات بشكل كبير. ومع ذلك ، فإن إنشاء نموذج ML هو نصف المعركة فقط. من الضروري جعله يعمل في وضع ثابت ، وربطه بخدمة البيانات ، ورسم واجهة جميلة وجعلها مريحة للمستخدم للدخول إلى التطبيق وحل مشكلته بنقرتين.
عند الاستخراج من صناعة النفط ، يمكن للمرء أن يلاحظ أنه يتم حل مهام مماثلة في جميع الشركات. الجميع يريد أن:
أ. أتمتة معالجة وتحليل تدفقات البيانات الكبيرة.
ب- تقليل التكاليف وعدم تفويت الفوائد.
ج. جعل مثل هذا النظام سريعًا وفعالًا.
سوف تتعلم من المقالة كيف طبقنا مثل هذا النظام ، والأدوات التي استخدمناها ، وأيضًا ما هي المطبات التي وصلنا إليها على الطريق الشائك لإدخال ML في الإنتاج. نحن على يقين من أن تجربتنا يمكن أن تكون ذات فائدة لكل من يريد أتمتة الروتين - بغض النظر عن مجال النشاط.
كيف يتم اختيار الآبار للتكسير الهيدروليكي بالطريقة "التقليدية"
عند اختيار الآبار المرشحة للتكسير الهيدروليكي ، يعتمد عامل الزيت على خبرته الواسعة ويبحث في الرسوم البيانية والجداول المختلفة ، وبعد ذلك يتنبأ بمكان إجراء التكسير الهيدروليكي. ومع ذلك ، لا أحد يعرف بشكل موثوق ما يحدث على عمق عدة آلاف من الأمتار ، لأنه ليس من السهل النظر تحت الأرض (يمكنك قراءة المزيد في المقالة السابقة ). يتطلب تحليل البيانات بالطرق "التقليدية" تكاليف عمالة كبيرة ، ولكن ، للأسف ، لا يضمن التنبؤ الدقيق لنتائج التكسير الهيدروليكي (المفسد - مع ML أيضًا).
إذا وصفنا العملية الحالية لتحديد الآبار المرشحة للتكسير الهيدروليكي ، فسوف تتكون من المراحل التالية: تفريغ بيانات البئر من أنظمة معلومات الشركة ، ومعالجة البيانات التي تم الحصول عليها ، وإجراء تحليل الخبراء ، والاتفاق على الحل ، وإجراء التكسير الهيدروليكي ، وتحليل النتائج. يبدو بسيطًا ، لكن ليس تمامًا.
عملية الاختيار الحالية للآبار المرشحة
العيب الرئيسي لهذا النهج "اليدوي" هو الكثير من الروتين ، وتزداد الأحجام ، ويبدأ الناس في الغرق في العمل ، ولا توجد شفافية في العملية والأساليب.
صياغة المشكلة
في عام 2019 ، واجه فريق تحليل البيانات لدينا مهمة إنشاء نظام آلي لاختيار الآبار المرشحة للتكسير الهيدروليكي. بالنسبة لنا ، بدا الأمر على هذا النحو - لمحاكاة حالة جميع الآبار ، بافتراض أنه من الضروري الآن إجراء التكسير الهيدروليكي عليها ، ثم ترتيب الآبار حسب أكبر زيادة في إنتاج النفط واختيار آبار Top-N التي سيسافر إليها الأسطول واتخاذ الإجراءات لزيادة استخراج النفط.
باستخدام نماذج ML ، يتم تكوين مؤشرات تشير إلى جدوى التكسير الهيدروليكي في بئر معين: إنتاج الزيت بعد التكسير الهيدروليكي المخطط له ونجاح هذا الحدث.
في حالتنا ، معدل إنتاج النفط هو كمية النفط المنتجة بالمتر المكعب شهريًا. يتم حساب هذا المؤشر على أساس قيمتين: معدل تدفق السائل ونسبة قطع المياه. يطلق عمال النفط على السائل مزيجًا من الزيت والماء - وهذا المزيج هو نتاج الآبار. وخفض الماء هو نسبة محتوى الماء في خليط معين. من أجل حساب معدل إنتاج الزيت المتوقع بعد التكسير ، يتم استخدام نموذجين للانحدار: أحدهما يتوقع معدل تدفق المائع بعد التكسير ، والآخر يتنبأ بقطع المياه. باستخدام القيم التي تم إرجاعها بواسطة بيانات النموذج ، يتم حساب توقعات إنتاج النفط باستخدام الصيغة:
كسر النجاح هو هدف ثنائي متغير. يتم تحديدها باستخدام القيمة الفعلية للزيادة في إنتاج النفط والتي تم الحصول عليها بعد التكسير الهيدروليكي. إذا كان النمو أكبر من عتبة معينة يحددها خبير في مجال المجال ، فإن قيمة سمة النجاح تساوي واحدًا ، وإلا فإنها تساوي صفرًا. وبالتالي ، فإننا نشكل الترميز لحل مشكلة التصنيف.
بالنسبة للمقياس ... يجب أن يأتي المقياس من العمل ويعكس اهتمامات العميل ، أي دورات تعلم الآلة تخبرنا. في رأينا ، هذا هو المكان الذي يكمن فيه النجاح أو الفشل الرئيسي لمشروع التعلم الآلي. يمكن لمجموعة من علماء البيانات تحسين جودة النموذج طالما أرادوا ذلك ، ولكن إذا لم يؤدي ذلك إلى زيادة قيمة العمل للعميل بأي شكل من الأشكال ، فإن هذا النموذج محكوم عليه بالفشل. بعد كل شيء ، كان من المهم أن يحصل العميل على مرشح دقيق مع تنبؤات "فيزيائية" لمعلمات أداء البئر بعد التكسير الهيدروليكي.
بالنسبة لمشكلة الانحدار ، تم اختيار المقاييس التالية:
لماذا لا يوجد مقياس واحد ، أنت تسأل - كل منها يعكس حقيقته الخاصة. بالنسبة للحقول التي يكون متوسط معدلات الإنتاج فيها مرتفعًا ، ستكون MAE كبيرة وستكون MAPE صغيرة. إذا أخذنا حقلاً بمتوسط معدلات إنتاج منخفضة ، فستكون الصورة عكس ذلك.
تم اختيار المقاييس التالية لمشكلة التصنيف:
( wiki ) ،
المنطقة الواقعة تحت منحنى ROC - AUC ( wiki ).
الأخطاء التي واجهناها
خطأ # 1 - لبناء نموذج عالمي واحد لجميع المجالات.
بعد تحليل مجموعات البيانات ، أصبح من الواضح أن البيانات تتغير من حقل إلى آخر. هذا ليس مفاجئًا ، لأن الرواسب ، كقاعدة عامة ، لها بنية جيولوجية مختلفة.
لقد فشل افتراضنا أنه إذا أخذنا جميع البيانات المتاحة للتدريب في نموذج ودفعناها إلى نموذج ، فسوف يكشف هو نفسه عن انتظام البنية الجيولوجية. أظهر النموذج الذي تم تدريبه على بيانات مجال معين جودة أعلى للتنبؤات من النموذج ، الذي تم إنشاؤه باستخدام معلومات حول جميع الحقول المتاحة.
لكل مجال ، تم اختبار خوارزميات مختلفة للتعلم الآلي ، وبناءً على نتائج التحقق المتبادل ، تم اختيار واحدة مع أدنى MAPE.
الخطأ الثاني - عدم وجود فهم عميق للبيانات.
إذا كنت ترغب في إنشاء نموذج جيد للتعلم الآلي لعملية فيزيائية حقيقية ، فافهم كيف تحدث هذه العملية.
في البداية ، لم يكن لدى فريقنا خبير في المجال ، وقد تحركنا بشكل عشوائي. للأسف ، لم نلاحظ أخطاء النموذج عند تحليل التوقعات ، فقد استخلصوا استنتاجات غير صحيحة بناءً على النتائج.
الخطأ الثالث - نقص البنية التحتية.
في البداية ، قمنا بتنزيل العديد من ملفات csv المختلفة لحقول مختلفة ومعلمات مختلفة. في مرحلة ما ، تراكم عدد كبير بشكل لا يطاق من الملفات والنماذج. أصبح من المستحيل إعادة إنتاج التجارب التي تم إجراؤها بالفعل ، وفقدت الملفات ، ونشأ الالتباس.
1. الجزء التقني
اليوم نظام الاختيار التلقائي للمرشحين لدينا يبدو كالتالي:
كل مكون عبارة عن حاوية معزولة تؤدي وظيفة معينة.
2.1 ETL = تحميل البيانات
كل شيء يبدأ بالبيانات. خاصة إذا أردنا بناء نموذج للتعلم الآلي. اخترنا Pentaho Data Integration كنظام تكامل.
لقطة من إحدى التحولات
المزايا الرئيسية:
- نظام حر
- مجموعة كبيرة من المكونات للاتصال بمصادر البيانات المختلفة وتحويل تدفق البيانات ؛
- توافر واجهة الويب ؛
- القدرة على الإدارة عبر REST API ؛
- تسجيل.
بالإضافة إلى كل ما سبق ، لدينا خبرة واسعة في تطوير عمليات تكامل لهذا المنتج. لماذا تكامل البيانات مطلوب في مشاريع ML؟ في عملية إعداد مجموعات البيانات ، يُطلب باستمرار تنفيذ حسابات معقدة ، وإحضار البيانات إلى نموذج واحد ، ولحساب مؤشرات جديدة "على طول الطريق" ، والتغييرات في المعلمات بمرور الوقت ، وما
إلى ذلك. لكل حقيقة من حقائق التكسير الهيدروليكي ، يتم تفريغ أكثر من 400 معلمة تصف تشغيل البئر في وقت التنفيذ الأنشطة ، وتشغيل الآبار المجاورة ، وكذلك معلومات عن التكسير الهيدروليكي الذي تم إجراؤه مسبقًا. علاوة على ذلك ، يتم تحويل البيانات والمعالجة المسبقة.
اخترنا PostgreSQL كمستودع للبيانات المعالجة. لديها مجموعة كبيرة من الأساليب للعمل مع json. نظرًا لأننا نقوم بتخزين مجموعات البيانات النهائية بهذا التنسيق ، فقد أصبح هذا عاملاً حاسمًا.
يرتبط مشروع التعلم الآلي بتغيير مستمر في بيانات الإدخال بسبب إضافة ميزات جديدة ، وبالتالي ، يتم استخدام Data Vault كمخطط قاعدة البيانات (رابط إلى wiki). يتيح لك مخطط تصميم التخزين هذا إضافة بيانات جديدة حول كائن بسرعة وعدم انتهاك تكامل الجداول والاستعلامات.
2.2 خدمات البيانات والنماذج
بعد تمشيط وحساب المؤشرات اللازمة ، يتم تحميل البيانات إلى قاعدة البيانات. يتم تخزينها هنا وتنتظر وحدة البيانات لنقلها لإنشاء نموذج ML. لهذا ، هناك DataService - خدمة مكتوبة بلغة Python وباستخدام بروتوكول gRPC. يتيح لك الحصول على مجموعات البيانات وبياناتها الوصفية (أنواع الميزات ، ووصفها ، وحجم مجموعة البيانات ، وما إلى ذلك) ، وتحميل وتفريغ التنبؤات ، وإدارة عوامل التصفية والتقسيم عن طريق التدريب / الاختبار يتم تخزين التوقعات في قاعدة البيانات بتنسيق json ، مما يسمح لك بتلقي البيانات بسرعة وتخزين ليس فقط قيمة التنبؤ ، ولكن أيضًا تأثير كل ميزة على هذا التوقع المحدد.
نموذج ملف أولي لخدمة البيانات.
عند إنشاء النموذج ، يجب حفظه - لهذا الغرض ، يتم استخدام ModelService ، مكتوبًا أيضًا بلغة Python مع gRPC. لا تقتصر إمكانيات هذه الخدمة على حفظ النموذج وتحميله. بالإضافة إلى ذلك ، يسمح لك بمراقبة المقاييس وأهمية الميزات وأيضًا تنفيذ اتصال نموذج + مجموعة بيانات من أجل الإنشاء التلقائي اللاحق للتنبؤ عند ظهور بيانات جديدة.
هيكل الخدمة النموذجية لدينا يبدو هكذا.
2.3 نموذج ML
عند نقطة معينة ، أدرك فريقنا أن الأتمتة يجب أن تؤثر أيضًا على إنشاء نماذج ML. كانت هذه الحاجة بسبب الحاجة إلى تسريع عملية وضع التوقعات واختبار الفرضيات. واتخذنا قرارًا لتطوير مكتبة AutoML الخاصة بنا وتنفيذها في خط الأنابيب لدينا.
في البداية ، تم النظر في إمكانية استخدام مكتبات AutoML الجاهزة ، ولكن تبين أن الحلول الحالية ليست مرنة بما يكفي لمهمتنا ولم يكن لديها جميع الوظائف اللازمة في وقت واحد (بناءً على طلب العمال ، يمكننا كتابة مقال منفصل عن AutoML لدينا). نلاحظ فقط أن إطار العمل الذي طورناه يحتوي على فئات مستخدمة في المعالجة المسبقة لمجموعة البيانات ، وإنشاء الميزات واختيارها. كنماذج للتعلم الآلي ، نستخدم مجموعة مألوفة من الخوارزميات التي استخدمناها بنجاح من قبل: تطبيقات تعزيز التدرج من xgboost ، مكتبات catboost ، غابة عشوائية من Sklearn ، شبكة عصبية متصلة بالكامل على Pytorch ، إلخ. بعد التدريب ، يقوم AutoML بإرجاع خط أنابيب sklearn يتضمن الفئات المذكورة وكذلك نموذج ML ،التي أظهرت أفضل نتيجة في التحقق المتبادل للمقياس المحدد.
بالإضافة إلى النموذج ، يتم تكوين تقرير عن تأثير أي علامات على توقعات محددة. يسمح مثل هذا التقرير للجيولوجيين بالنظر تحت غطاء الصندوق الأسود الغامض. وبالتالي ، يتلقى AutoML مجموعة البيانات ذات العلامات باستخدام DataService ، وبعد التدريب ، يشكل النموذج النهائي. بعد ذلك ، يمكننا الحصول على التقدير النهائي لجودة النموذج عن طريق تحميل مجموعة بيانات الاختبار ، وإنشاء تنبؤات وحساب مقاييس الجودة. تتمثل المرحلة الأخيرة في تحميل الملف الثنائي للنموذج الذي تم إنشاؤه ووصفه والمقاييس إلى ModelService ، بينما يتم إرجاع التنبؤات والمعلومات حول تأثير الميزات إلى DataService.
لذلك ، يتم وضع نموذجنا في أنبوب اختبار وهو جاهز للتشغيل في المنتج. في أي وقت ، يمكننا استخدامه لإنشاء تنبؤات بناءً على بيانات جديدة ذات صلة.
2.4 واجهة
المستخدم النهائي لمنتجنا هو جيولوجي ، ويحتاج إلى التفاعل بطريقة ما مع نموذج ML. الطريقة الأكثر ملاءمة بالنسبة له هي وحدة في البرامج المتخصصة. لقد قمنا بتنفيذها.
تبدو الواجهة الأمامية ، المتاحة لمستخدمنا ، كمتجر عبر الإنترنت: يمكنك تحديد الحقل المطلوب والحصول على قائمة بالآبار الأكثر نجاحًا على الأرجح. في بطاقة البئر ، يرى المستخدم النمو المتوقع بعد التكسير الهيدروليكي ويقرر بنفسه ما إذا كان يريد إضافته إلى "السلة" والتفكير بمزيد من التفصيل.
واجهة الوحدة النمطية في التطبيق.
هكذا تبدو بطاقة البئر في الملحق
بالإضافة إلى المكاسب النفطية والسائلة المتوقعة ، يمكن للمستخدم أيضًا معرفة السمات التي أثرت على النتيجة المقترحة. يتم حساب أهمية الميزات في مرحلة إنشاء نموذج باستخدام طريقة shap ، ثم يتم تحميلها في واجهة البرنامج باستخدام DataService.

يوضح التطبيق بوضوح الميزات الأكثر أهمية لتنبؤات النموذج.
يمكن للمستخدم أيضًا أن ينظر إلى نظائرها من المصلحة. يتم تنفيذ البحث عن النظير من جانب العميل باستخدام خوارزمية شجرة Kd .

تعرض الوحدة الآبار ذات المعلمات الجيولوجية المماثلة.
2. كيف
قمنا بتحسين نموذج ML يبدو أن الأمر يستحق تشغيل AutoML على البيانات المتاحة ، وسنكون سعداء. لكن يحدث أن جودة التوقعات التي تم الحصول عليها تلقائيًا لا يمكن مقارنتها بنتائج البيانات. الحقيقة هي أن المحللين غالبًا ما يطرحون ويختبرون فرضيات مختلفة لتحسين النماذج. إذا أدت الفكرة إلى تحسين دقة التنبؤ بالبيانات الحقيقية ، فسيتم تنفيذها في AutoML. وبالتالي ، من خلال إضافة ميزات جديدة ، قمنا بتحسين التنبؤ التلقائي بما يكفي للانتقال إلى إنشاء النماذج والتنبؤات بأقل قدر من مشاركة المحللين. فيما يلي بعض الفرضيات التي تم اختبارها وتنفيذها في AutoML لدينا:
1. تغيير طريقة الملء
في النماذج الأولى ، قمنا بملء جميع الفجوات تقريبًا في الخصائص بالمتوسط ، باستثناء الفئتين - بالنسبة لهم ، تم استخدام المعنى الأكثر شيوعًا. في وقت لاحق ، مع العمل المشترك للمحللين والخبير ، في مجال المجال ، كان من الممكن تحديد أنسب القيم لملء الفجوات في 80٪ من الميزات. لقد جربنا أيضًا بعض طرق التعبئة الأخرى باستخدام مكتبات sklearn و missingpy. تم الحصول على أفضل النتائج مع الملء المستمر وحاسوب KNN - حتى 5٪ MAPE.
نتائج تجربة لسد الفجوات بطرق مختلفة.
2. توليد الميزات
تعد إضافة ميزات جديدة عملية تكرارية بالنسبة لنا. لتحسين النماذج ، نحاول إضافة ميزات جديدة بناءً على توصيات خبير المجال ، بناءً على الخبرة المكتسبة من المقالات العلمية واستنتاجاتنا الخاصة من البيانات.
يساعد اختبار الفرضيات التي طرحها الفريق على تقديم ميزات جديدة.
واحدة من أولى الميزات التي تم تحديدها على أساس التجميع. في الواقع ، لقد اخترنا ببساطة المجموعات في مجموعة البيانات بناءً على المعلمات الجيولوجية وولدنا إحصائيات أساسية للخصائص الأخرى بناءً على المجموعات - مما أدى إلى زيادة طفيفة في الجودة.
عملية إنشاء ميزة بناءً على اختيار المجموعات.
أضفنا أيضًا العلامات التي اخترعناها عند الانغماس في منطقة المجال: إنتاج الزيت التراكمي الذي تم تطبيعه مع عمر البئر في شهور ، والحقن المتراكم يتم تطبيعه مع عمر البئر في شهور ، والمعايير المدرجة في صيغة Dupuis. لكن جيل المجموعة القياسية من PolynomialFeatures من sklearn لم يمنحنا زيادة في الجودة.
3.
اختيار الميزة لقد أجرينا اختيار الميزة عدة مرات: يدويًا مع أحد خبراء المجال وباستخدام طرق اختيار الميزة القياسية. بعد عدة تكرارات ، قررنا إزالة بعض الميزات التي لا تؤثر على الهدف من البيانات. وبالتالي ، تمكنا من تقليل حجم مجموعة البيانات ، مع الحفاظ على نفس الجودة ، مما جعل من الممكن بشكل كبير تسريع إنشاء النماذج.
والآن حول المقاييس المستلمة ...
في أحد المجالات ، حصلنا على مؤشرات جودة النموذج التالية:
وتجدر الإشارة إلى أن نتيجة التكسير الهيدروليكي تعتمد أيضًا على عدد من العوامل الخارجية التي لم يتم توقعها. لذلك ، لا يمكننا التحدث عن تقليل MAPE إلى 0.
الخلاصة إن
اختيار الآبار المرشحة للتكسير الهيدروليكي باستخدام ML هو مشروع طموح جمع 7 أشخاص: مهندسو البيانات ، وباحثو البيانات ، وخبراء المجال والمديرون. اليوم ، المشروع جاهز بالفعل للإطلاق ويتم اختباره بالفعل في العديد من الشركات التابعة للشركة.
الشركة مفتوحة للتجريب ، لذلك تم اختيار حوالي 20 بئراً من القائمة وتم كسرها. كان انحراف التوقعات مع القيمة الفعلية لمعدل تدفق الزيت الأولي (MAPE) حوالي 10٪. وهذه نتيجة جيدة جدا!
دعونا لا نكون ماكرة: خاصة في المرحلة الأولية ، تبين أن العديد من الآبار المقترحة لدينا خيارات غير مناسبة.
اكتب أسئلة وتعليقات - سنحاول الإجابة عليها.
اشترك في مدونتنا ، لدينا العديد من الأفكار والمشاريع الأكثر إثارة للاهتمام ، والتي سنكتب عنها بالتأكيد!