AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。

AlexaTM 20B が Amazon SageMaker JumpStart で利用可能になりました

本日、Amazon の最先端技術が一般公開されたことを発表します 20 億のパラメーターを持つ Alexa 教師モデル  (AlexaTM 20B) を通して Amazon SageMaker ジャンプスタート、SageMaker の機械学習ハブ。 AlexaTM 20B は、Amazon が開発した多言語の大規模な sequence-to-sequence (seq2seq) 言語モデルです。 AlexaTM 20B は、財務レポートの要約からカスタマー サービス チャットボットの質問応答まで、業界の幅広いユース ケースに使用できます。 利用可能なトレーニング例がわずかしかない場合や、まったくない場合でも適用できます。 AlexaTM 20B 優れたパフォーマンス 175億 GPT-3 モデル SuperGLUE などのゼロショット学習タスクで、XNLI などの多言語ゼロショット タスクで最先端のパフォーマンスを示します。

この投稿では、JumpStart API を介してプログラムで AlexaTM 20B モデルを展開し、推論を実行する方法の概要を説明します。 SageMaker Python SDK. このモデルを使用して、複数の言語間で翻訳し、長い形式のテキストを要約し、特定のコンテキストに基づいて質問に回答し、人間が書いたテキストと見分けがつかないように見えるテキストを生成する方法を例示します。

AlexaTM 20B とインコンテキスト学習

Amazon Alexa AI による Alexa Teacher Model (AlexaTM) プログラムは、大規模な多言語ディープ ラーニング モデル (主に Transformer ベース) を構築するように設計されており、一般化を改善し、ダウンストリーム タスクのデータ不足を処理することを目的としています。 大規模な事前トレーニングにより、教師モデルは適切に一般化され、スパース データから新しいタスクを学習し、開発者がダウンストリーム タスクのパフォーマンスを向上させるのに役立ちます。 AlexaTM 20B が示した 競争力のあるパフォーマンス 機械翻訳、データ生成、要約などの一般的な自然言語処理 (NLP) ベンチマークとタスクについて。

AlexaTM 20B などの基礎モデルを使用すると、高価なモデルの事前トレーニングの必要性が減り、労力とタスク固有のトレーニング データが少ないタスク モデルを開発するための最先端の出発点が提供されます。 基礎モデルの重要な機能の XNUMX つは、非常に少量の入力例を使用して、微調整や勾配の更新を必要とせずに、さまざまな言語で質問と回答などの新しいタスクを実行するようにモデルに教えることができることです。 これは次のように知られています。 インコンテキスト学習. 推論のコンテキストとして提供される新しいタスクの例はほんのわずかですが、AlexaTM 20B モデルは、言語を超えても、大規模な事前トレーニング中に学んだことから知識を伝達できます。 これは 少数ショット学習. 場合によっては、何を予測すべきかの説明だけで、トレーニング データがまったくなくても、モデルが適切に機能することがあります。 これは ゼロショット学習. たとえば、ワンショット自然言語生成に AlexaTM 20B を使用しているとします。 モデルに渡される入力は、属性と値のペアの形式のトレーニング例と、それに対応する出力テキストの説明です。 次の図に示すように、テスト例が追加されて、完全な入力プロンプトが形成されます。

モデルの詳細については、こちらをご覧ください 20B パラメータの Alexa モデルは、少数ショット学習に新たな成果をもたらします または元 .

AlexaTM 20B の使用は非営利目的で利用可能であり、 Alexa Teacher Model ライセンス契約.

ソリューションの概要

次のセクションでは、モデルをデプロイし、推論を実行し、インコンテキスト学習を実行して、少数ショットの学習タスクを解決する方法について、段階的なデモを提供します。

次のセクションにはコード スニペットが含まれていることに注意してください。 このデモのすべてのステップを含む完全なコードは、付属のノートブックで入手できます。 SageMaker JumpStart の AlexaTM 20B を使用したインコンテキスト学習.

モデルを展開する

SageMaker で大規模な言語モデルを使用するには、モデル固有の推論スクリプトが必要です。これには、モデルの読み込み、並列化などの手順が含まれます。 また、スクリプト、モデル、および目的のインスタンス タイプのエンド ツー エンド テストを作成して、XNUMX つすべてが連携できることを検証する必要もあります。 JumpStart は、しっかりとテストされたすぐに使えるスクリプトを提供することで、この手間を省きます。

