حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart

غالبًا ما يتعين على المؤسسات عبر الصناعات مثل التجزئة والبنوك والتمويل والرعاية الصحية والتصنيع والإقراض التعامل مع كميات هائلة من المستندات النصية غير المهيكلة القادمة من مصادر مختلفة ، مثل الأخبار والمدونات ومراجعات المنتجات وقنوات دعم العملاء ووسائل التواصل الاجتماعي. تحتوي هذه المستندات على معلومات مهمة تعتبر أساسية لاتخاذ قرارات العمل المهمة. مع نمو المنظمة ، يصبح من الصعب استخراج المعلومات الهامة من هذه الوثائق. مع تقدم تقنيات معالجة اللغة الطبيعية (NLP) والتعلم الآلي (ML) ، يمكننا الكشف عن رؤى واتصالات قيمة من هذه المستندات النصية بسرعة وبدقة عالية ، وبالتالي مساعدة الشركات على اتخاذ قرارات أعمال عالية الجودة في الوقت المحدد. كما أدت خدمات البرمجة اللغوية العصبية المدارة بالكامل إلى تسريع اعتماد البرمجة اللغوية العصبية. فهم الأمازون هي خدمة مُدارة بالكامل تمكنك من إنشاء نماذج NLP مخصصة خاصة بمتطلباتك ، دون الحاجة إلى أي خبرة في تعلم الآلة.

في هذا المنشور ، نوضح كيفية استخدام أحدث تقنيات تعلم الآلة لحل خمس مهام مختلفة في البرمجة اللغوية العصبية: تلخيص المستندات ، وتصنيف النص ، والإجابة على الأسئلة ، والتعرف على الكيانات المسماة ، واستخراج العلاقة. لكل مهمة من مهام البرمجة اللغوية العصبية هذه ، نوضح كيفية استخدامها الأمازون SageMaker للقيام بالإجراءات التالية:

  • نشر وتشغيل الاستدلال على نموذج مدرب مسبقًا
  • اضبط النموذج المدرَّب مسبقًا على مجموعة بيانات مخصصة جديدة
  • زيادة تحسين أداء الضبط الدقيق باستخدام SageMaker ضبط النموذج التلقائي
  • قم بتقييم أداء النموذج على بيانات اختبار الانتظار بمقاييس تقييم مختلفة

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

قوالب حل JumpStart

أمازون سيج ميكر جومب ستارت يوفر حلولاً شاملة بنقرة واحدة للعديد من حالات استخدام ML الشائعة. استكشف حالات الاستخدام التالية لمزيد من المعلومات حول قوالب الحلول المتوفرة:

تغطي قوالب حل JumpStart مجموعة متنوعة من حالات الاستخدام ، حيث يتم تقديم العديد من قوالب الحلول المختلفة في ظل كل منها (يوجد حل فهم المستند هذا ضمن حالة استخدام "استخراج البيانات من المستندات وتحليلها").

اختر قالب الحل الأنسب لحالة الاستخدام من صفحة JumpStart المقصودة. لمزيد من المعلومات حول حلول محددة لكل حالة استخدام وكيفية تشغيل حل JumpStart ، راجع قوالب الحل.

حل نظرة عامة

توضح الصورة التالية كيف يمكنك استخدام هذا الحل مع مكونات SageMaker. تُستخدم وظائف تدريب SageMaker لتدريب نماذج البرمجة اللغوية العصبية المختلفة ، ويتم استخدام نقاط نهاية SageMaker لنشر النماذج في كل مرحلة. نحن نستخدم خدمة تخزين أمازون البسيطة (Amazon S3) جنبًا إلى جنب مع SageMaker لتخزين بيانات التدريب ومصنوعات النماذج ، و الأمازون CloudWatch لتسجيل مخرجات التدريب ونقطة النهاية.

افتح حل "فهم المستند"

انتقل إلى حل "فهم المستند" في JumpStart.

يمكننا الآن إلقاء نظرة فاحصة على بعض الأصول المضمنة في هذا الحل ، بدءًا من الكمبيوتر الدفتري التجريبي.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

دفتر تجريبي

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

بعد تشغيل حل "فهم المستند" ، افتح دفتر الملاحظات التجريبي بالاختيار استخدم نقطة النهاية في دفتر الملاحظات.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

دعنا نتعمق أكثر في كل من أجهزة الكمبيوتر المحمولة الخمسة الرئيسية لهذا الحل.

المتطلبات الأساسية المسبقة

In أمازون ساجميكر ستوديو، تأكد من أنك تستخدم ملف PyTorch 1.10 Python 3.8 CPU Optimized image / kernel لفتح دفاتر الملاحظات. يستخدم التدريب خمس مثيلات ml.g4dn.2xlarge ، لذلك يجب رفع ملف طلب زيادة حد الخدمة إذا كان حسابك يتطلب حدودًا متزايدة لهذا النوع.

تصنيف النص

يشير تصنيف النص إلى تصنيف جملة إدخال إلى إحدى تسميات الفصل لمجموعة بيانات التدريب. يوضح هذا الكمبيوتر الدفتري كيفية استخدام واجهة برمجة تطبيقات JumpStart لتصنيف النص.

نشر وتشغيل الاستدلال على النموذج المدرب مسبقًا

نموذج تصنيف النص الذي اخترناه لاستخدامه مبني على تضمين النص (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2) نموذج من محور TensorFlow، والتي تم تدريبها مسبقًا على مجموعات بيانات Wikipedia و BookCorpus.

يتم إنشاء النموذج المتاح للنشر عن طريق إرفاق طبقة تصنيف ثنائية بإخراج نموذج تضمين النص ، ثم ضبط النموذج بالكامل على SST-2 مجموعة البيانات ، والتي تتكون من مراجعات الأفلام الإيجابية والسلبية.

لتشغيل الاستدلال على هذا النموذج ، نحتاج أولاً إلى تنزيل حاوية الاستدلال (deploy_image_uri) ، نص الاستدلال (deploy_source_uri) ، ونموذج مدرب مسبقًا (base_model_uri). ثم نقوم بتمريرها كمعلمات لإنشاء مثيل لكائن نموذج SageMaker ، والذي يمكننا بعد ذلك نشره:

model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name_tc,
)
# deploy the Model.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    endpoint_name=endpoint_name_tc,
)

بعد نشر النموذج ، نقوم بتجميع بعض أمثلة المدخلات والاستعلام عن نقطة النهاية:

text1 = "astonishing ... ( frames ) profound ethical and philosophical questions in the form of dazzling pop entertainment" 
text2 = "simply stupid , irrelevant and deeply , truly , bottomlessly cynical "

يوضح الكود التالي ردودنا:

Inference:
Input text: 'astonishing ... ( frames ) profound ethical and philosophical questions in the form of dazzling pop entertainment'
Model prediction: [0.000452966779, 0.999547064]
Labels: [0, 1]
Predicted Label: 1 # value 0 means negative sentiment and value 1 means positive sentiment

Inference:
Input text: 'simply stupid , irrelevant and deeply , truly , bottomlessly cynical '
Model prediction: [0.998723, 0.00127695734]
Labels: [0, 1]
Predicted Label: 0

اضبط النموذج المدرَّب مسبقًا على مجموعة بيانات مخصصة

لقد مررنا للتو من خلال تشغيل الاستدلال على نموذج BERT مدرب مسبقًا ، والذي تم ضبطه بدقة على SST-2 مجموعة البيانات.

بعد ذلك ، نناقش كيفية ضبط نموذج على مجموعة بيانات مخصصة بأي عدد من الفئات. لا تزال مجموعة البيانات التي نستخدمها للضبط الدقيق هي SST-2 مجموعة البيانات. يمكنك استبدال مجموعة البيانات هذه بأي مجموعة بيانات تهتم بها.

نسترجع حاوية Docker التدريبية ومصدر خوارزمية التدريب ونموذج مدرب مسبقًا:

from sagemaker import image_uris, model_uris, script_uris, hyperparameters

model_id, model_version = model_id, "*" # all the other options of model_id are the same as the one in Section 2.
training_instance_type = config.TRAINING_INSTANCE_TYPE

# Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=model_id,
    model_version=model_version,
    image_scope="training",
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=model_id, model_version=model_version, script_scope="training"
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=model_id, model_version=model_version, model_scope="training"
)

بالنسبة للمعلمات التشعبية الخاصة بالخوارزمية ، نبدأ بجلب قاموس Python لمعلمات التدريب التشعبية التي تقبلها الخوارزمية بقيمها الافتراضية. يمكنك تجاوزها بقيم مخصصة ، كما هو موضح في الكود التالي:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["batch-size"] = "64"
hyperparameters["adam-learning-rate"] = "1e-6"

مجموعة البيانات (SST-2) إلى مجموعات التدريب والتحقق والاختبار ، حيث يتم استخدام مجموعة التدريب لتناسب النموذج ، ويتم استخدام مجموعة التحقق من الصحة لحساب مقاييس التقييم التي يمكن استخدامها لـ HPO ، ويتم استخدام مجموعة الاختبار كبيانات الانتظار لتقييم أداء النموذج. بعد ذلك ، يتم تحميل مجموعة بيانات القطار والتحقق من الصحة إلى Amazon S3 واستخدامها لبدء مهمة التدريب على الضبط الدقيق:

# Create SageMaker Estimator instance
tc_estimator = Estimator(
    role=role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    base_job_name=training_job_name,
)

