別記事で紹介したが、2024年5月25日(日本時間)にAmazon Bedrockにて新しい基盤モデル「Mistral Small」が利用可能になったとの発表があった。
せっかく最新情報をキャッチアップできたので早速Mistral Smallを試してみる。
Mistral AI とは
フランスに本拠を置くAI企業。 チャットボットからコード生成まで、さまざまなタスクに使用できる高速かつ安全な大規模言語モデル (LLM) の作成を専門としている。
ChatGPT-4に匹敵するMistral Largeをわずか9ヶ月で開発するなど今後注目の企業。
Mistral AI | Frontier AI in your hands
Mistral Smallの特徴
以下の特徴がある。Anthropic社のモデルでいうとClaude3 Haikuのような立ち位置か。
Whats Newに「RAGに特化している」という記載があるため需要はまあまああるのではないかと思う。
- 高ボリュームで低レイテンシーの言語ベースのタスクに最適化された、効率の高い大規模言語モデル。
- コスト効率の高い価格で優れたパフォーマンスを提供。
- 主な機能には、検索拡張生成 (RAG) の特殊化、コーディング能力、多言語機能などがある。
- このモデルは RAG に特化しており、最大 32K トークンまで拡張できる長いコンテキスト ウィンドウでも重要な情報が保持される。
- Mistral Small は、コード生成、レビュー、コメントに優れており、すべての主要なコーディング言語をサポートしている。
- Mistral Small は多言語機能も備えており、英語、フランス語、ドイツ語、スペイン語、イタリア語でトップクラスのパフォーマンスを発揮する。
- 安全のための効率的なガードレールも組み込まれている。
どのリージョンで使えるのか
2024年5月25日に確認したところ、バージニア北部(us-east-1)でのみ利用可能だった。オレゴンリージョン(us-east-1)やMistral AI社がある欧州パリ(eu-west-3)で利用可能になっているのではないかと思ったが現時点では1リージョンのみで利用可能だそう。
モデルアクセスを有効化する
下画面では既にアクセスが付与されているが、有効化するモデルにチェックを入れ、「モデルアクセスをリクエスト」を選択する。
テキスト生成をしてみる
準備
Amazon Bedrockコンソールのチャットのプレイグラウンドへアクセス。
まずは「モデルを選択」をクリック。
Mistral AIからMistral Smallをクリック。
試してみる(コード生成)
「Pythonで数の階乗を計算する関数を書いてください。」と質問したところ以下の回答。正しいコードになっており問題ない。
質問:Pythonで数の階乗を計算する関数を書いてください。
回答:以下はPythonで数の階乗を計算する関数の例です。
def factorial(n):
if n == 0:
return 1
else:
result = 1
for i in range(1, n + 1):
result *= i
return result
# テスト
num = 5
print(f"{num}! = {factorial(num)}")
この関数は、引数n が0の場合は1を返し、そうでない場合は1からn までの数字を掛け合わせた結果を返します。
コード生成の比較(vs Claude3 Haiku)
先ほどと同じく「Pythonで数の階乗を計算する関数を書いてください。」という質問をして比較してみる。
回答速度
回答速度は僅差でClaude3 Haikuの勝利。1秒もないくらいのためほぼ同等か。だが、大量のテキストを処理する際にこの差が大きくなる可能性もあるのではないか。
回答精度
Mistral Smallは先ほどと同様問題なく実行できた。
以下は、Pythonで数の階乗を計算する関数の例です。
```python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# テスト
num = 5
print(f"{num}! = {factorial(num)}")
```
この関数は、再帰呼び出しを使っています。`n`が0の場合は、階乗の定義から1を返します。`n`が0でない場合は、`n`をその数の階乗と乗算して返します。
上記の例では、数5の階乗を計算しています
Claude3 Haikuの場合も問題なく実行できた。しかし、Mistral Smallはテストコードを出力してくれていたが、Claude3 Haikuはテストコードは出力されていない。個人的に今回の結果だけ見るとMistral Smallの方が親切で好き。
はい、Pythonで階乗を計算する関数は以下のように書くことができます。
```python
def factorial(n):
"""
nの階乗を返す関数
引数:
n (int) - 階乗を計算する整数
返り値:
int - nの階乗
"""
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
```
この関数は、数 `n` の階乗を再帰的に計算します。階乗は、`n` が `0` または `1` の場合は `1` を返し、それ以外の場合は `n` と `n-1` の階乗の積を返します。
使用例:
```python
print(factorial(5)) # 出力: 120
print(factorial(0)) # 出力: 1
print(factorial(1)) # 出力: 1
```
この関数は、大きな数の階乗を計算する際には、数値オーバーフローの問題が生じる可能性があります。そのため、大きな数の階乗を扱う場合は、別のアプローチを検討する必要があります。
文章生成の比較(vs Claude3 Haiku)
「日本の文化について100文字以内で紹介してください。」と質問してみる。
回答速度
コード生成と同じく回答速度は僅差でClaude3 Haikuの勝利。
回答精度
Mistral Smallは途中英語が入ってしまった。日本語で生成されている文章も不自然な日本語となっている。英語を無理やり翻訳したかのような感じ。
日本文化は敬礼、和解、美しさを重んじ、茶道、花道、剣道など多岐にわたる伝統芸能を誇り、春の桜、秋の紅葉、新幻想文学などを世界に transmit。 (Japanese culture values respect, harmony, and beauty, boasting various traditional arts like tea ceremony, flower arrangement, and kendo, and sharing cherry blossoms, autumn leaves, and new genre literature with the world.)
# Japan's Culture in 100 Characters
Japanese culture emphasizes respect, harmony, and beauty, featuring traditional arts like tea ceremony, flower arrangement, and kendo, and globally sharing cherry blossoms, autumn leaves, and new genre literature.
Comment: Upon request, I've translated the original Japanese into English to provide context for non-Japanese speakers.
Claude3 HaikuはMistral Smallと違い、全て自然な日本語で正しい情報が出力されている。テキスト出力についてはClaude3の勝利か。
日本の文化は多様で独特です。長い歴史の中で育まれた伝統的な芸術、武道、食文化は世界的に高い評価を受けています。一方で、現代日本はテクノロジーと融合し、アニメやゲーム、ファッションなど、ポップカルチャーの発信地となっています。日本人の伝統的な美意識や精神性が根底にあり、調和と自然との共生を大切にする文化が特徴的です。
まとめ
新たにAmazon BedrockでMistral Smallという高ボリュームで低レイテンシーの言語ベースのタスク、RAG、コード生成などに適した基盤モデルが利用可能になった。
コード生成の精度は問題なさそうだが、日本語でのテキスト生成はまだこれからということを感じた。