Amazon SageMaker'da TensorFlow metin sınıflandırma modelleri için öğrenimi aktarın

Amazon Adaçayı Yapıcı bir süit sağlar yerleşik algoritmalar, önceden eğitilmiş modeller, ve önceden oluşturulmuş çözüm şablonları veri bilimcilerin ve makine öğrenimi (ML) pratisyenlerinin ML modellerini hızla eğitmeye ve dağıtmaya başlamasına yardımcı olmak için. Bu algoritmaları ve modelleri hem denetimli hem de denetimsiz öğrenme için kullanabilirsiniz. Tablo, resim ve metin dahil olmak üzere çeşitli girdi verilerini işleyebilirler.

Bu gönderi, SageMaker'daki yeni yerleşik algoritmalar serisinin üçüncüsü. İçinde ilk yazı, SageMaker'ın görüntü sınıflandırması için yerleşik bir algoritmayı nasıl sağladığını gösterdik. İçinde ikinci gönderi, SageMaker'ın nesne algılama için nasıl yerleşik bir algoritma sağladığını gösterdik. Bugün, SageMaker'ın TensorFlow kullanarak metin sınıflandırması için yeni bir yerleşik algoritma sağladığını duyuruyoruz. Bu denetimli öğrenme algoritması, mevcut birçok önceden eğitilmiş model için transfer öğrenmeyi destekler. TensorFlow merkezi. Girdi olarak bir metin parçası alır ve her sınıf etiketinin olasılığını verir. Bu önceden eğitilmiş modellerde, büyük bir metin topluluğu olmadığında bile aktarım öğrenimini kullanarak ince ayar yapabilirsiniz. SageMaker aracılığıyla kullanılabilir yerleşik algoritmalararacılığıyla hem de SageMaker Hızlı Başlangıç ​​Kullanıcı Arayüzü in Amazon SageMaker Stüdyosu. Daha fazla bilgi için bkz. Metin Sınıflandırması ve örnek defter JumpStart'a Giriş – Metin Sınıflandırması.

SageMaker'da TensorFlow ile Metin Sınıflandırma, TensorFlow Hub'da bulunan önceden eğitilmiş birçok modelde aktarım öğrenimi sağlar. Eğitim verilerindeki sınıf etiketlerinin sayısına göre, önceden eğitilmiş TensorFlow hub modeline bir sınıflandırma katmanı eklenir. Sınıflandırma katmanı, bir bırakma katmanı ve rasgele ağırlıklarla başlatılan 2-norm düzenleyicili, tam bağlantılı yoğun bir katmandan oluşur. Model eğitimi, bırakma katmanının bırakma oranı için hiper parametrelere ve yoğun katman için L2 düzenleme faktörüne sahiptir. Ardından, önceden eğitilmiş model de dahil olmak üzere tüm ağ veya yalnızca en üst sınıflandırma katmanı yeni eğitim verileri üzerinde ince ayar yapılabilir. Bu transfer öğrenme modunda, daha küçük bir veri seti ile bile eğitim gerçekleştirilebilir.

Yeni TensorFlow metin sınıflandırma algoritması nasıl kullanılır?

Bu bölüm, TensorFlow metin sınıflandırma algoritmasının aşağıdakilerle nasıl kullanılacağını açıklar. SageMaker Python SDK'sı. Studio kullanıcı arayüzünden nasıl kullanılacağı hakkında bilgi için bkz. Adaçayı Yapıcı Hızlı Başlangıç.

Algoritma, aşağıda listelenen önceden eğitilmiş modeller için transfer öğrenimini destekler. Tensorflow modelleri. Her model benzersiz bir model_id. Aşağıdaki kod, tarafından tanımlanan BERT temel modeline nasıl ince ayar yapılacağını gösterir. model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 özel bir eğitim veri kümesinde. Her biri için model_idaracılığıyla bir SageMaker eğitim işi başlatmak için Tahminci SageMaker Python SDK sınıfı için, SageMaker'da sağlanan yardımcı işlevler aracılığıyla Docker görüntü URI'sini, eğitim komut dosyası URI'sini ve önceden eğitilmiş model URI'sini getirmelisiniz. Eğitim komut dosyası URI'si, veri işleme, önceden eğitilmiş modeli yükleme, model eğitimi ve eğitilmiş modeli çıkarım için kaydetme için gerekli tüm kodu içerir. Önceden eğitilmiş model URI'si, önceden eğitilmiş model mimarisi tanımını ve model parametrelerini içerir. Önceden eğitilmiş model URI, belirli modele özeldir. Önceden eğitilmiş model tarball'ları TensorFlow'dan önceden indirilmiş ve uygun model imzasıyla Amazon Basit Depolama Hizmeti (Amazon S3) paketleri, eğitim işinin ağ izolasyonunda çalışması için. Aşağıdaki koda bakın:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# 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 for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Bu modele özgü eğitim yapıtlarıyla, bir nesneyi oluşturabilirsiniz. Tahminci sınıf:

