概要
今朝2023/11/14未明、AWSの生成AIサービスAmazon Bedrockで利用可能な言語モデルとしてMeta社のLlama 2が追加されました!
AWSさんのBedrock資料でもたびたび紹介されていたコイツですね。ようやくBedrockでも実際に利用可能となりました。
AWSの公式ブログで紹介されている内容の抜粋です。
- Llama 2のベースモデルは、オンラインの公開データソースから2兆トークンで事前トレーニングされています。
- ベースモデルの上に構築されたLlama 2 Chatモデルは、ダイアログユースケース用に最適化されています。これは、人間のフィードバックからの強化学習(RLHF)として知られる技術で、100万以上の人間のアノテーションで微調整されており、Metaによってテストされています。これにより、チャットユースケースでのパフォーマンスのギャップを特定し、攻撃的または不適切な応答などの問題のある応答を緩和します。
Llama 2の何がすごいの?
Llama 2はFacebookやInstagramで有名なMeta社が今年の7月に公開したオープンソースのLLM(大規模言語モデル)です。
Llama 2が話題を呼んでいる理由は
- オープンソースで公開されているため、自分の組織で研究や商用利用ができる
- その中でも、LLMの精度に影響する「パラメーター数」が大きい(本家は70Bまで公開)
という点で、欧米圏ではオープンなLLMとしてデファクトスタンダードになりつつあるようです。
触ってみた
AWSマネジメントコンソールにログインし、Amazon Bedrockコンソールにアクセス。Model Access
を開きます。
us-east-1およびus-west-2リージョンにMetaのLlama 2 Chat 13Bが出現しています!ついでに今朝同時リリースのCohere追加モデルもいますね。右上の Manage model access
からまとめて有効化しちゃいましょう。
すべて選択して Save changes
します。
わりと一瞬でAccess grantedされました。
マネコンから呼び出してみる
PlaygroundsのChatからLlama 2を試すことができます。
オープンソースの言語モデルって何がすごいの?
と聞いてみました。
いい感じに答えてくれていますが、英語で返ってきますねw 和訳してもらおうとしましたが、そのままだと日本語には対応していないようです。(Amazon Titanと違って、入力は日本語でも受け付けてくれるようです)
APIからPythonで呼び出してみる
PCのローカルに test.py
というPythonファイルを作って試しに実行してみます。ホームディレクトリ配下の設定ファイルを確認し、AWSの認証設定はLlama 2を有効化したAWSアカウント&リージョンに向けておきましょう。
公式ブログに倣って、まずはBedrockのモデル一覧を取得してみます。
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']))))
AWS SDKのバージョンは特に上げていませんが、ちゃんとLlama 2のモデルIDが返却されてきました。
Llama 2 Chat 13B : meta.llama2-13b-chat-v1
それでは実際にプロンプトを入れてInvokeしてみましょう。AWS公式ブログのサンプルをベースに、応答が途切れないよう 'max_gen_len' を少し大きくしました。
import boto3
import json
llamaModelId = 'meta.llama2-13b-chat-v1'
prompt = "KDDIアジャイル開発センターってどんな会社?"
llamaPayload = json.dumps({
'prompt': prompt,
'max_gen_len': 1024,
'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())
すると、なんと日本語で応答が返ってきました!
KDDIアジャイル開発センターは、KDDIの子会社であり、ソリューション開発やアジャイル開発を行う会社です。
以下は、KDDIアジャイル開発センターの特徴やサービスの一例です。
1. アジャイル開発のエキスパートise
KDDIアジャイル開発センターは、アジャイル開発において多くの成功例を持つエキスパートです。彼らは、クライアントのニーズに応えるために、最新のテクノロジーと方法を適用しています。
2. ソリューション開発
KDDIアジャイル開発センターは、クライアントのニーズに応えるために、各種のソリューションを開発しています。これらのソリューションは、Webアプリケーション、モバイルアプリケーション、クラウドサービスなど、多岐にわたっています。
3. アジャイル開発方法の適用
KDDIアジャイル開発センターは、アジャイル開発方法を適用して、クライアントのニーズに応えるために最適なソリューションを開発しています。これらの方法には、スクラム、ケニー・ロジャース、デザインドリブンなどが含まれます。
4. クラウドサービスの提供
KDDIアジャイル開発センターは、クラウドサービスを提供しています。これらのサービスには、AWS、Google Cloud Platform、Microsoft Azureなどのマjorクラウドプラットフォームが含まれます。
5. インキュベートの支援
KDDIアジャイル開発センターは、スタートアップ企業や新興企業のインキュベートを支援しています。彼らは、創造的なアイデアや新しいビジネスモデルを持つ企業に対して、技術的な支援や経営的な支援を提供しています。
KDDIアジャイル開発センターは、アジャイル開発、ソリューション開発、クラウドサービス、インキュベートなど、多岐にわたるサービスを提供しています。彼らは、クライアントのニーズに応えるために、最新のテクノロジーと方法を適用しています。
ちょいちょい謎のアルファベットが混じっていますが、全体として自然な日本語ですね。(内容は一部、正確でないところがありますのでご容赦ください)
気になるお値段は…
めちゃくちゃ安いようです!
入力トークンあたりの単価を比べると、Claudeの通常モデルと比べると15分の1ぐらいの激安価格。性能重視のお手軽モデルClaude Instantと比べても半分以下のお値段です。
言語設定を英語にしないとLlama 2など新しいモデルの料金が表示されないのでご注意ください。
おわりに
みなさんもお手元のAWSアカウントで、ぜひ試してみましょう!
Meta公式のLlama学習ノートブックも公開されているようです。