Amazon Web Services ブログ

Amazon Bedrock が Meta の Llama 2 Chat 13B モデルにアクセスできるように

11月13日、Meta の Llama 2 Chat 13B 大規模言語モデル (LLM)Amazon Bedrock でご利用いただけるようになったことをお知らせします。今回のローンチにより、Amazon Bedrock は、Meta の次世代 LLM である Llama 2 向けのフルマネージド API を提供する最初のパブリッククラウドサービスになります。これで、あらゆる規模の組織が、基盤となるインフラストラクチャを管理することなく、Amazon Bedrock で Llama 2 Chat モデルにアクセスできるようになりました。これにより、アクセシビリティが一段階向上しました。

Amazon Bedrock は、AI21 LabsAnthropicCohereStability AIAmazon そして今では Meta などの大手 AI 企業から提供される高性能基盤モデル (FM) の幅広い選択肢と、生成系 AI アプリケーションを構築するための幅広い機能セットを提供するフルマネージドサービスです。これを利用することで、プライバシーとセキュリティを維持しながら、開発を簡素化できます。Amazon Bedrock の詳細については、こちらの Antje の記事をご覧ください

Llama 2 は、Meta が公開している LLM のファミリーです。Llama 2 の基本モデルは、オンラインの公開データソースからの 2 兆トークンで事前にトレーニングされています。Meta によると、Llama 2 13B をトレーニングするのに 1 時間あたり 184,320 GPU を消費しました。これは、1 つの GPU で 21.04 年に相当し、うるう年は考慮されていません。

基本モデルの上に構築された Llama 2 Chat モデルは、ダイアログのユースケースに最適化されています。同モデルは 100 万を超える人間の注釈 (人間のフィードバックによる強化学習 (RLHF) と呼ばれる手法) で微調整されており、Meta によるテストを受けています。これにより、パフォーマンスのギャップを特定し、攻撃的な応答や不適切な応答など、チャットのユースケースで潜在的に問題となる可能性のある応答を軽減できます。

責任ある協調的な AI イノベーションエコシステムを推進するために、Meta は Llama 2 を使用するすべての人 (個人、クリエイター、デベロッパー、研究者、学者、あらゆる規模の企業) 向けにさまざまなリソースを構築しました。特に気に入っているのは、Meta Responsible Use Guide です。これは、開発の開始からデプロイまでのさまざまな開発段階を網羅し、LLM を活用した製品を責任ある方法で構築するためのベストプラクティスと考慮事項を示したデベロッパー向けのリソースです。このガイドは、AI を責任ある方法で構築するための AWS のツールとリソースのセットにぴったり合っています。

Amazon Bedrock API を呼び出すか、AWS SDK または AWS コマンドラインインターフェイス (AWS CLI) を使用することにより、LlamA 2 チャットモデルを任意のプログラミング言語で記述されたアプリケーションに統合できるようになりました。

Llama 2 Chat の操作
AWS ニュースブログをよく読まれている方はよくご存知のように、記事中のテクノロジーについてご紹介したいと思います。それでは、Llama2 を操作するためのコードを記述してみましょう。

数週間前、AWS UG ペルー会議で講演できたのは幸運でした。JeffMarcia も出席していました。Jeff は会議の冒頭で、生成系 AI について刺激的な講演を行い、ペルーの象徴的な動物であるラマの生成画像のウォールを使いました。Llama 2 Chat で話すのにラマよりうってつけのテーマは他にあるでしょうか?

(そして、コードを記述する前に、マチュピチュを訪れたときに撮ったラマの写真を 2 枚是非とも共有させてください)

マチュピチュの白いラマ マチュピチュの茶色のラマ

Bedrock で新しいモデルを使い始めるには、まずコンソールで Amazon Bedrock に移動します。左下のペインで [Model access] [モデルアクセス] を選択してから、右上の [Edit] (編集) ボタンを選択して、Llama 2 Chat モデルへのアクセスを有効にします。

Bedrock Llama2 アクセス権の付与

左側のナビゲーションバーの [Playgrounds] (プレイグラウンド) で [Chat] (チャット) を選択すると、コードを記述せずにモデルを操作できます。

llama2 の Bedrock チャットプレイグラウンド

モデルにアクセスできることがわかったので、ノートパソコンでコードエディタを開きます。AWS コマンドラインインターフェイス (AWS CLI) が設定されていると仮定します。これにより、AWS SDK で AWS 認証情報を検索できるようになります。このデモでは Python を使用していますが、Bedrock はどの言語からでも呼び出すことができることを示したいと思います。また、Swift プログラミング言語で書かれた同じコードサンプルを使ったパブリック gist も共有しています。

Python に戻ったら、まず ListFoundationModels API 呼び出しを実行して Llama 2 Chat 13B 向けの modelId を見つけます。

import boto3

bedrock = boto3.client(service_name='bedrock', region_name='us-east-1')
listModels = bedrock.list_foundation_models(byProvider='meta')
print("\n".join(list(map(lambda x: f"{x['modelName']} : { x['modelId'] }", listModels['modelSummaries']))))