SageMaker を使用すると、トレーニングと推論のために Docker コンテナを広範囲に実行できます。 JumpStart は、これらの利用可能なフレームワーク固有のものを使用します SageMakerディープラーニングコンテナ (DLC)。 最適化されたDLCを取得することから始めます(deploy_image_uri)を使用して、 model_id. 次に、 model_uri モデル パラメーター、推論処理スクリプト、および関連する依存関係が含まれています。 次に、 モデル インスタンス SageMaker で作成し、リアルタイム エンドポイントにデプロイします。 次のコードを参照してください。

# model_version="*" fetches the latest version of the model
model_id, model_version = "pytorch-textgeneration1-alexa20b", "*"

instance_type = "ml.g4dn.12xlarge"

# 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 model uri. This includes the model parameters, all dependencies and scripts for model loading, inference handling etc.
 model_uri = model_uris.retrieve(
 model_id=model_id, 
 model_version=model_version, 
 model_scope="inference")

AlexaTM 20B をデプロイするには、少なくとも 50 GB の CPU メモリと少なくとも 42 GB の GPU メモリを備えた GPU を利用したインスタンスが必要です。 SageMaker は、リアルタイムの推論をサポートする多くのインスタンスを提供します。 ml.g4dn.12xlarge、ml.p3.8xlarge、ml.p3.16xlarge の XNUMX つのインスタンスでこのソリューションをテストしました。 次のコードを参照してください。

env = {
        "SAGEMAKER_MODEL_SERVER_TIMEOUT": str(3600),
        "MODEL_CACHE_ROOT": "/opt/ml/model",
        "SAGEMAKER_ENV": "1",
        "SAGEMAKER_SUBMIT_DIRECTORY":"/opt/ml/model/code/",
        "SAGEMAKER_PROGRAM": "inference.py",
        "SAGEMAKER_MODEL_SERVER_WORKERS": "1", # One worker for the endpoint rather than one worker per GPU by default
        "TS_DEFAULT_WORKERS_PER_MODEL":"1" # 1 TS worker which allocates all memory to the single master worker.
    }
    
#Create the SageMaker model instance. 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.
model = Model(
    image_uri=deploy_image_uri,
    model_data=model_uri,
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
    env=env
)

次に、モデルを SageMaker リアルタイム エンドポイントにデプロイします。

# deploy the Model.
model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=instance_type,
    endpoint_name=endpoint_name,
    volume_size= volume_size, # Specify the size of the Amazon EBS volume in GBs.
    model_data_download_timeout = 3600, # Specify the model download timeout in seconds.
    container_startup_health_check_timeout = 3600, # Specify the health checkup timeout in seconds
)

AlexaTM 20B では、推論コンテナーに 40 GB のディスク容量が必要です。 ml.g4dn.12xlarge インスタンスはこの要件を満たします。 インスタンス タイプ ml.p3.8xlarge および ml.p3.16xlarge の場合、 Amazon Elastic Blockストア (Amazon EBS) 大きなモデル サイズを処理するためのボリューム。 したがって、設定します volume_size = None ml.g4dn.12xlarge にデプロイする場合と volume_size=256 ml.p3.8xlarge または ml.p3.16xlarge にデプロイする場合。

モデルのデプロイには最大 10 分かかる場合があります。 モデルがデプロイされた後、リアルタイムで予測を取得できます!

推論を実行する

AlexaTM 20B は、部分シーケンス (文またはテキストの一部) を指定して、次の単語セットを生成するテキスト生成モデルです。 次のコード スニペットは、デプロイしたエンドポイントをクエリし、オートコンプリート タスクの出力を解析する方法を示しています。 デプロイされたモデルにリクエストを送信するには、UTF-8 形式でエンコードされた JSON ディクショナリを使用します。 エンドポイントの応答は、生成されたテキストのリストを含む JSON オブジェクトです。

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

    payload = {"text_inputs": text}
    if kwargs is not None:
        payload.update(kwargs)
        
    encoded_inp = json.dumps(payload).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_inp,
        {
            "ContentType": "application/json",
            "Accept": "application/json",
        },
    )
    return query_response
 
