Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

Amazon SageMaker JumpStart ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli bilgileri belirleyin

Perakende, bankacılık, finans, sağlık, üretim ve borç verme gibi sektörlerdeki kuruluşlar genellikle haberler, bloglar, ürün incelemeleri, müşteri destek kanalları ve sosyal medya gibi çeşitli kaynaklardan gelen çok sayıda yapılandırılmamış metin belgesiyle uğraşmak zorunda kalır. Bu belgeler, önemli iş kararları vermenin anahtarı olan kritik bilgiler içerir. Bir kuruluş büyüdükçe, bu belgelerden kritik bilgileri çıkarmak zor bir iş haline gelir. Doğal dil işleme (NLP) ve makine öğrenimi (ML) tekniklerinin gelişmesiyle, bu metinsel belgelerden değerli içgörüleri ve bağlantıları hızlı ve yüksek doğrulukla ortaya çıkararak şirketlerin zamanında kaliteli iş kararları almasına yardımcı oluyoruz. Tamamen yönetilen NLP hizmetleri de NLP'nin benimsenmesini hızlandırdı. Amazon Kavramak herhangi bir makine öğrenimi uzmanlığına ihtiyaç duymadan gereksinimlerinize özel özel NLP modelleri oluşturmanıza olanak sağlayan, tam olarak yönetilen bir hizmettir.

Bu gönderide, beş farklı NLP görevini çözmek için en son makine öğrenimi tekniklerinin nasıl kullanılacağını gösteriyoruz: belge özetleme, metin sınıflandırma, soru yanıtlama, adlandırılmış varlık tanıma ve ilişki çıkarma. Bu NLP görevlerinin her biri için nasıl kullanılacağını gösteriyoruz. Amazon Adaçayı Yapıcı aşağıdaki eylemleri gerçekleştirmek için:

  • Önceden eğitilmiş bir model üzerinde çıkarımı devreye alın ve çalıştırın
  • Önceden eğitilmiş modelde yeni bir özel veri kümesinde ince ayar yapın
  • ile ince ayar performansını daha da iyileştirin SageMaker otomatik model ayarı
  • Çeşitli değerlendirme metrikleri ile uzatma testi verilerinde model performansını değerlendirin

Bu gönderide beş belirli NLP görevini ele almamıza rağmen, bu çözümü önceden eğitilmiş modellerin ince ayarını kendi veri kümenizle genelleştirmek için bir şablon olarak kullanabilir ve ardından doğruluğu artırmak için hiperparametre optimizasyonu çalıştırabilirsiniz.

JumpStart çözüm şablonları

Amazon SageMaker Hızlı Başlangıç birçok yaygın makine öğrenimi kullanım durumu için tek tıklamayla uçtan uca çözümler sunar. Kullanılabilir çözüm şablonları hakkında daha fazla bilgi için aşağıdaki kullanım durumlarını keşfedin:

JumpStart çözüm şablonları, her biri altında birkaç farklı çözüm şablonunun sunulduğu çeşitli kullanım durumlarını kapsar (bu Belge Anlama çözümü, "Belgelerden verileri ayıkla ve analiz et" kullanım örneği altındadır).

JumpStart açılış sayfasından kullanım durumunuza en uygun çözüm şablonunu seçin. Her bir kullanım durumu altındaki belirli çözümler ve bir JumpStart çözümünün nasıl başlatılacağı hakkında daha fazla bilgi için, bkz. Çözüm Şablonları.

Çözüme genel bakış

Aşağıdaki görüntü, bu çözümü SageMaker bileşenleriyle nasıl kullanabileceğinizi göstermektedir. SageMaker eğitim işleri, çeşitli NLP modelini eğitmek için kullanılır ve SageMaker uç noktaları, modelleri her aşamada dağıtmak için kullanılır. Kullanırız Amazon Basit Depolama Hizmeti (Amazon S3), eğitim verilerini ve model yapıtlarını depolamak için SageMaker ile birlikte ve Amazon Bulut İzleme eğitim ve uç nokta çıktılarını günlüğe kaydetmek için.

Belge Anlama çözümünü açın

JumpStart'ta Belge Anlama çözümüne gidin.

Şimdi demo not defterinden başlayarak bu çözüme dahil olan bazı varlıklara daha yakından bakabiliriz.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

Demo not defteri

Belge özetleme ve soru yanıtlama görevleri için önceden konuşlandırılmış model uç noktalarına örnek veriler göndermek için demo not defterini kullanabilirsiniz. Demo not defteri, örnek verileri sorgulayarak hızlı bir şekilde uygulamalı deneyim elde etmenizi sağlar.

Belge Anlama çözümünü başlattıktan sonra, seçerek demo not defterini açın. Not Defterinde Uç Noktayı Kullan.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

Bu çözüm için beş ana not defterinin her birini daha ayrıntılı olarak inceleyelim.

Önkoşullar

In Amazon SageMaker Stüdyosu, kullandığınızdan emin olun PyTorch 1.10 Python 3.8 CPU Optimized not defterlerini açmak için image/kernel. Eğitim, beş ml.g4dn.2xlarge örneği kullanır, bu nedenle hizmet limiti artırma talebi hesabınız bu tür için artırılmış limitler gerektiriyorsa.

Metin sınıflandırması

Metin sınıflandırması, bir giriş cümlesinin eğitim veri kümesinin sınıf etiketlerinden birine göre sınıflandırılmasını ifade eder. Bu not defteri nasıl kullanılacağını gösterir JumpStart API'sı metin sınıflandırması için

Önceden eğitilmiş model üzerinde çıkarımı devreye alın ve çalıştırın

Kullanmayı seçtiğimiz metin sınıflandırma modeli, bir metin gömme (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2) modeli TensorFlow Merkezi, Wikipedia ve BookCorpus veri kümelerinde önceden eğitilmiştir.

Dağıtım için uygun olan model, metin gömme modelinin çıktısına bir ikili sınıflandırma katmanı eklenerek ve ardından modelin tamamında ince ayar yapılarak oluşturulur. SST-2 olumlu ve olumsuz film incelemelerinden oluşan veri kümesi.

Bu model üzerinde çıkarım yapmak için önce çıkarım kapsayıcısını indirmemiz gerekir (deploy_image_uri), çıkarım betiği (deploy_source_uri) ve önceden eğitilmiş model (base_model_uri). Daha sonra bunları konuşlandırabileceğimiz bir SageMaker model nesnesini somutlaştırmak için parametre olarak iletiyoruz:

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,
)

Modeli konuşlandırdıktan sonra, bazı örnek girdileri bir araya getirir ve uç noktayı sorgularız:

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

Aşağıdaki kod yanıtlarımızı gösterir:

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

Özel bir veri kümesinde önceden eğitilmiş modelde ince ayar yapın

Önceden eğitilmiş bir BERT modelinde çalışan çıkarımdan az önce geçtik. SST-2 Veri kümesi.

Ardından, herhangi bir sayıda sınıf içeren özel bir veri kümesinde bir modelde nasıl ince ayar yapılacağını tartışacağız. İnce ayar için kullandığımız veri seti hala SST-2 veri kümesi. Bu veri kümesini, ilgilendiğiniz herhangi bir veri kümesiyle değiştirebilirsiniz.

Eğitim Docker kapsayıcısını, eğitim algoritması kaynağını ve önceden eğitilmiş modeli alıyoruz:

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"
)

Algoritmaya özgü hiperparametreler için, algoritmanın varsayılan değerleri ile kabul ettiği eğitim hiperparametrelerinin bir Python sözlüğünü getirerek başlıyoruz. Aşağıdaki kodda gösterildiği gibi bunları özel değerlerle geçersiz kılabilirsiniz:

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"

veri seti (SST-2) eğitim, doğrulama ve test setlerine ayrılır; burada eğitim seti modele uymak için kullanılır, doğrulama seti HPO için kullanılabilecek değerlendirme metriklerini hesaplamak için kullanılır ve test seti uzatma verileri olarak kullanılır Model performansını değerlendirmek için. Ardından, tren ve doğrulama veri seti Amazon S3'e yüklenir ve ince ayar eğitim işini başlatmak için kullanılır:

# 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)