このコードを実行すると、次のリストが生成されます。

Llama 2 Chat 13B : meta.llama2-13b-chat-v1

meta-llama2-chat-13b モデル ID を選択し、Llama 2 Chat 13B モデルにプロンプトを送信するコードを記述します。

import boto3
import json

llamaModelId = 'meta.llama2-13b-chat-v1' 
prompt = "What is the difference between a llama and an alpaca?"

llamaPayload = json.dumps({ 
	'prompt': prompt,
    'max_gen_len': 512,
	'top_p': 0.9,
	'temperature': 0.2
})

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region_name='us-east-1'
)
response = bedrock_runtime.invoke_model(
    body=llamaPayload,
    modelId=llamaModelId,
    accept='application/json',
    contentType='application/json'
)
body = response.get('body').read().decode('utf-8')
response_body = json.loads(body)
print(response_body['generation'].strip())

次のように応答が出力されます。

ラマとアルパカはどちらもラクダ科に属しますが、
両者は異なる種であり、異なる身体的および行動的特徴を持っています。
主な違いは次のとおりです。(...)

簡潔にするために答えを編集しました。

さまざまなリクエストパラメータを調整して、それらが応答にどのように影響するかを確認できます。

プロンプトの最適化
Llama 2 Chat モデルを最大限に活用するには、ロールや思考の連鎖プロンプトを使用するなど、いくつかのプロンプトエンジニアリング手法を試してみるとよいでしょう。

ロールを使用して、質問する前にモデルにロールと指示を与えることで、モデルにどのように動作するかを伝えられます。例:

プロンプト: あなたは教師で、6 歳の子どもにいろいろ説明します。
ラマとアルパカの違いは何でしょうか?

回答: 素晴らしい質問ですね。 ラマとアルパカはどちらも南米に生息する動物で、見た目は少し似ていますが、違う点がいくつかあります。それについてお話します。
まず、毛についてお話しましょう。ラマはアルパカよりも長い毛を持っています。まるで大きくてふわふわのコートを着ているようで、寒い季節でも暖かく過ごせます。一方、アルパカは毛が短く、若干滑らかです。
もう一つの違いは耳にあります。ラマにはとても大きなバナナ型の耳があるのに対して、アルパカの耳は小さな三角形です。
最後に、大きさについてお話しましょう。ラマは一般的にアルパカよりも大きいです。アルパカは高さ 6 フィート (約 183 cm) で、体重も重くなりますが、アルパカは通常それより小さく、高さは 3 フィート (約 91 cm) までしか成長しません。
以上が、ラマとアルパカのいくつかの主な違いです。どちらも本当にかわいい動物で、楽しく学ぶことができます。

思考の連鎖を促すプロンプトを使ってモデルに質問し、答えにつながる各ステップを説明してもらいます。例:

プロンプト: あなたは並外れた批判的思考を持つ非常にインテリジェントなボットです。
市場に行ってリンゴを 10 個買いました。あなたの友達にリンゴを 2 個、ヘルパーに 2 個あげました。その後、リンゴをさらに 5 個買って 1 個食べました。リンゴはいくつ残っているでしょうか?
ステップバイステップで考えてみましょう。

回答:
1.あなたは市場に行ってリンゴを 10 個買いました。
2.あなたは友達にリンゴを 2 個あげました。
3.ヘルパーにリンゴを 2 個渡しました。
4.あなたは市場に戻り、さらにリンゴを 5 個買いました。
5.あなたはリンゴを 1 個食べました。
では、あなたの手元にあるリンゴの数を数えてみましょう。
リンゴ 10 個 (初めて市場に行った時) - リンゴ 2 個 (友達にあげて) - リンゴ 2 個 (ヘルパーにあげて) = リンゴ 6 個
リンゴ 6 個 + リンゴ 5 個 (市場に 2 度目行ったとき) = 11 個のリンゴ
リンゴ 11 個 - リンゴ 1 個 (食べて) = リンゴ 10 個
したがって、リンゴは 10 個残っています。
これがお役に立てば幸いです。 他に質問はございますか? または再度プレイしますか?

Meta は、「getting to know Llama notebook」ノートブックのセクション 4.2 でさらに多くの例を共有しています。

可用性
Llama 2 Chat モデルは現在、Bedrock が利用できる、米国東部 (バージニア北部) と米国西部 (オレゴン) の 2 つの AWS リージョンをお使いのすべての AWS のお客様がご利用いただけます。

モデル推論には料金がかかります。前払いなしの従量制料金で、または定期的な料金で請求されるように選択できます。AWS では、処理された入力トークンと出力トークン単位で請求します。または、時間ベースの契約と引き換えに、アプリケーションのパフォーマンス要件を満たすのに十分なスループットをプロビジョニングすることもできます。Bedrock 料金ページに詳細が記載されています

この情報をご紹介したところで、Amazon Bedrock と Llama 2 Chat モデルをお使いのアプリケーションで使用し始める準備が整いました。

構築しましょう!

— seb

原文はこちらです。