def parse_response(query_response):
    """Parse response and return the generated texts."""

    model_predictions = json.loads(query_response)
    generated_texts = model_predictions["generated_texts"]
    return generated_texts

次に、エンドポイントにクエリを実行し、サンプル入力テキストの応答を解析します。

# text can be a single string or a list of strings
text = “[CLM]My name is Lewis and I like to"
kwargs = {"num_beams": 5, "no_repeat_ngram_size": 2, “max_length”: 50}
query_response = query_endpoint(model_predictor, text, kwargs)
generated_texts = parse_response(query_response)

Generated_texts: “travel and meet new people. I have been to many countries and I like to meet people from all over the world. If you are interested in meeting me, please feel free to send me a message and we can arrange a meeting.”

AlexaTM 20B は現在、推論中に 10 個のテキスト生成パラメーターをサポートしています。 max_length, num_return_sequences, num_beams, no_repeat_ngram_size, temperature, early_stopping, do_sample, top_k, top_p, seed. 各パラメーターの有効な値と出力への影響の詳細については、付属のノートブックを参照してください。 SageMaker JumpStart の AlexaTM 20B を使用したインコンテキスト学習.

インコンテキスト学習

インコンテキスト学習とは、次のことを指します。言語モデルにプロンプ​​トを提供します。これは、タスクを示す入力と出力のペアのトレーニングで構成されます。 プロンプトにテスト入力を追加し、プロンプトを条件付けして次のトークンまたは単語を予測することにより、言語モデルが予測できるようにします。 これは、いくつかのトレーニング サンプルからタスクを学習する、いくつかのショット学習問題を解決するための非常に効果的な手法です。

次に、コンテキスト内学習を介して、AlexaTM 20B をいくつかのワンショットおよびゼロショット タスクに使用する方法を示します。 以前のシーケンスからシーケンスへのモデルとは異なり、AlexaTM 1B はノイズ除去に加えて因果言語モデリングでトレーニングされているため、文脈内学習の優れたモデルとなっています。

ワンショットテキスト要約

テキスト要約は、データを短縮し、元のテキストに存在する最も重要な情報を表す要約を作成するタスクです。 ワンショットテキスト要約とは、単一のトレーニングサンプルに基づいてテキストを要約することを学習する設定を指します。 次のコードは、 XSUM データセット:

train_article = "The announcement ends months of uncertainty for Cornish Language Partnership staff whose contracts had been due to end. Local government minister Andrew Stunnell said the three-year funding package for the service would help make sure the language survived. But he warned that long term funding should come from Cornwall. He said it was "important to make sure the Cornish were given the opportunity to put down sound foundations." "In the longer term support for the Cornish language is going to be something which is going to have to be based in Cornwall and will not come from London," he added. The Cornish Language Partnership's, Jennifer Lowe, said: "We can now plan for the future thanks to the funding." The United Nations recently upgraded the status of the Cornish language from "extinct" to "critically endangered". It is thought fewer than 500 people worldwide are fluent in the language.""
                
train_summary = "The government is spending nearly £400,000 to help save the Cornish language."

test_article = "Torrents of water brought down a suspended ceiling and damaged stock "
                "in the Victoria Centre store at about 22:40 BST on Tuesday. Managers "
                "had hoped for a weekend reopening but it is now closed "until "
                "further notice". Staff have been helping with the clean-up "
                "operation. Water poured through from a rooftop room, leaving the "
                "top floor under three inches of water and stock "significantly" "
                "damaged. A spokeswoman said: "Our teams are working around the "
                "clock to get the shop open as quickly as possible and we're sorry "
                "for the inconvenience this has caused to our customers.""

トレーニング サンプルが XNUMX つだけ提供されている場合は、次のプロンプトを要約に使用します。 モデルから生成されたテキストは、テスト記事の予測された要約として解釈されます。

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。

出力は次のとおりです。

AlexaTM 20B output: 'The top floor of a London department store has been flooded.'

ワンショット自然言語生成

自然言語生成は、与えられた入力テキストからテキストの物語を生成するタスクです。 次のサンプルは、 E2E データセット:

train_inp = "name[The Punter], food[Indian], priceRange[cheap]"
train_out = "The Punter provides Indian food in the cheap price range."