İnce ayar işi tamamlandıktan sonra, modeli dağıtırız, uzatma testi veri kümesi üzerinde çıkarım yaparız ve değerlendirme ölçümlerini hesaplarız. Bu bir ikili sınıflandırma görevi olduğundan, doğruluk puanı ve F1 skoru değerlendirme ölçütleri olarak Daha büyük bir değer, daha iyi performansı gösterir. Aşağıdaki ekran görüntüsü sonuçlarımızı göstermektedir.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

SageMaker otomatik model ayarıyla ince ayar performansını daha da iyileştirin

Bu adımda, SageMaker otomatik model ayarıyla modelde ince ayar yaparak model performansını nasıl daha da iyileştirebileceğinizi gösteriyoruz. Hiperparametre optimizasyonu (HPO) olarak da bilinen otomatik model ayarlama, belirlediğiniz bir dizi hiperparametre ile veri kümenizde birden çok eğitim işi çalıştırarak bir modelin en iyi sürümünü bulur. Ardından, doğrulama veri kümesinde seçtiğiniz bir metrik tarafından ölçüldüğü üzere en iyi performansı gösteren bir modelle sonuçlanan hiperparametre değerlerini seçer.

İlk olarak, hedefi doğrulama verilerindeki doğruluk puanı olarak belirledik (val_accuracy) ve objektif metrik adı ve bir normal ifade (regex) belirterek ayarlama işi için tanımlanmış metrikler. Normal ifade, algoritmanın günlük çıktısını eşleştirmek ve metriklerin sayısal değerlerini yakalamak için kullanılır. Ardından, en iyi hiperparametre değerlerini seçmek için hiperparametre aralıklarını belirliyoruz. Toplam tuning işi sayısını altı olarak belirledik ve bu işleri üç farklı işe dağıttık. Amazon Elastik Bilgi İşlem Bulutu Paralel ayarlama işlerini çalıştırmak için (Amazon EC2) bulut sunucuları. Aşağıdaki koda bakın:

# 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

Önceki ince ayar adımında yaptığımıza benzer şekilde, bir SageMaker Estimator nesnesini somutlaştırmak için bu değerleri iletiyoruz. aramak yerine fit işlevi Estimator nesneyi geçiyoruz Estimator parametre olarak nesne HiperparametreTuner yapıcı ve çağırın fit Ayarlama işlerini başlatma işlevi:

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})

Ayarlama işleri tamamlandıktan sonra, doğrulama veri kümesinde en iyi değerlendirme metriği puanını veren modeli dağıtır, önceki bölümde yaptığımız aynı uzatma testi veri kümesinde çıkarım gerçekleştirir ve değerlendirme metriklerini hesaplarız.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

Sonuçlar, otomatik model ayarıyla seçilen modelin, bir uzatma testi veri kümesinde önceki bölümde ince ayarı yapılan modelden önemli ölçüde daha iyi performans gösterdiğini gösteriyor.

Adlandırılmış varlık tanıma

Adlandırılmış varlık tanıma (NER), adlandırılmış varlıkları algılama ve kişilerin, kuruluşların, konumların ve miktarların adları gibi önceden tanımlanmış kategorilere ayırma işlemidir. Öneri motorları, müşteri destek biletlerinin sınıflandırılması ve doğru departmana atanması, sağlık hizmetlerindeki hasta raporlarından temel bilgilerin çıkarılması ve haber ve bloglardan içerik sınıflandırması gibi NER için birçok gerçek dünya kullanım durumu vardır.

Önceden eğitilmiş model üzerinde çıkarımı devreye alın ve çalıştırın

Biz konuşlandırıyoruz Tr_core_web_md model spacy kütüphane. spaCy, çeşitli görevler için kullanılabilen ve NER için yerleşik yöntemlere sahip açık kaynaklı bir NLP kitaplığıdır. Komut dosyası moduyla bir AWS PyTorch Derin Öğrenme Kapsayıcısı (DLC) kullanıyoruz ve kapsayıcının üstüne bir bağımlılık olarak spaCy kitaplığını yüklüyoruz.

Ardından, betik için bir giriş noktası (argüman entry_point.py), indirmek ve yüklemek için tüm kodu içeren belirtilir. En_core_web_md uç noktaya gönderilen verileri modelleyin ve bunlar üzerinde çıkarım yapın. Son olarak, hala sağlamamız gerekiyor model_data çıkarım için önceden eğitilmiş model olarak. Çünkü önceden eğitilmiş En_core_web_md giriş komut dosyasında belirtilen model anında indirildiğinde, boş bir arşiv dosyası sağlıyoruz. Uç nokta devreye alındıktan sonra, SageMaker Python SDK'sını kullanarak uç noktayı doğrudan not defterinden çağırabilirsiniz. Predictor. Aşağıdaki koda bakın:

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()
)

Model için girdi verileri metinsel bir belgedir. Adlandırılmış varlık modeli, metin belgesindeki isim parçalarını ve adlandırılmış varlıkları çıkarır ve bunları bir dizi farklı türde (insanlar, yerler ve kuruluşlar gibi) sınıflandırır. Örnek giriş ve çıkış aşağıdaki kodda gösterilmiştir. bu start_char parametresi, aralığın başlangıcı için karakter ofsetini gösterir ve end_char aralığın sonunu gösterir.

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}]

Özel bir veri kümesinde önceden eğitilmiş modelde ince ayar yapın

Bu adımda, kendi veri kümenizde NER için önceden eğitilmiş bir dil modeline nasıl ince ayar yapacağınızı gösteriyoruz. İnce ayar adımı, kendi verilerinizin özelliklerini yakalamak ve doğruluğu artırmak için model parametrelerini günceller. biz kullanıyoruz VikiANN ince ayar yapmak için (PAN-X) veri kümesi DistilBERT-baz-kasasız Hugging Face'den Transformer modeli.

Veri kümesi eğitim, doğrulama ve test kümelerine ayrılmıştır.

Ardından, modelin hiperparametrelerini belirliyoruz ve komut dosyası moduyla (bağımsız değişken) bir AWS Hugging Face DLC kullanıyoruz. entry_point) ince ayar işini tetiklemek için:

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
)

İnce ayar işi tamamlandıktan sonra, bir uç nokta dağıtırız ve bu uç noktayı bekletme testi verileriyle sorgularız. Bitiş noktasını sorgulamak için, her bir metin dizisinin bir veya daha fazla belirteç halinde belirteçleştirilmesi ve dönüştürücü modele gönderilmesi gerekir. Her belirteç, tahmin edilen bir adlandırılmış varlık etiketi alır. Her bir metin dizesi bir veya daha fazla belirteç olarak belirtilebileceğinden, dizenin varlık etiketi adlı temel gerçeği kendisiyle ilişkilendirilmiş tüm belirteçlere çoğaltmamız gerekir. Sağlanan not defteri, bunu başarmak için size adım adım yol gösterir.

Son olarak, Hugging Face yerleşik değerlendirme metriklerini kullanıyoruz ardıl bekletme testi verilerinde değerlendirme puanlarını hesaplamak için. Kullanılan değerlendirme ölçütleri genel kesinlik, genel hatırlama, genel F1 ve doğruluktur. Aşağıdaki ekran görüntüsü sonuçlarımızı göstermektedir.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

SageMaker otomatik model ayarıyla ince ayar performansını daha da iyileştirin

Metin sınıflandırmaya benzer şekilde, SageMaker otomatik model ayarıyla modelde ince ayar yaparak model performansını nasıl daha da iyileştirebileceğinizi gösteriyoruz. Ayarlama işini çalıştırmak için, doğrulama veri kümesindeki (bu durumda F1 puanı), en iyi hiperparametre değerlerini seçmek için hiperparametre aralıklarındaki model performansını değerlendirmek için kullanmak istediğimiz objektif bir metrik tanımlamamız ve ayrıca aşağıdaki gibi ayarlama işi yapılandırmaları tanımlamamız gerekir: Bir seferde başlatılacak maksimum ayarlama işi ve paralel iş sayısı:

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)

Ayarlama işleri tamamlandıktan sonra, doğrulama veri kümesinde en iyi değerlendirme metriği puanını veren modeli dağıtır, önceki bölümde yaptığımız aynı uzatma testi veri kümesinde çıkarım gerçekleştirir ve değerlendirme metriklerini hesaplarız.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

HPO'lu modelin tüm ölçümlerde önemli ölçüde daha iyi performans elde ettiğini görebiliriz.

Soru cevaplama

