Amazon Bedrock で Mistral Large を試してみた

2024.04.05

こんにちは、森田です。

以下のアップデートで、Mistral AI社のテキスト生成モデルである Mistral Large が、Amazon Bedrock で一般提供が開始されました。

本記事では、実際に Mistral Large モデルを有効化し、テキスト生成を行ってみます。

Mistral Large とは

Mistral Large とは、Mistral AI社の公開している最先端のテキスト生成モデルとなっております。

その性能としても非常に優れており、以下の記事でのベンチマークでは、GPT-4 に次ぐ第 2 位のモデルとなっています。

このモデルでは、コーディングや数学的タスクに優れており、英語、フランス語、スペイン語、ドイツ語、イタリア語の言語でのテキスト生成がスムーズに行えます。

モデルアクセスの有効化

Mistral Large モデルについては、現在 us-east-1(バージニア)、us-west-2(オレゴン)、eu-west-3(パリ) のリージョンで利用可能です。

本記事では、us-east-1(バージニア) でモデルアクセスの有効化を行います。

AWSコンソールのAmazon Bedrockにアクセスをし、モデルアクセスから以下のように Mistral AI にチェックを入れ、「モデルアクセスをリクエスト」を選択します。

プレイグラウンドでテキスト生成を試してみる

AWSコンソールのプロバイダーから Mistral AI を選択します。

選択後、モデルを Mistral Large として「プレイグラウンドを開く」を選択します。

まずは、「Finding the Difference in Payment Dates」のサンプルをロードして、テキスト生成を行います。

なお、テキスト生成結果は、以下のようにプロンプトと同じテキストボックス内に表示されます。(紫色になっているところが生成結果となります。)

プロンプト

<s>[INST]Calculate the difference in payment dates between the two customers whose payment amounts are closest to each other in the given dataset: 
'{
  "transaction_id":{"0":"T1001","1":"T1002","2":"T1003","3":"T1004","4":"T1005"},
    "customer_id":{"0":"C001","1":"C002","2":"C003","3":"C002","4":"C001"},
    "payment_amount":{"0":125.5,"1":89.99,"2":120.0,"3":54.3,"4":210.2},
"payment_date":{"0":"2021-10-05","1":"2021-10-06","2":"2021-10-07","3":"2021-10-05","4":"2021-10-08"},
    "payment_status":{"0":"Paid","1":"Unpaid","2":"Paid","3":"Paid","4":"Pending"}
}'[/INST]

テキスト生成結果

First, let's find the two closest payment amounts. The payment amounts are: 125.5, 89.99, 120.0, 54.3, 210.2.

The two closest payment amounts are 125.5 and 120.0. The transactions with these amounts are T1001 and T1003 respectively.

Now, let's find the difference in payment dates between these two transactions. The payment date for T1001 is '2021-10-05' and for T1003 is '2021-10-07'.

The difference in payment dates is '2021-10-07' - '2021-10-05' = 2 days.

今回のサンプルでは、データをJSONで入力して、プロンプトで与えられた計算(支払額が最も近い2人の顧客間の支払日の差)をしていますが、問題なく処理できているようです。

サンプルは、英語でしたが日本語でも試してみます。

プロンプト

<s>[INST]以下で与えられたデータセット内で支払額が最も近い 2 人の顧客間の支払日の差の値を教えてください:

'{
  "transaction_id":{"0":"T1001","1":"T1002","2":"T1003","3":"T1004","4":"T1005"},
    "customer_id":{"0":"C001","1":"C002","2":"C003","3":"C002","4":"C001"},
    "payment_amount":{"0":125.5,"1":89.99,"2":120.0,"3":54.3,"4":210.2},
"payment_date":{"0":"2021-10-05","1":"2021-10-06","2":"2021-10-07","3":"2021-10-05","4":"2021-10-08"},
    "payment_status":{"0":"Paid","1":"Unpaid","2":"Paid","3":"Paid","4":"Pending"}
}'[/INST]

テキスト生成結果

データセットを解析し、支払額が最も近い2人の顧客を特定します。

1. C001 (T1001) - 支払額: 125.5
2. C003 (T1003) - 支払額: 120.0

次に、これら2人の顧客の支払日を比較します。

1. C001 (T1001) - 支払日: 2021-10-05
2. C003 (T1003) - 支払日: 2021-10-07

支払日の差を計算します。

2021-10-07 - 2021-10-05 = 2日

したがって、支払額が最も近い2人の顧客間の支払日の差は2日です。

日本語でも英語と同じように問題なく処理できているようです。

利用費について

us-east-1(バージニア)、us-west-2(オレゴン) での利用費は以下のようになっています。

  • 1000 入力(リクエスト)トークンあたりの価格
    • $0.008
  • 1000 出力トークンあたりの価格
    • $0.024

最後に

今回は、Mistral Large をざっくりとプレイグランドで試してみました。

Mistral Large の推論は高性能とされていますが、日本語での場合は、どの程度の性能で利用できるかが気になるところですので、また別の機会に検証してみたいと思います。