test_inp = "name[Blue Spice], eatType[coffee shop], area"

トレーニング サンプル (1 ショット) が XNUMX つだけ提供される場合、自然言語生成に次のプロンプトを使用します。 モデルから生成されたテキストは、テスト入力の予測テキスト ナラティブとして解釈されます (test_inp).

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。

出力は次のとおりです。

AlexaTM 20B output: 'Blue Spice is a coffee shop in the city centre. '

ワンショット機械翻訳

機械翻訳は、テキストをある言語から別の言語に翻訳するタスクです。 次の例は、 WMT19 データセット ドイツ語から英語に翻訳する必要があります。

train_inp = "Das Parlament erhebt sich zu einer Schweigeminute."
train_out = "The House rose and observed a minute' s silence"

test_inp = "Kleingärtner bewirtschaften den einstigen Grund von Bauern."

トレーニング サンプル (1 ショット) が XNUMX つだけ提供されている場合は、次のプロンプトを機械翻訳に使用します。 モデルから生成されたテキストは、テスト入力の翻訳として解釈されます (test_inp).

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。

出力は次のとおりです。

AlexaTM 20B translation: 'Gardeners cultivate the former land of farmers.'

ゼロショット抽出質問応答

抽出的質問応答は、文脈段落から質問への回答を見つけるタスクです。 以下は、コンテキストと質問の例です。 SQuAD v2 データセット:

test_context = "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse ("Norman" comes from "Norseman") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries."
test_question = "In what country is Normandy located?"

このタスクのトレーニング サンプルがないことに注意してください。 代わりに、プロンプトに基づいて、プロンプトの最後の単語に関するダミーの質問を作成します。 test_context (ダミーショット)。 したがって、実際にはゼロショット抽出質問応答を行っています。

トレーニング サンプルが提供されていない場合は、次のプロンプトを使用して抽出質問に回答します。 モデルから生成されたテキストは、テストの質問に対する回答として解釈されます。

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。

出力は次のとおりです。

AlexaTM 20B output: 'France'

プロンプトエンジニアリング

迅速なエンジニアリングは、時には芸術になることもあります。 プロンプト テンプレートに小さな変更を加えただけでも、特定のタスクでのモデルのパフォーマンスが大幅に変わる可能性があります。 以下は、優れたプロンプト テンプレートを作成するためのいくつかのアドバイスです。 まず、モデルが実際の文の構造を学習するようにトレーニングされていることを覚えておくことが重要です (因果言語モデリング)。 そのため、プロンプト テンプレートが文法的にも構造的にも自然言語で正しいことを確認することをお勧めします。 第二に、この特定のモデルは、上記で示したように、答えで期待される構造を教えるのに役立つダミー ショットの恩恵を受けます。 第 XNUMX に、さまざまな候補プロンプト テンプレートでタスクのパフォーマンスを調べることを常にお勧めします。 プロンプトソース & 自然な指示 は、プロンプト テンプレートを標準化するための XNUMX つのオープン ソース フレームワークであり、既存のモデリング タスクに使用されるさまざまなサンプル プロンプトを提供します。 さらに、 AlexaTM 20B 紙 論文で提示された結果を生成するために使用されるプロンプト テンプレートを提供します。 自然言語と継続的なプロンプトの両方を含む、タスクに最適なプロンプトの自動作成と学習に特化したサブフィールドが増えています。 これは、このチュートリアルの範囲を超えています。

まとめ

この投稿では、AlexaTM 20B モデルを SageMaker エンドポイントにデプロイして推論を実行する方法を示しました。 AlexaTM 20B モデルを使用して、さまざまな数ショット学習タスクのコンテキスト学習を行うことができます。 AlexaTM 20B の詳細については、次を参照してください。 20B パラメータの Alexa モデルは、少数ショット学習に新たな成果をもたらします または元 .

著者は、Maciej Rudnicki、Jakub Debski、Ashish Khetan、Anastasiia Dubinina、Vitaliy Korolev、Karl Albertsen、Saleh Soltan、および Mariusz Momotko によるこの打ち上げの実現に向けた技術的貢献に感謝したいと思います。


ジャンプスタートについて

JumpStart は、Amazon SageMaker の機械学習 (ML) ハブであり、350 を超える事前トレーニング済みモデル、組み込みアルゴリズム、事前構築済みソリューション テンプレートを提供し、ML をすばやく開始するのに役立ちます。 JumpStart は、TensorFlow、PyTorch、Hugging Face、MXNet などの一般的なモデル ハブの最新モデルをホストし、オブジェクト検出、テキスト分類、テキスト生成などの一般的な ML タスクをサポートします。 ML 研究コミュニティは、最近開発されたモデルの大部分を公開して使用できるようにするために多大な努力を払ってきました。 JumpStart は、適切な ML モデルとアルゴリズムを見つけて、すぐにモデルの構築を開始できるようにすることを目的としています。 具体的には、JumpStart には次の利点があります。

  • UI と SDK による簡単なアクセス – SageMaker Python SDK を使用してプログラムで、または Amazon SageMaker Studio の JumpStart UI を介して、JumpStart のモデルとアルゴリズムにアクセスできます。 現在、AlexaTM 20B は SageMaker Python SDK を介してのみアクセスできます。
  • SageMaker 組み込みアルゴリズム – JumpStart は、対応するトレーニング スクリプト (サポートされている場合)、推論スクリプト、およびサンプル ノートブックと共に、350 を超える組み込みアルゴリズムと事前トレーニング済みモデルを提供します。 スクリプトはフレームワークとタスクごとに最適化されており、GPU サポート、自動モデル チューニング、インクリメンタル トレーニングなどの機能を提供します。 互換性の問題が発生しないように、スクリプトは SageMaker インスタンスと機能に対してもテストされます。
  • 事前構築されたソリューション – JumpStart は、需要予測や産業および金融アプリケーションなど、一般的な ML ユースケース向けの 23 のソリューションのセットを提供し、数回クリックするだけで展開できます。 ソリューションは、特定のビジネス ユースケースを解決するためにさまざまな AWS サービスを結び付けるエンドツーエンドの ML アプリケーションです。 AWS CloudFormation テンプレートと参照アーキテクチャを使用して迅速にデプロイします。つまり、完全にカスタマイズ可能です。
  • サポート – SageMaker は、新しい SageMaker 機能または Deep Learning Container バージョンがリリースされたときに最新バージョンを維持し、SageMaker 環境で JumpStart コンテンツを使用する方法に関するドキュメントを作成するなど、さまざまなサポートを提供します。

JumpStart の詳細と、オープンソースの事前トレーニング済みモデルを他のさまざまな ML タスクに使用する方法については、以下をご覧ください。 AWS re:Invent2020ビデオ.


著者について

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。ヴィヴェック・マダン博士 Amazon SageMaker JumpStart チームの応用科学者です。 イリノイ大学アーバナ シャンペーン校で博士号を取得し、ジョージア工科大学で博士研究員を務めました。 彼は機械学習とアルゴリズム設計の活発な研究者であり、EMNLP、ICLR、COLT、FOCS、および SODA カンファレンスで論文を発表しています。

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。ジャック・フィッツジェラルド Alexa AI の上級応用科学者であり、現在は大規模言語モデリング、多言語テキスト モデリング、機械学習操作に重点を置いています。

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。ジョアンモウラ アマゾン ウェブ サービスの AI/ML スペシャリスト ソリューション アーキテクトです。 彼は主に NLP のユース ケースに焦点を当てており、顧客が深層学習モデルのトレーニングと展開を最適化するのを支援しています。 また、ローコード ML ソリューションと ML に特化したハードウェアの積極的な支持者でもあります。

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。 ジューン・ウォン SageMaker JumpStart と組み込みアルゴリズムを使用するプロダクト マネージャーです。 彼は、SageMaker のお客様が ML コンテンツを簡単に見つけて使用できるようにすることに重点を置いています。

AlexaTM 20B が Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence で利用できるようになりました。 垂直検索。 あい。プルキット・カプール は、Alexa AI を使用した Alexa Teacher Model プログラムのプロダクト リードであり、Alexa のマルチタスク マルチモーダル基盤モデルの一般化されたインテリジェンスとアプリケーションに焦点を当てています。

タイムスタンプ:

より多くの AWS機械学習