training_data_path_updated = f"s3://{config.S3_BUCKET}/{prefix}/train"
# Launch a SageMaker Training job by passing s3 path of the training data
tc_estimator.fit({"training": training_data_path_updated}, logs=True)

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

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكنك زيادة تحسين أداء الضبط الدقيق باستخدام الضبط التلقائي للنموذج SageMaker

في هذه الخطوة ، نوضح كيف يمكنك تحسين أداء النموذج بشكل أكبر من خلال ضبط النموذج باستخدام الضبط التلقائي للنموذج SageMaker. يعثر ضبط النموذج التلقائي ، المعروف أيضًا باسم تحسين المعلمات الفائقة (HPO) ، على أفضل إصدار من النموذج عن طريق تشغيل مهام تدريب متعددة على مجموعة البيانات الخاصة بك مع مجموعة من المعلمات الفائقة التي تحددها. ثم يختار قيم المعلمة التشعبية التي ينتج عنها نموذج يحقق أفضل أداء ، كما تم قياسه بواسطة مقياس تختاره ، في مجموعة بيانات التحقق من الصحة.

أولاً ، حددنا الهدف على أنه درجة الدقة في بيانات التحقق من الصحة (val_accuracy) والمقاييس المحددة لوظيفة الضبط من خلال تحديد اسم المقياس الموضوعي والتعبير العادي (regex). يتم استخدام التعبير العادي لمطابقة مخرجات سجل الخوارزمية والتقاط القيم الرقمية للمقاييس. بعد ذلك ، نحدد نطاقات المعلمات التشعبية لتحديد أفضل قيم المعلمات التشعبية منها. حددنا العدد الإجمالي لوظائف الضبط بستة وظائف ووزعناها على ثلاث وظائف مختلفة الأمازون الحوسبة المرنة السحابية مثيلات (Amazon EC2) لتشغيل وظائف الضبط المتوازي. انظر الكود التالي:

# Define objective metric per framework, based on which the best model will be selected.
metric_definitions_per_model = {
    "tensorflow": {
        "metrics": [{"Name": "val_accuracy", "Regex": "val_accuracy: ([0-9.]+)"}],
        "type": "Maximize",
    }
}

# You can select from the hyperparameters supported by the model, and configure ranges of values to be searched for training the optimal model.(https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html)
hyperparameter_ranges = {
    "adam-learning-rate": ContinuousParameter(0.00001, 0.01, scaling_type="Logarithmic")
}

# Increase the total number of training jobs run by AMT, for increased accuracy (and training time).
max_jobs = 6
# Change parallel training jobs run by AMT to reduce total training time, constrained by your account limits.
# if max_jobs=max_parallel_jobs then Bayesian search turns to Random.
max_parallel_jobs = 3

نقوم بتمرير هذه القيم لإنشاء مثيل لكائن SageMaker Estimator ، على غرار ما فعلناه في خطوة الضبط السابقة. بدلاً من استدعاء fit وظيفة من Estimator كائن ، نمرر Estimator الكائن في كمعامل لـ HyperparameterTuner منشئ واستدعاء fit وظيفة منه لإطلاق وظائف التوليف:

hp_tuner = HyperparameterTuner(
    tc_estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=tuning_job_name,
)

# Launch a SageMaker Tuning job to search for the best hyperparameters
hp_tuner.fit({"training": training_data_path_updated})

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

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

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

التعرف على الكيان المسمى

التعرف على الكيان المسمى (NER) هو عملية الكشف عن الكيانات المسماة وتصنيفها إلى فئات محددة مسبقًا ، مثل أسماء الأشخاص والمؤسسات والمواقع والكميات. هناك العديد من حالات الاستخدام الواقعية لـ NER ، مثل محركات التوصية ، وتصنيف وتعيين تذاكر دعم العملاء إلى القسم الصحيح ، واستخراج المعلومات الأساسية من تقارير المرضى في الرعاية الصحية ، وتصنيف المحتوى من الأخبار والمدونات.

نشر وتشغيل الاستدلال على النموذج المدرب مسبقًا

ننشر En_core_web_md نموذج من سبا مكتبة. spaCy هي مكتبة البرمجة اللغوية العصبية مفتوحة المصدر التي يمكن استخدامها في مهام مختلفة ، ولديها طرق مضمنة لـ NER. نستخدم حاوية AWS PyTorch Deep Learning Container (DLC) مع وضع البرنامج النصي ونقوم بتثبيت مكتبة spaCy كاعتماد أعلى الحاوية.

بعد ذلك ، توجد نقطة دخول للبرنامج النصي (وسيطة entry_point.py) ، الذي يحتوي على جميع الكود المطلوب تنزيله وتحميله En_core_web_md نموذج وتنفيذ الاستدلال على البيانات التي يتم إرسالها إلى نقطة النهاية. أخيرًا ، ما زلنا بحاجة إلى تقديم model_data كنموذج تم تدريبه مسبقًا للاستدلال. لأن المدربين مسبقا En_core_web_md يتم تنزيل النموذج سريعًا ، والذي تم تحديده في البرنامج النصي للإدخال ، نقدم ملف أرشيف فارغًا. بعد نشر نقطة النهاية ، يمكنك استدعاء نقطة النهاية مباشرة من دفتر الملاحظات باستخدام SageMaker Python SDK Predictor. انظر الكود التالي:

model = PyTorchModel(
    model_data=f"{config.SOURCE_S3_PATH}/artifacts/models/empty.tar.gz",
    entry_point="entry_point.py",
    source_dir="../containers/entity_recognition",
    role=config.IAM_ROLE,
    framework_version="1.5.0",
    py_version="py3",
    code_location="s3://" + config.S3_BUCKET + "/code",
    env={
        "MMS_DEFAULT_RESPONSE_TIMEOUT": "3000"
    }
)
predictor = model.deploy(
    endpoint_name=endpoint_name,
    instance_type=config.HOSTING_INSTANCE_TYPE,
    initial_instance_count=1,
    serializer=JSONSerializer(),
    deserializer=JSONDeserializer()
)

بيانات الإدخال للنموذج هي مستند نصي. يستخرج نموذج الكيان المسمى أجزاء الأسماء والكيانات المسماة في المستند النصي ويصنفها في عدد من الأنواع المختلفة (مثل الأشخاص والأماكن والمؤسسات). يظهر المثال المدخلات والمخرجات في الكود التالي. ال start_char تشير المعلمة إلى إزاحة الحرف لبداية الامتداد ، و end_char يشير إلى نهاية الفترة.

data = {'text': 'Amazon SageMaker is a fully managed service that provides every developer and data scientist with the ability to build, train, and deploy machine learning (ML) models quickly.'}
response = predictor.predict(data=data)

print(response['entities'])
print(response['noun_chunks'])

[{'text': 'Amazon SageMaker', 'start_char': 0, 'end_char': 16, 'label': 'ORG'}]
[{'text': 'Amazon SageMaker', 'start_char': 0, 'end_char': 16}, {'text': 'a fully managed service', 'start_char': 20, 'end_char': 43}, {'text': 'that', 'start_char': 44, 'end_char': 48}, {'text': 'every developer and data scientist', 'start_char': 58, 'end_char': 92}, {'text': 'the ability', 'start_char': 98, 'end_char': 109}, {'text': 'ML', 'start_char': 156, 'end_char': 158}]

اضبط النموذج المدرَّب مسبقًا على مجموعة بيانات مخصصة

في هذه الخطوة ، نوضح كيفية ضبط نماذج اللغة المدربة مسبقًا لـ NER على مجموعة البيانات الخاصة بك. تعمل خطوة الضبط الدقيق على تحديث معلمات النموذج لالتقاط خصائص بياناتك وتحسين الدقة. نحن نستخدم ال ويكي (PAN-X) لضبط ملف DistilBERT-قاعدة غير مغطاة نموذج محول من Hugging Face.

يتم تقسيم مجموعة البيانات إلى مجموعات التدريب والتحقق والاختبار.

بعد ذلك ، نحدد المعلمات الفائقة للنموذج ، ونستخدم AWS Hugging Face DLC مع وضع البرنامج النصي (وسيطة entry_point) لتشغيل وظيفة الضبط:

hyperparameters = {
    "pretrained-model": "distilbert-base-uncased",
    "learning-rate": 2e-6,
    "num-train-epochs": 2,
    "batch-size": 16,
    "weight-decay": 1e-5,
    "early-stopping-patience": 2,
}

ner_estimator = HuggingFace(
    pytorch_version='1.10.2',
    py_version='py38',
    transformers_version="4.17.0",
    entry_point='training.py',
    source_dir='../containers/entity_recognition/finetuning',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=training_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    base_job_name = training_job_name
)

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

أخيرًا ، نستخدم مقاييس التقييم المضمنة في Hugging Face تسلسل لحساب درجات التقييم على بيانات اختبار الانتظار. مقاييس التقييم المستخدمة هي الدقة الشاملة ، والتذكر العام ، وإجمالي F1 ، والدقة. تظهر لقطة الشاشة التالية نتائجنا.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكنك زيادة تحسين أداء الضبط الدقيق باستخدام الضبط التلقائي للنموذج SageMaker

على غرار تصنيف النص ، نوضح كيف يمكنك زيادة تحسين أداء النموذج من خلال ضبط النموذج باستخدام الضبط التلقائي للنموذج SageMaker. لتشغيل وظيفة الضبط ، نحتاج إلى تحديد مقياس موضوعي نريد استخدامه لتقييم أداء النموذج في مجموعة بيانات التحقق (درجة F1 في هذه الحالة) ، ونطاقات المعلمات الفائقة لتحديد أفضل قيم المعلمات الفائقة من ، بالإضافة إلى ضبط تكوينات الوظيفة مثل الحد الأقصى لعدد وظائف التوليف وعدد الوظائف المتوازية التي سيتم إطلاقها في كل مرة:

hyperparameters_range = {
    "learning-rate": ContinuousParameter(1e-5, 0.1, scaling_type="Logarithmic"),
    "weight-decay": ContinuousParameter(1e-6, 1e-2, scaling_type="Logarithmic"),
}

tuner = HyperparameterTuner(
    estimator,
    "f1",
    hyperparameters_range,
    [{"Name": "f1", "Regex": "'eval_f1': ([0-9.]+)"}],
    max_jobs=6,
    max_parallel_jobs=3,
    objective_type="Maximize",
    base_tuning_job_name=tuning_job_name,
)

tuner.fit({
    "train": f"s3://{bucket}/{prefix}/train/",
    "validation": f"s3://{bucket}/{prefix}/validation/",
}, logs=True)

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

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكننا أن نرى أن النموذج مع HPO يحقق أداءً أفضل بشكل ملحوظ عبر جميع المقاييس.

الإجابة على السؤال

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

نشر وتشغيل الاستدلال على النموذج المدرب مسبقًا

نموذجنا المدرَّب مسبقًا هو نموذج الإجابة على الأسئلة الاستخراجية (EQA) فريق بيرت كبير غير محدد كلمة كاملة مبني على نموذج محول من Hugging Face. نستخدم AWS PyTorch DLC مع وضع البرنامج النصي ونقوم بتثبيت ملف محولات مكتبة كاعتماد على الجزء العلوي من الحاوية. على غرار مهمة NER ، نقدم ملف أرشيف فارغًا في الوسيطة model_data لأنه يتم تنزيل النموذج الذي تم تدريبه مسبقًا بشكل سريع. بعد نشر نقطة النهاية ، يمكنك استدعاء نقطة النهاية مباشرة من دفتر الملاحظات باستخدام SageMaker Python SDK Predictor. انظر الكود التالي:

model = PyTorchModel(
    model_data=f"{config.SOURCE_S3_PATH}/artifacts/models/empty.tar.gz",
    entry_point="entry_point.py",
    source_dir="../containers/question_answering",
    role=config.IAM_ROLE,
    framework_version="1.5.0",
    py_version="py3",
    code_location="s3://" + config.S3_BUCKET + "/code",
    env={
        "MODEL_ASSETS_S3_BUCKET": config.SOURCE_S3_BUCKET,
        "MODEL_ASSETS_S3_PREFIX": f"{config.SOURCE_S3_PREFIX}/artifacts/models/question_answering/",
        "MMS_DEFAULT_RESPONSE_TIMEOUT": "3000",
    },
)

بعد نشر نقطة النهاية بنجاح وتكوين المتنبئ ، يمكننا تجربة نموذج الإجابة على الأسئلة في أمثلة المدخلات. تم اختبار هذا النموذج مسبقًا على مجموعة بيانات الأسئلة والأجوبة في ستانفورد (SQuAD) مجموعة البيانات. تم تقديم مجموعة البيانات هذه على أمل تعزيز مجال نمذجة الإجابة على الأسئلة. إنها مجموعة بيانات لفهم القراءة تتكون من فقرات وأسئلة وإجابات.

كل ما نحتاجه هو إنشاء كائن قاموس بمفتاحين. context هو النص الذي نرغب في استرجاع المعلومات منه. question هو استعلام اللغة الطبيعية الذي يحدد المعلومات التي نهتم باستخراجها. نحن نتصل predict على متنبئنا ، ويجب أن نحصل على استجابة من نقطة النهاية تحتوي على الإجابات الأكثر احتمالاً:

data = {'question': 'what is my name?', 'context': "my name is thom"}
response = predictor.predict(data=data)

لدينا الرد ، ويمكننا طباعة الإجابات الأكثر احتمالاً التي تم استخلاصها من النص السابق. كل إجابة لها درجة ثقة تستخدم للترتيب (ولكن لا ينبغي تفسير هذه النتيجة على أنها احتمال حقيقي). بالإضافة إلى الإجابة الحرفية ، يمكنك أيضًا الحصول على فهارس أحرف البداية والنهاية للإجابة من السياق الأصلي:

print(response['answers'])
[{'score': 0.9793591499328613, 'start': 11, 'end': 15, 'answer': 'thom'}, 
{'score': 0.02019440196454525, 'start': 0, 'end': 15, 'answer': 'my name is thom'}, 
{'score': 4.349117443780415e-05, 'start': 3, 'end': 15, 'answer': 'name is thom'}]

نقوم الآن بضبط هذا النموذج باستخدام مجموعة البيانات المخصصة الخاصة بنا للحصول على نتائج أفضل.

اضبط النموذج المدرَّب مسبقًا على مجموعة بيانات مخصصة

في هذه الخطوة ، نوضح كيفية ضبط نماذج اللغة المدربة مسبقًا لـ EQA على مجموعة البيانات الخاصة بك. تعمل خطوة الضبط الدقيق على تحديث معلمات النموذج لالتقاط خصائص بياناتك وتحسين الدقة. نحن نستخدم ال SQuAD2.0 مجموعة بيانات لضبط نموذج تضمين النص بيرت قاعدة غير مسجلة من تعانق الوجه. يُلحق النموذج المتاح للضبط الدقيق طبقة استخراج إجابات بنموذج دمج النص ويهيئ معلمات الطبقة إلى قيم عشوائية. تعمل خطوة الضبط الدقيق على ضبط جميع معلمات النموذج لتقليل خطأ التنبؤ في بيانات الإدخال وإرجاع النموذج الدقيق.

على غرار مهمة تصنيف النص ، يتم تقسيم مجموعة البيانات (SQuAD2.0) إلى مجموعة تدريب وتحقق واختبار.

بعد ذلك ، نحدد المعلمات الفائقة للنموذج ، ونستخدم واجهة برمجة تطبيقات JumpStart لبدء مهمة الضبط:

hyperparameters = {'epochs': '3', 'adam-learning-rate': '2e-05', 'batch-size': '16'}

eqa_estimator = Estimator(
    role=role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    base_job_name=training_job_name,
    debugger_hook_config=False,
)

training_data_path_updated = f"s3://{config.S3_BUCKET}/{prefix}/train"
# Launch a SageMaker Training job by passing s3 path of the training data
eqa_estimator.fit({"training": training_data_path_updated}, logs=True)

بعد اكتمال مهمة الضبط الدقيق ، ننشر النموذج ، ونجري الاستدلال على مجموعة بيانات اختبار الانتظار ، ونحسب مقاييس التقييم. مقاييس التقييم المستخدمة هي متوسط ​​درجة المطابقة الدقيقة ومتوسط ​​درجة F1. تظهر لقطة الشاشة التالية النتائج.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكنك زيادة تحسين أداء الضبط الدقيق باستخدام الضبط التلقائي للنموذج SageMaker

على غرار الأقسام السابقة ، نستخدم ملف HyperparameterTuner كائن لإطلاق وظائف الضبط:

hyperparameter_ranges = {
    "adam-learning-rate": ContinuousParameter(0.00001, 0.01, scaling_type="Logarithmic"),
    "epochs": IntegerParameter(3, 10),
    "train-only-top-layer": CategoricalParameter(["True", "False"]),
}

hp_tuner = HyperparameterTuner(
    eqa_estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=training_job_name,
)

# Launch a SageMaker Tuning job to search for the best hyperparameters
hp_tuner.fit({"training": training_data_path_updated})

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

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكننا أن نرى أن النموذج المزود بـ HPO يُظهر أداءً أفضل بشكل ملحوظ في بيانات اختبار الانتظار.

استخراج العلاقة

استخراج العلاقات هو مهمة استخراج العلاقات الدلالية من النص ، والتي تحدث عادة بين كيانين أو أكثر. يلعب استخراج العلاقات دورًا مهمًا في استخراج المعلومات المنظمة من مصادر غير منظمة مثل النص الخام. في هذا دفتر الملاحظات ، نعرض حالتين من حالات الاستخدام لاستخراج العلاقة.

اضبط النموذج المدرَّب مسبقًا على مجموعة بيانات مخصصة

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

مجموعة البيانات التي قمنا بضبط النموذج هي مهمة SemEval-2010 8. يمكن نشر النموذج الذي تم إرجاعه عن طريق الضبط الدقيق للاستدلال.

تحتوي مجموعة البيانات على مجموعات التدريب والتحقق والاختبار.

نستخدم AWS PyTorch DLC مع وضع البرنامج النصي من SageMaker Python SDK ، حيث transformers تم تثبيت مكتبة على أنها تبعية أعلى الحاوية. نحدد SageMaker PyTorch مقدر ومجموعة من المعلمات الفائقة مثل النموذج المدرب مسبقًا ومعدل التعلم وأرقام الحقبة لإجراء الضبط الدقيق. يتم تعريف رمز الضبط الدقيق لنموذج استخراج العلاقة في ملف entry_point.py. انظر الكود التالي:

hyperparameters = {
    "pretrained-model": "bert-base-uncased",
    "learning-rate": 0.0002,
    "max-epoch": 2,
    "weight-decay": 0,
    "batch-size": 16,
    "accumulate-grad-batches": 2,
    "gradient-clip-val": 1.0
}

re_estimator = PyTorch(
    framework_version='1.5.0',
    py_version='py3',
    entry_point='entry_point.py',
    source_dir='../containers/relationship_extraction',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=train_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    base_job_name=training_job_name,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    debugger_hook_config=False
)

re_estimator.fit(
    {
        "train": f"s3://{bucket}/{prefix}/train/",
        "validation": f"s3://{bucket}/{prefix}/validation/",
    }
)

تستغرق مهمة التدريب حوالي 31 دقيقة لإكمالها. نستخدم هذا النموذج لإجراء الاستدلال على مجموعة اختبار الانتظار وتقييم النتائج باستخدام دقة, ماكرو F1و F1 مايكرو درجات. تُظهر لقطة الشاشة التالية درجات التقييم.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكنك زيادة تحسين أداء الضبط الدقيق باستخدام الضبط التلقائي للنموذج SageMaker

على غرار الأقسام السابقة ، نستخدم ملف HyperparameterTuner كائن للتفاعل مع واجهات برمجة تطبيقات ضبط المعلمات الفائقة من SageMaker. يمكننا بدء وظيفة ضبط المعامل التشعبي عن طريق استدعاء fit الأسلوب:

hyperparameters = {
    "max-epoch": 2,
    "weight-decay": 0,
    "batch-size": 16,
    "accumulate-grad-batches": 2,
    "gradient-clip-val": 1.0
}

estimator = PyTorch(
    framework_version='1.5.0',
    py_version='py3',
    entry_point='entry_point.py',
    source_dir='../containers/relationship_extraction',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=train_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    base_job_name=tuning_job_name,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    debugger_hook_config=False
    
    re_tuner = HyperparameterTuner(
    estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=tuning_job_name,
)

re_tuner.fit({
    "train": f"s3://{bucket}/{prefix}/train/",
    "validation": f"s3://{bucket}/{prefix}/validation/",
})

عند اكتمال وظيفة ضبط المعلمة الفائقة ، نقوم بالاستدلال ونتحقق من درجة التقييم.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكننا أن نرى أن النموذج مع HPO يُظهر أداءً أفضل في بيانات اختبار الانتظار.

تلخيص الوثيقة

تلخيص المستند أو النص هو مهمة تكثيف كميات كبيرة من البيانات النصية في مجموعة فرعية أصغر من الجمل ذات المعنى التي تمثل المعلومات الأكثر أهمية أو ذات الصلة داخل المحتوى الأصلي. يعد تلخيص المستند أسلوبًا مفيدًا لاستخلاص المعلومات المهمة من كميات كبيرة من البيانات النصية إلى بضع جمل. يتم استخدام تلخيص النص في العديد من حالات الاستخدام ، مثل معالجة المستندات واستخراج المعلومات من المدونات والمقالات والأخبار.

يوضح هذا الكمبيوتر الدفتري نشر نموذج تلخيص المستند T5- قاعدة من تعانق محولات الوجه مكتبة. نقوم أيضًا باختبار نقاط النهاية المنشورة باستخدام مقالة نصية وتقييم النتائج باستخدام مقياس التقييم المدمج في Hugging Face ROUGE.

على غرار الإجابة على الأسئلة ودفاتر NER ، نستخدم PyTorchModel من SageMaker Python SDK جنبًا إلى جنب مع ملف entry_point.py البرنامج النصي لتحميل النموذج الأساسي T5 إلى نقطة نهاية HTTPS. بعد نشر نقطة النهاية بنجاح ، يمكننا إرسال مقالة نصية إلى نقطة النهاية للحصول على استجابة تنبؤ:

ARTICLE = """ Documents are a primary tool for communication,
collaboration, record keeping, and transactions across industries,
including financial, medical, legal, and real estate. The format of data
can pose an extra challenge in data extraction, especially if the content
is typed, handwritten, or embedded in a form or table. Furthermore,
extracting data from your documents is manual, error-prone, time-consuming,
expensive, and does not scale. Amazon Textract is a machine learning (ML)
service that extracts printed text and other data from documents as well as
tables and forms. We’re pleased to announce two new features for Amazon
Textract: support for handwriting in English documents, and expanding
language support for extracting printed text from documents typed in
Spanish, Portuguese, French, German, and Italian. Many documents, such as
medical intake forms or employment applications, contain both handwritten
and printed text. The ability to extract text and handwriting has been a
need our customers have asked us for. Amazon Textract can now extract
printed text and handwriting from documents written in English with high
confidence scores, whether it’s free-form text or text embedded in tables
and forms. Documents can also contain a mix of typed text or handwritten
text. The following image shows an example input document containing a mix
of typed and handwritten text, and its converted output document.."""

data = {'text': ARTICLE}
response = predictor.predict(data=data)
print(response['summary'])

"""Amazon Textract is a machine learning (ML) service that extracts printed text 
and other data from documents as well as tables and forms . 
customers can now extract and process documents in more languages .
support for handwriting in english documents and expanding language support for extracting 
printed text ."""

بعد ذلك ، نقوم بتقييم ومقارنة المقالة النصية ونتائج التلخيص باستخدام مقياس ROUGE. يتم حساب ثلاثة مقاييس للتقييم: rougeN, rougeLو rougeLsum. rougeN يقيس عدد المطابقة n-grams بين النص الناتج عن النموذج (نتيجة التلخيص) و a reference (أدخل نصآ). المقاييس rougeL و rougeLsum قم بقياس أطول سلاسل الكلمات المطابقة من خلال البحث عن السلاسل الفرعية الأكثر شيوعًا في الملخصات المُنشأة والمرجعية. لكل مقياس ، يتم حساب فترات الثقة للدقة ، والاستدعاء ، ودرجة F1. انظر الكود التالي:

results = rouge.compute(predictions=[response['summary']], references=[ARTICLE])

rouge1: AggregateScore(low=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823), 
mid=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823), high=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823))

rouge2: AggregateScore(low=Score(precision=0.9565217391304348, recall=0.1004566210045662, fmeasure=0.18181818181818182), 
mid=Score(precision=0.9565217391304348, recall=0.1004566210045662, fmeasure=0.18181818181818182), high=Score(precision=0.9565217391304348, recall=0.1004566210045662, 
fmeasure=0.18181818181818182))

rougeL: AggregateScore(low=Score(precision=0.8085106382978723, recall=0.08656036446469248, fmeasure=0.15637860082304528), 
mid=Score(precision=0.8085106382978723, recall=0.08656036446469248, fmeasure=0.15637860082304528), high=Score(precision=0.8085106382978723, recall=0.08656036446469248, 
fmeasure=0.15637860082304528))

rougeLsum: AggregateScore(low=Score(precision=0.9787234042553191, recall=0.10478359908883828, fmeasure=0.18930041152263374), 
mid=Score(precision=0.9787234042553191, recall=0.10478359908883828, fmeasure=0.18930041152263374), high=Score(precision=0.9787234042553191, recall=0.10478359908883828, 
fmeasure=0.18930041152263374))

تنظيف

يمكن حذف الموارد التي تم إنشاؤها لهذا الحل باستخدام حذف كافة الموارد زر من SageMaker Studio IDE. يوفر كل دفتر ملاحظات أيضًا قسم تنظيف يحتوي على رمز لحذف نقاط النهاية.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

وفي الختام

في هذا المنشور ، أوضحنا كيفية الاستفادة من أحدث تقنيات تعلم الآلة لحل خمس مهام مختلفة في البرمجة اللغوية العصبية: تلخيص المستندات ، وتصنيف النص ، والسؤال والإجابة ، والتعرف على الكيانات المسماة ، واستخراج العلاقة باستخدام Jumpstart. ابدأ مع Jumpstart الآن!


حول المؤلف

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.الدكتور شين هوانغ هو عالم تطبيقي في Amazon SageMaker JumpStart وخوارزميات Amazon SageMaker المدمجة. يركز على تطوير خوارزميات التعلم الآلي القابلة للتطوير. تتركز اهتماماته البحثية في مجال معالجة اللغة الطبيعية ، والتعلم العميق القابل للتفسير على البيانات المجدولة ، والتحليل القوي لتجميع الزمكان غير المعياري. وقد نشر العديد من الأوراق البحثية في ACL و ICDM ومؤتمرات KDD والجمعية الملكية للإحصاء: مجلة Series A.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.فيفيك جانجاساني هو كبير مهندسي حلول التعلم الآلي في Amazon Web Services. يساعد الشركات الناشئة في بناء تطبيقات AI / ML وتشغيلها. يركز حاليًا على الجمع بين خلفيته في الحاويات والتعلم الآلي لتقديم حلول بشأن MLOps و ML Inference و ML منخفض الكود. في أوقات فراغه ، يستمتع بتجربة مطاعم جديدة واستكشاف الاتجاهات الناشئة في مجال الذكاء الاصطناعي والتعلم العميق.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.جيريمي كوهين هو مهندس حلول مع AWS حيث يساعد العملاء على بناء حلول متطورة قائمة على السحابة. في أوقات فراغه ، يستمتع بالمشي لمسافات قصيرة على الشاطئ ، واستكشاف منطقة الخليج مع عائلته ، وإصلاح الأشياء حول المنزل ، وكسر الأشياء حول المنزل ، والشواء.

حدد الرؤى الرئيسية من المستندات النصية من خلال الضبط الدقيق و HPO باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.نيلام كوشيا هو مهندس حلول المشاريع في AWS. ينصب تركيزها الحالي على مساعدة عملاء المؤسسة في رحلة تبني السحابة لتحقيق نتائج أعمال استراتيجية في أوقات فراغها ، تستمتع بالقراءة والتواجد في الهواء الطلق.

الطابع الزمني:

اكثر من التعلم الآلي من AWS