Belirli bilgiler için büyük miktarda metin sorgulamak istediğinizde soru yanıtlama yararlıdır. Bir kullanıcının bir soruyu doğal dilde ifade etmesine ve anında ve kısa bir yanıt almasına olanak tanır. NLP ile desteklenen soru yanıtlama sistemleri, arama motorlarında ve telefon görüşme arayüzlerinde kullanılabilir.

Önceden eğitilmiş model üzerinde çıkarımı devreye alın ve çalıştırın

Önceden eğitilmiş modelimiz, çıkarımsal soru yanıtlama (DKD) modelidir. bert-büyük-kasasız-tüm-kelime-maskeleme-ince ayarlı-takım Hugging Face'ten bir Transformer modeli üzerine inşa edilmiştir. Komut dosyası moduyla bir AWS PyTorch DLC kullanıyoruz ve transformatörler kitaplığı kabın üstüne bir bağımlılık olarak. NER görevine benzer şekilde, bağımsız değişkende boş bir arşiv dosyası sağlıyoruz model_data çünkü önceden eğitilmiş model anında indirilir. Uç nokta devreye alındıktan sonra, SageMaker Python SDK'sını kullanarak uç noktayı doğrudan not defterinden çağırabilirsiniz. Predictor. Aşağıdaki koda bakın:

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",
    },
)

Uç nokta başarıyla konuşlandırıldıktan ve öngörücü yapılandırıldıktan sonra, örnek girdiler üzerinde soru yanıtlama modelini deneyebiliriz. Bu model üzerinde önceden eğitilmiştir Stanford Soru ve Cevap Veri Kümesi (SQuAD) veri kümesi. Bu veri seti, soru cevaplama modellemesi alanını ilerletme umuduyla tanıtıldı. Pasajlar, sorular ve cevaplardan oluşan bir okuduğunu anlama veri kümesidir.

Tek yapmamız gereken iki anahtarlı bir sözlük nesnesi oluşturmak. context bilgi almak istediğimiz metindir. question hangi bilgileri ayıklamak istediğimizi belirten doğal dil sorgusudur. Biz ararız predict tahmincimize bağlı ve uç noktadan en olası yanıtları içeren bir yanıt almalıyız:

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

Yanıtı aldık ve önceki metinden çıkarılan en olası yanıtları yazdırabiliriz. Her yanıtın sıralama için kullanılan bir güven puanı vardır (ancak bu puan gerçek bir olasılık olarak yorumlanmamalıdır). Sözlü cevaba ek olarak, orijinal bağlamdan cevabın başlangıç ​​ve bitiş karakter dizinlerini de alırsınız:

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'}]

Şimdi daha iyi sonuçlar elde etmek için bu modele kendi özel veri kümemizle ince ayar yapıyoruz.

Özel bir veri kümesinde önceden eğitilmiş modelde ince ayar yapın

Bu adımda, kendi veri kümenizde EQA için önceden eğitilmiş bir dil modeline nasıl ince ayar yapacağınızı gösteriyoruz. İnce ayar adımı, kendi verilerinizin özelliklerini yakalamak ve doğruluğu artırmak için model parametrelerini günceller. biz kullanıyoruz SQuAD2.0 bir metin gömme modelinde ince ayar yapmak için veri kümesi bert-base-kasasız Hugging Face'ten. İnce ayar için mevcut olan model, metin gömme modeline bir yanıt ayıklama katmanı ekler ve katman parametrelerini rastgele değerlere sıfırlar. İnce ayar adımı, girdi verilerindeki tahmin hatasını en aza indirmek için tüm model parametrelerinde ince ayar yapar ve ince ayarlı modeli döndürür.

Metin sınıflandırma görevine benzer şekilde, veri kümesi (SQuAD2.0) eğitim, doğrulama ve test kümesine bölünmüştür.

Ardından, modelin hiperparametrelerini belirliyoruz ve JumpStart API'sı bir ince ayar işini tetiklemek için:

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)

İnce ayar işi tamamlandıktan sonra, modeli dağıtırız, uzatma testi veri kümesi üzerinde çıkarım yaparız ve değerlendirme ölçümlerini hesaplarız. Kullanılan değerlendirme ölçütleri, ortalama tam eşleştirme puanı ve ortalama F1 puanıdır. Aşağıdaki ekran görüntüsü sonuçları göstermektedir.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

SageMaker otomatik model ayarıyla ince ayar performansını daha da iyileştirin

Önceki bölümlere benzer şekilde, bir HyperparameterTuner ayarlama işlerini başlatmak için nesne:

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})

Ayarlama işleri tamamlandıktan sonra, doğrulama veri kümesinde en iyi değerlendirme metriği puanını veren modeli dağıtır, önceki bölümde yaptığımız aynı uzatma testi veri kümesinde çıkarım gerçekleştirir ve değerlendirme metriklerini hesaplarız.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

HPO'lu modelin, uzatma testi verilerinde önemli ölçüde daha iyi performans gösterdiğini görebiliriz.

ilişki çıkarma

İlişki çıkarma, genellikle iki veya daha fazla varlık arasında meydana gelen anlamsal ilişkileri metinden çıkarma görevidir. İlişki çıkarımı, ham metin gibi yapılandırılmamış kaynaklardan yapılandırılmış bilgilerin çıkarılmasında önemli bir rol oynar. Bu not defterinde, ilişki ayıklamanın iki kullanım durumunu gösteriyoruz.

Özel bir veri kümesinde önceden eğitilmiş modelde ince ayar yapın

üzerine inşa edilmiş bir ilişki çıkarım modeli kullanıyoruz. BERT tabanlı kasasız trafo kullanan model Sarılma Yüz transformatörleri kütüphane. İnce ayar modeli, metin gömme modeli tarafından çıkarılan bir çift belirteç gömmeyi alan ve katman parametrelerini rasgele değerlere başlatan bir doğrusal sınıflandırma katmanı ekler. İnce ayar adımı, girdi verilerindeki tahmin hatasını en aza indirmek için tüm model parametrelerinde ince ayar yapar ve ince ayarlı modeli döndürür.

Modelde ince ayar yaptığımız veri kümesi SemEval-2010 Görev 8. İnce ayar tarafından döndürülen model, çıkarım için daha fazla konuşlandırılabilir.

Veri seti, eğitim, doğrulama ve test setlerini içerir.

AWS PyTorch DLC'yi SageMaker Python SDK'dan bir betik moduyla kullanıyoruz; transformers kitaplık, kapsayıcının üstüne bağımlılık olarak kurulur. SageMaker'ı tanımlıyoruz PyTorch ince ayarı gerçekleştirmek için tahmin edici ve önceden eğitilmiş model, öğrenme hızı ve dönem sayıları gibi bir dizi hiperparametre. İlişki çıkarma modelinde ince ayar yapma kodu, entry_point.py. Aşağıdaki koda bakın:

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/",
    }
)

Eğitim işinin tamamlanması yaklaşık 31 dakika sürer. Bu modeli, uzatma test setinde çıkarım yapmak ve sonuçları kullanarak değerlendirmek için kullanıyoruz. doğruluk, F1 makrosu, ve F1 mikro puanlar. Aşağıdaki ekran görüntüsü değerlendirme puanlarını göstermektedir.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

SageMaker otomatik model ayarıyla ince ayar performansını daha da iyileştirin

Önceki bölümlere benzer şekilde, bir HyperparameterTuner SageMaker hiperparametre ayarlama API'leri ile etkileşim kurmak için nesne. çağırarak hiperparametre ayarlama işini başlatabiliriz. fit yöntem:

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/",
})

Hiperparametre ayarlama işi tamamlandığında çıkarım yapıyoruz ve değerlendirme puanını kontrol ediyoruz.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

Bekletme test verilerinde HPO'lu modelin daha iyi performans gösterdiğini görebiliriz.

Belge özeti

Belge veya metin özetleme, büyük miktarda metin verisini, orijinal içerikteki en önemli veya ilgili bilgileri temsil eden anlamlı cümlelerin daha küçük bir alt kümesine yoğunlaştırma görevidir. Belge özetleme, önemli bilgileri büyük miktarda metin verisinden birkaç cümleye ayırmak için yararlı bir tekniktir. Metin özetleme, belge işleme ve bloglardan, makalelerden ve haberlerden bilgi çıkarma gibi birçok kullanım durumunda kullanılır.

Bu not defteri, belge özetleme modelinin konuşlandırılmasını gösterir. T5 tabanlı itibaren Sarılma Yüz transformatörleri kütüphane. Ayrıca bir metin makalesi kullanarak dağıtılan uç noktaları test ediyoruz ve Hugging Face yerleşik değerlendirme metriğini kullanarak sonuçları değerlendiriyoruz. ROUGE.

Soru cevaplama ve NER not defterlerine benzer şekilde, PyTorchModel ile birlikte SageMaker Python SDK'dan entry_point.py T5 tabanlı modeli bir HTTPS uç noktasına yüklemek için komut dosyası. Uç nokta başarıyla konuşlandırıldıktan sonra, bir tahmin yanıtı almak için uç noktaya bir metin makalesi gönderebiliriz:

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 ."""

Ardından, ROUGE metriğini kullanarak metin makalesini ve özetleme sonucunu değerlendirip karşılaştırıyoruz. Üç değerlendirme ölçütü hesaplanır: rougeN, rougeL, ve rougeLsum. rougeN eşleşen sayısını ölçer n-grams model tarafından oluşturulan metin (özetleme sonucu) ile bir reference (giriş metni). Metrikler rougeL ve rougeLsum oluşturulan ve referans özetlerinde en uzun ortak alt dizileri arayarak kelimelerin en uzun eşleşen dizilerini ölçün. Her metrik için kesinlik, hatırlama ve F1 puanı için güven aralıkları hesaplanır. Aşağıdaki koda bakın:

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))

Temizlemek

Bu çözüm için oluşturulan kaynaklar kullanılarak silinebilir. Tüm kaynakları sil SageMaker Studio IDE'den düğme. Her not defteri ayrıca uç noktaları silmek için kodu içeren bir temizleme bölümü sağlar.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.

Sonuç

Bu gönderide, beş farklı NLP görevini çözmek için en son makine öğrenimi tekniklerinin nasıl kullanılacağını gösterdik: belge özetleme, metin sınıflandırma, soru ve yanıtlama, adlandırılmış varlık tanıma ve Jumpstart kullanarak ilişki çıkarma. Jumpstart'ı hemen kullanmaya başlayın!


Yazarlar Hakkında

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.Doktor Xin Huang Amazon SageMaker JumpStart ve Amazon SageMaker yerleşik algoritmaları için Uygulamalı Bilim Adamıdır. Ölçeklenebilir makine öğrenimi algoritmaları geliştirmeye odaklanmaktadır. Araştırma ilgi alanları, doğal dil işleme, tablo verileri üzerinde açıklanabilir derin öğrenme ve parametrik olmayan uzay-zaman kümelemesinin sağlam analizidir. ACL, ICDM, KDD konferansları ve Royal Statistical Society: Series A dergisinde birçok makalesi yayınlanmıştır.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.Vivek Gangasani Amazon Web Services'ta Kıdemli Makine Öğrenimi Çözümleri Mimarıdır. Startup'ların AI/ML uygulamalarını oluşturmasına ve çalıştırmasına yardımcı olur. Şu anda MLOps, ML Inference ve düşük kodlu ML'de çözümler sunmak için Konteynerler ve Makine Öğrenimindeki geçmişini birleştirmeye odaklanmıştır. Boş zamanlarında yeni restoranlar denemekten ve yapay zeka ve derin öğrenmede ortaya çıkan trendleri keşfetmekten keyif alıyor.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.Geremy Cohen AWS'ye sahip bir Çözüm Mimarıdır ve müşterilerin en yeni, bulut tabanlı çözümler oluşturmasına yardımcı olur. Boş zamanlarında sahilde kısa yürüyüşler yapmaktan, ailesiyle körfez bölgesini keşfetmekten, evin etrafındaki şeyleri tamir etmekten, evin etrafındaki şeyleri kırmaktan ve barbekü yapmaktan hoşlanıyor.

Amazon SageMaker JumpStart PlatoBlockchain Veri Zekası ile ince ayar ve HPO aracılığıyla metin belgelerinden önemli öngörüleri belirleyin. Dikey Arama. Ai.Neelam Koshiya AWS'de kurumsal çözüm mimarıdır. Şu anki odak noktası, kurumsal müşterilere stratejik iş sonuçları için bulut benimseme yolculuklarında yardımcı olmaktır. Boş zamanlarında okumaktan ve dışarıda olmaktan hoşlanır.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi