Amazon SageMaker JumpStart'ta GPT ve Bloom modelleriyle metin oluşturmayı çalıştırın

Aralık ayında 2020 AWS duyuruldu genel kullanılabilirliği Amazon SageMaker Hızlı Başlangıç, yeteneği Amazon Adaçayı Yapıcı bu, makine öğrenimine (ML) hızlı ve kolay bir şekilde başlamanıza yardımcı olur. JumpStart, popüler makine öğrenimi görevlerinde çok çeşitli önceden eğitilmiş modellerin tek tıkla ince ayarını ve dağıtımını ve ayrıca yaygın iş sorunlarını çözen bir dizi uçtan uca çözüm sunar. Bu özellikler, makine öğrenimi sürecinin her adımındaki yükü ortadan kaldırarak yüksek kaliteli modeller geliştirmeyi kolaylaştırır ve devreye alma süresini kısaltır.

Bu yazı, belirli makine öğrenimi görevleri için JumpStart'ın kullanılmasıyla ilgili bir serinin dördüncüsüdür. İçinde ilk yazıJumpStart'ta görüntü sınıflandırma kullanım senaryolarının nasıl çalıştırılacağını gösterdik. İçinde ikinci gönderimetin sınıflandırma kullanım senaryolarının nasıl çalıştırılacağını gösterdik. İçinde üçüncü gönderi, görüntü segmentasyonu kullanım senaryolarını çalıştırdık.

Bu yazıda, önceden eğitilmiş metin oluşturma modellerinin nasıl dağıtılacağına ilişkin adım adım bir açıklama sağlıyoruz. Aynı sonucu elde etmenin iki yolunu araştırıyoruz: JumpStart'ın grafik arayüzü aracılığıyla. Amazon SageMaker Stüdyosuve programlı olarak Hızlı Başlangıç ​​API'leri.

Doğrudan bu yazıda incelediğimiz JumpStart API koduna geçmek istiyorsanız aşağıdaki örnek Jupyter not defterine başvurabilirsiniz: JumpStart'a Giriş – Metin Oluşturma.

Hızlı Başlangıç'a genel bakış

JumpStart, tek bir satır kod yazmanıza gerek kalmadan çeşitli görevler için ML modellerini kullanmaya başlamanıza yardımcı olur. Şu anda JumpStart aşağıdakileri yapmanızı sağlar:

  • Yaygın ML görevleri için önceden eğitilmiş modelleri dağıtın – JumpStart, büyük, halka açık veri kümeleri üzerinde önceden eğitilmiş modellerin kolay dağıtımını sağlayarak, ortak makine öğrenimi görevlerini hiçbir geliştirme çabası olmadan çözmenize olanak tanır. Makine öğrenimi araştırma topluluğu, yakın zamanda geliştirilen modellerin çoğunluğunun kamuya açık hale getirilmesi için büyük miktarda çaba harcadı. JumpStart, nesne algılama, metin sınıflandırma ve metin oluşturma gibi en popüler 300 makine öğrenimi görevini kapsayan 15'den fazla modelden oluşan bir koleksiyona ev sahipliği yapar ve yeni başlayanların bunları kullanmasını kolaylaştırır. Bu modeller TensorFlow, PyTorch, Hugging Face ve MXNet gibi popüler model merkezlerinden alınmıştır.
  • Önceden eğitilmiş modellerde ince ayar yapın – JumpStart, kendi eğitim algoritmanızı yazmaya gerek kalmadan önceden eğitilmiş modellerde ince ayar yapmanızı sağlar. ML'de bir alanda öğrenilen bilgiyi başka bir alana aktarabilme yeteneğine denir. öğrenme aktarımı. Orijinal modelin eğitimine kıyasla çok daha düşük eğitim maliyetleriyle, daha küçük veri kümelerinizde doğru modeller üretmek için transfer öğrenimini kullanabilirsiniz. JumpStart ayrıca tablosal regresyon ve sınıflandırma için sıfırdan eğitebileceğiniz LightGBM, CatBoost, XGBoost ve Scikit-learn'e dayalı popüler eğitim algoritmalarını da içerir.
  • Önceden oluşturulmuş çözümleri kullanın – JumpStart, talep tahmini ve endüstriyel ve finansal uygulamalar gibi yaygın makine öğrenimi kullanım durumları için yalnızca birkaç tıklamayla dağıtabileceğiniz 17 çözümden oluşan bir set sunar. Çözümler, belirli bir iş kullanım durumunu çözmek için çeşitli AWS hizmetlerini bir araya getiren uçtan uca makine öğrenimi uygulamalarıdır. Onlar kullanırlar AWS CloudFormation hızlı dağıtım için şablonlar ve referans mimarileri; bu da bunların tamamen özelleştirilebilir olduğu anlamına gelir.
  • SageMaker algoritmaları için not defteri örneklerine bakın – SageMaker, veri bilimcilerin ve makine öğrenimi uygulayıcılarının makine öğrenimi modellerini hızlı bir şekilde eğitmeye ve dağıtmaya başlamalarına yardımcı olacak bir yerleşik algoritma paketi sağlar. JumpStart, bu algoritmaları hızlı bir şekilde kullanmak için kullanabileceğiniz örnek not defterleri sağlar.
  • Eğitim videolarını ve blogları inceleyin – JumpStart ayrıca size SageMaker'da farklı işlevleri nasıl kullanacağınızı öğreten çok sayıda blog yazısı ve video sağlar.

JumpStart, özel VPC ayarlarını kabul eder ve AWS Anahtar Yönetim Hizmeti (AWS KMS) şifreleme anahtarları, böylece mevcut modelleri ve çözümleri kurumsal ortamınızda güvenle kullanabilirsiniz. Güvenlik ayarlarınızı Studio içinde veya SageMaker Python SDK aracılığıyla JumpStart'a iletebilirsiniz.

Metin oluşturma, GPT-2 ve Bloom

Metin oluşturma, akıcı ve insan tarafından yazılan metinden ayırt edilemez görünen metin üretme görevidir. Aynı zamanda şu şekilde de bilinir: doğal dil üretimi.

GPT-2 popüler bir transformatör tabanlı metin oluşturma modelidir. İnsan etiketlemesi içermeyen geniş bir ham İngilizce metin külliyatı üzerinde önceden eğitilmiştir. Kısmi bir dizi (cümle veya metin parçası) verildiğinde, modelin dizideki bir sonraki kelimeyi veya belirteci tahmin etmesi gereken görev üzerinde eğitilmiştir.

Bloom aynı zamanda transformatör tabanlı bir metin oluşturma modelidir ve GPT-2'ye benzer şekilde eğitilmiştir. Ancak Bloom, 46 farklı dil ve 13 programlama dili konusunda önceden eğitilmiştir. Aşağıda Bloom modeliyle metin oluşturmanın çalıştırılmasına bir örnek verilmiştir:

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

Çözüme genel bakış

Aşağıdaki bölümlerde, hem Studio kullanıcı arayüzü hem de JumpStart API'leri aracılığıyla çıkarım gerçekleştirmek için adım adım bir demo sağlanmaktadır. Aşağıdaki adımlardan geçiyoruz:

  1. Önceden eğitilmiş model üzerinde çıkarımı dağıtmak ve çalıştırmak için JumpStart'a Studio kullanıcı arayüzü üzerinden erişin.
  2. Önceden eğitilmiş modeli dağıtmak ve çıkarımı çalıştırmak için JumpStart'ı SageMaker Python SDK ile programlı olarak kullanın.

JumpStart'a Studio kullanıcı arayüzü üzerinden erişin ve önceden eğitilmiş bir modelle çıkarım yapın

Bu bölümde JumpStart modellerinin Studio kullanıcı arayüzü aracılığıyla nasıl eğitilip dağıtılacağını gösteriyoruz.

Aşağıdaki video, JumpStart'ta önceden eğitilmiş bir metin oluşturma modelini nasıl bulacağınızı ve onu nasıl dağıtacağınızı gösterir. Model sayfası model ve nasıl kullanılacağı hakkında değerli bilgiler içermektedir. JumpStart'ta mevcut olan önceden eğitilmiş modellerden herhangi birini konuşlandırabilirsiniz. Çıkarım için ml.p3.2xlarge bulut sunucusu türünü seçiyoruz çünkü bu, düşük çıkarım gecikmesi için gereken GPU hızlandırmasını düşük bir fiyatla sağlıyor. SageMaker barındırma örneğini yapılandırdıktan sonra Sürüş. Kalıcı uç noktanızın çalışır duruma gelmesi 20-25 dakika sürebilir.

Uç noktanız çalışır hale geldiğinde çıkarım isteklerine yanıt vermeye hazırdır!

Çıkarım sürenizi hızlandırmak için JumpStart, yeni dağıtılan uç noktanızda çıkarımı nasıl çalıştıracağınızı gösteren örnek bir not defteri sağlar. Seçmek Not Defterini Aç altında Studio'dan Endpoint'i kullanın.

JumpStart'ı SageMaker SDK ile programlı olarak kullanın

Önceki bölümde, birkaç tıklamayla önceden eğitilmiş bir modeli etkileşimli olarak dağıtmak için JumpStart Kullanıcı Arayüzünü nasıl kullanabileceğinizi gösterdik. Ancak JumpStart'ın modellerini, SageMaker SDK'ya entegre edilmiş API'leri kullanarak programlı olarak da kullanabilirsiniz.

Bu bölümde, önceki işlemi SageMaker SDK ile nasıl kopyalayabileceğinize dair hızlı bir örnek üzerinden geçeceğiz. JumpStart'ta önceden eğitilmiş uygun bir model seçiyoruz, bu modeli bir SageMaker uç noktasına konuşlandırıyoruz ve konuşlandırılan uç nokta üzerinde çıkarım yapıyoruz. Bu demodaki tüm adımlar beraberindeki not defterinde mevcuttur JumpStart'a Giriş – Metin Oluşturma.

Önceden eğitilmiş modeli dağıtın

SageMaker, derleme ve çalışma zamanı görevleri için Docker kapsayıcılarını kapsamlı şekilde kullanan bir platformdur. JumpStart mevcut çerçeveye özgü olanı kullanır SageMaker Derin Öğrenme Kapsayıcıları (DLC'ler). Seçilen göreve yönelik eğitim ve çıkarımları gerçekleştirmek için öncelikle ek paketlerin yanı sıra komut dosyalarını da getiriyoruz. Son olarak, önceden eğitilmiş model yapıları ayrı olarak getirilir. model_uris, platforma esneklik sağlar. Tek bir çıkarım komut dosyasıyla aynı görev üzerinde önceden eğitilmiş istediğiniz sayıda modeli kullanabilirsiniz. Aşağıdaki koda bakın:

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Bloom çok büyük bir modeldir ve konuşlandırılması 20-25 dakika kadar sürebilir. GPT-2 gibi daha küçük bir modeli de kullanabilirsiniz. Önceden eğitilmiş bir GPT-2 modelini dağıtmak için model_id = huggingface-textgeneration-gpt2. JumpStart'taki diğer mevcut modellerin listesi için bkz. Hızlı Başlangıç ​​Mevcut Model Tablosu.

Ardından, kaynakları bir Adaçayı Yapıcı modeli bir uç noktayı örnekleyin ve dağıtın:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

Modelimiz konuşlandırıldıktan sonra, ondan gerçek zamanlı olarak tahminler alabiliriz!

çıkarımı çalıştır

Aşağıdaki kod parçacığı, çıktıların nasıl göründüğüne dair bir fikir verir. Dağıtılmış bir modele istek göndermek için giriş metninin bir biçimde sağlanması gerekir. utf-8 kodlanmış format

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

Uç nokta yanıtı, giriş metnini ve ardından oluşturulan metni içeren bir JSON nesnesidir:

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

Çıktımız şu şekilde:

"Some people like dogs, some people like cats some people like birds, some people like fish,"

Sonuç

Bu yazıda, JumpStart'ı kullanarak önceden eğitilmiş bir metin oluşturma modelinin nasıl dağıtılacağını gösterdik. Bunu kod yazmaya gerek kalmadan yapabilirsiniz. Çözümü kendi başınıza deneyin ve yorumlarınızı bize gönderin. JumpStart hakkında daha fazla bilgi edinmek ve açık kaynak önceden eğitilmiş modelleri çeşitli diğer makine öğrenimi görevleri için nasıl kullanabileceğinizi öğrenmek için aşağıdakilere göz atın. AWS re:Invent 2020 videosu.


Yazarlar Hakkında

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence'da GPT ve Bloom modelleriyle metin oluşturmayı çalıştırın. Dikey Arama. Ai.Dr.Vivek Madan Amazon SageMaker JumpStart ekibinde Uygulamalı Bilim Adamıdır. 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 JumpStart PlatoBlockchain Data Intelligence'da GPT ve Bloom modelleriyle metin oluşturmayı çalıştırın. Dikey Arama. Ai.Santosh Kulkarni Avustralya'daki spor müşterileriyle çalışan Amazon Web Services'de Kurumsal Çözümler Mimarıdır. AI/ML, büyük veri ve yazılım geliştirme konusundaki bilgilerini kullanarak iş sorunlarını çözmek için büyük ölçekli dağıtılmış uygulamalar oluşturma konusunda tutkulu.

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence'da GPT ve Bloom modelleriyle metin oluşturmayı çalıştırın. Dikey Arama. Ai.Ashish Khetan Amazon SageMaker yerleşik algoritmalarına sahip Kıdemli Uygulamalı Bilim Adamıdır ve makine öğrenimi algoritmalarının geliştirilmesine yardımcı olur. Doktora derecesini University of Illinois Urbana Champaign'den almıştır. Makine öğrenimi ve istatistiksel çıkarım alanları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