# Create SageMaker Estimator instance
tf_tc_estimator = Estimator(
    role=aws_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,)

Daha sonra, özel veri kümenizde öğrenimi aktarmak için, şurada listelenen eğitim hiperparametrelerinin varsayılan değerlerini değiştirmeniz gerekebilir. Hiperparametreler. Bu hiperparametrelerin Python sözlüğünü arayarak varsayılan değerleriyle getirebilirsiniz. hyperparameters.retrieve_default, bunları gerektiği gibi güncelleyin ve ardından bunları Estimator sınıfına iletin. Bazı hiperparametrelerin varsayılan değerlerinin farklı modeller için farklı olduğunu unutmayın. Büyük modeller için varsayılan parti boyutu daha küçüktür ve train_only_top_layer hiperparametre olarak ayarlandı True. hiperparametre Train_only_top_layer ince ayar işlemi sırasında hangi model parametrelerinin değiştiğini tanımlar. Eğer train_only_top_layer is True, sonra sınıflandırma katmanlarının parametreleri değişir ve ince ayar işlemi sırasında parametrelerin geri kalanı sabit kalır. Öte yandan, eğer train_only_top_layer is False, ardından modelin tüm parametreleri ince ayar yapılır. Aşağıdaki koda bakın:

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["epochs"] = "5"

Biz sağlıyoruz SST2 modellerde ince ayar yapmak için varsayılan veri kümesi olarak. Veri seti, olumlu ve olumsuz film incelemelerini içerir. Şuradan indirildi TensorFlow altında Apache 2.0 Lisansı. Aşağıdaki kod, S3 paketlerinde barındırılan varsayılan eğitim veri kümesini sağlar.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Son olarak, modelde ince ayar yapmak üzere SageMaker eğitim işini başlatmak için, eğitim veri kümesinin Amazon S3 konumunu geçerken Estimator sınıfının nesnesine .fit çağrısı yapın:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Özel bir veri kümesinde aktarım öğrenimi için yeni SageMaker TensorFlow metin sınıflandırma algoritmasının nasıl kullanılacağı hakkında daha fazla bilgi için ince ayarlanmış modeli dağıtın, dağıtılan model üzerinde çıkarım çalıştırın ve ilk ince ayar olmadan önceden eğitilmiş modeli olduğu gibi dağıtın özel bir veri kümesinde aşağıdaki örnek not defterine bakın: JumpStart'a Giriş – Metin Sınıflandırması.

TensorFlow metin sınıflandırma algoritması için giriş/çıkış arayüzü

Listelenen önceden eğitilmiş modellerin her birine ince ayar yapabilirsiniz. TensorFlow Modelleri herhangi bir sayıda sınıf içeren metin cümlelerinden oluşan herhangi bir veri kümesine. Önceden eğitilmiş model, Metin Gömme modeline bir sınıflandırma katmanı ekler ve katman parametrelerini rastgele değerlere başlatır. Sınıflandırma katmanının çıktı boyutu, girdi verilerinde algılanan sınıfların sayısına göre belirlenir. Amaç, giriş verilerindeki sınıflandırma hatalarını en aza indirmektir. İnce ayar ile döndürülen model, çıkarım için daha fazla konuşlandırılabilir.

Aşağıdaki talimatlar, modele giriş için eğitim verilerinin nasıl biçimlendirilmesi gerektiğini açıklar:

  • Giriş – data.csv dosyası içeren bir dizin. İlk sütunun her satırı, 0 ile sınıf sayısı arasında tamsayı sınıf etiketlerine sahip olmalıdır. İkinci sütunun her satırı ilgili metin verisine sahip olmalıdır.
  • Çıktı – Çıkarım için dağıtılabilen veya artımlı eğitim kullanılarak daha fazla eğitilebilen ince ayarlanmış bir model. Modellerle birlikte, sınıf dizinlerini sınıf etiketlerine eşleyen bir dosya kaydedilir.

Aşağıda bir girdi CSV dosyası örneği verilmiştir. Dosyanın herhangi bir başlığı olmaması gerektiğini unutmayın. Dosya, aşağıdakine benzer bir yola sahip bir S3 klasöründe barındırılmalıdır: s3://bucket_name/input_directory/. takip ettiğini unutmayın / gerekli.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

TensorFlow metin sınıflandırma algoritmasıyla çıkarım

Oluşturulan modeller, çıkarım ve destek metni için barındırılabilir. application/x-text içerik türü. Çıktı, tüm sınıflar için olasılık değerlerini, sınıf etiketlerini ve JSON formatında kodlanmış en yüksek olasılığa sahip sınıf indeksine karşılık gelen tahmini etiketi içerir. Model, istek başına tek bir dize işler ve yalnızca bir satır verir. Aşağıda bir JSON biçimi yanıtı örneği verilmiştir:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept ayarlandı application/json, o zaman model yalnızca olasılıkları verir. Eğitim ve çıkarım hakkında daha fazla ayrıntı için, Örnek Not Defterine Giriş'e bakın. JumpStart'a Giriş – Metin Sınıflandırması.

JumpStart UI aracılığıyla SageMaker yerleşik algoritmalarını kullanın

Ayrıca SageMaker TensorFlow metin sınıflandırmasını ve diğer yerleşik algoritmalardan herhangi birini JumpStart UI aracılığıyla birkaç tıklamayla kullanabilirsiniz. JumpStart, çeşitli ML çerçevelerinden ve model hub'larından yerleşik algoritmaları ve önceden eğitilmiş modelleri bir grafik arabirim aracılığıyla eğitmenize ve dağıtmanıza olanak tanıyan bir SageMaker özelliğidir. Ayrıca, hedeflenen bir kullanım senaryosunu çözmek için makine öğrenimi modellerini ve diğer çeşitli AWS hizmetlerini bir araya getiren tam teşekküllü makine öğrenimi çözümlerini dağıtmanıza olanak tanır.

Aşağıda, JumpStart Kullanıcı Arayüzü aracılığıyla birkaç tıklamayla gerçekleştirdiğimiz aynı ince ayar ve dağıtım sürecini nasıl tekrarlayabileceğinizi gösteren iki video bulunmaktadır.

Önceden eğitilmiş modelde ince ayar yapın

İşte aynı önceden eğitilmiş metin sınıflandırma modeline ince ayar yapma süreci.

İnce ayarlanmış modeli dağıtın

Model eğitimi tamamlandıktan sonra, modeli tek tıklamayla kalıcı, gerçek zamanlı bir uç noktaya doğrudan dağıtabilirsiniz.

Sonuç

Bu gönderide, SageMaker TensorFlow metin sınıflandırma yerleşik algoritmasının kullanıma sunulduğunu duyurduk. Bu algoritmayı kullanarak TensorFlow hub'ından önceden eğitilmiş bir model kullanarak özel bir veri kümesinde aktarım öğreniminin nasıl yapılacağına ilişkin örnek kod sağladık.

Daha fazla bilgi için belgeleme ve örnek defter JumpStart'a Giriş – Metin Sınıflandırması.


yazarlar hakkında

Amazon SageMaker PlatoBlockchain Data Intelligence'daki TensorFlow metin sınıflandırma modelleri için öğrenimi aktarın. Dikey Arama. Ai.Dr.Vivek Madan Uygulamalı Bilim Adamıdır Amazon SageMaker Hızlı Başlangıç ​​ekibi. Doktorasını Urbana-Champaign'deki Illinois Üniversitesi'nden aldı ve Georgia Tech'de Doktora Sonrası Araştırmacıydı. Makine öğrenimi ve algoritma tasarımında aktif bir araştırmacıdır ve EMNLP, ICLR, COLT, FOCS ve SODA konferanslarında makaleler yayınlamıştır.

Amazon SageMaker PlatoBlockchain Data Intelligence'daki TensorFlow metin sınıflandırma modelleri için öğrenimi aktarın. Dikey Arama. Ai.Joao Moura Amazon Web Services'de AI/ML Uzman Çözüm Mimarıdır. Çoğunlukla NLP kullanım örneklerine odaklanıyor ve müşterilerin derin öğrenme modeli eğitimini ve dağıtımını optimize etmesine yardımcı oluyor. Ayrıca, düşük kodlu ML çözümlerinin ve ML'ye özel donanımın aktif bir savunucusudur.

Amazon SageMaker PlatoBlockchain Data Intelligence'daki TensorFlow metin sınıflandırma modelleri için öğrenimi aktarın. Dikey Arama. Ai.Ashish Khetan Kıdemli Uygulamalı Bilim Adamıdır Amazon SageMaker yerleşik algoritmaları ve makine öğrenimi algoritmalarının geliştirilmesine yardımcı olur. Doktorasını University of Illinois Urbana Champaign'den aldı. Makine öğrenimi ve istatistiksel çıkarım konularında aktif bir araştırmacıdır ve NeurIPS, ICML, ICLR, JMLR, ACL ve EMNLP konferanslarında birçok makale yayınlamıştır.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi