AWSの"推しのAI" 「Jurassic-2」を使ってみた！！Bedrockローンチ前に使えるんやん！

[Amazon Bedrock](https://aws.amazon.com/jp/bedrock/)待ち遠しいですね！

https://aws.amazon.com/jp/bedrock/

どんなサービスになるかはお楽しみですが、Amazon製の**Amazon Titan**以外にも様々な基盤モデルが利用できるサービスのようです。

Bedrockでの提供がアナウンスされている**AI21 Labs Jurassic-2**が、なんとBedrockのローンチを待たずとも**すでに利用できることが判明しました！！**

SageMaker Jumpstartで利用できるモデルの一覧にすでにリストアップされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/ef4acd01-f2ab-ea0b-d4c6-11d0f0ec4452.png)

サブスクリプションも可能で、実際に使用可能です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/3ff7ae5b-a919-0e61-7f94-ee99bd6c2252.png)

## Jurassic-2とは

AWSの[ブログ](https://aws.amazon.com/jp/blogs/news/announcing-new-tools-for-building-with-generative-ai-on-aws/)では

> Amazon Bedrock を利用するお客様は、現在提供されている最先端の基盤モデルの中から選択できます。この中には AI21 Labs が提供する Jurassic-2 ファミリーも含まれます。Jurassic-2 ファミリーは多言語に対応しており、スペイン語、フランス語、ドイツ語、ポルトガル語、イタリア語、オランダ語でテキストを生成できます。

と紹介されています。日本語は対応してないようですが、**AWSが激プッシュしていることは伺えます！**

**マーケットプレイス上の紹介文**

* Jurassic-2 Ultra は自然言語の指示と文脈に従うように最適化されているため、**例文を提供する必要はありません。**
* AI21 Labsにより、自然言語とコンピュータプログラムを含むウェブテキストのコーパスに、最近のデータを用いて訓練された言語モデル（2022年半ばに更新済み）。このモデルは**8192トークン**のコンテキストウィンドウを持つ（つまり、プロンプト＋補完の長さは最大8192トークンでなければならない）。
* スタンフォード大学の **HELM ベンチマーク**では、Jurassic-2 Ultra は LLM モデルの上位にランクされています。内部評価によると、Jurassic-2 Ultra の勝率は 86.8%で、**LLM 分野のリーダーとして確固たる地位**を築いています。

**推し！推しのAIがJurassic-2！！**


## 提供されているJurassic-2モデル

| モデル | 説明 |
| --- | --- |
| [AI21 Jurassic-2 Ultra](https://aws.amazon.com/marketplace/pp/prodview-f4y5ksmu5kccy) | 最高品質のために設計されたクラス最高の指示追従モデル。クリエイティブでオーダーメイドのテキスト作成に最適。|
| [AI21 Jurassic-2 Mid](https://aws.amazon.com/marketplace/pp/prodview-bzjpjkgd542au) | 品質と遅延のトレードオフを最適化したクラス最高のモデル。自然言語によるテキスト生成に最適。|
| [AI21 Jurassic-2 Light](https://aws.amazon.com/marketplace/pp/prodview-roz6zicyvi666?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) | Jurassic-2 Lightは、最大限の低価格と最小限のレイテンシーを必要とするシンプルな言語タスクに理想的な選択肢です。|
| [AI21 Summarize](https://aws.amazon.com/marketplace/pp/prodview-dkwy6chb63hk2) | ワールドクラスの要約エンジンでテキストを要約。あらゆる種類のテキストを高品質で素早く統合。 |
| [AI21 Paraphrase](https://aws.amazon.com/marketplace/pp/prodview-6ivt5p34sljua) | 文章を言い換え、より説得力のある効果的な文章を作成する。テーマや形式に合わせて、トーンや長さを調整する。 |
| [AI21 Grammatical Error Correction](https://aws.amazon.com/marketplace/pp/prodview-dplsurctqbgf6) | スペルミス、文法、句読点、誤用された単語などの修正方法を提案する校正機能。 |

プロンプトを工夫することで様々な振る舞いをするモデルの他に、用途専用のモデルも用意されており、これらの説明には**No prompting needed**とあります。なるほど、たしかにプロンプトを与えずに要約してもらえるのは便利だと思います。


## Jurassic-2 Ultraのデプロイが可能なSageMakerインスタンス

それぞれのモデルにはデプロイ可能なインスタンスが指定されています。一番高性能なJurassic-2 Ultraがデプロイできるインスタンスは以下のものです。

* ml.p4de.**24x**large
* ml.p4d.**24x**large
* ml.g5.**48x**large

想像がつかないサイズ感ですね。スペックは以下のとおりです。

| インスタンスタイプ | vCPU | メモリ(GiB) | GPUs | GPUメモリ(GB) |
| --- | ---: | ---: | ---: | ---: |
| ml.p4de.24xlarge | 96 | 1152 | 8 | 640 |
| ml.p4d.24xlarge | 96 | 1152 | 8 | 320 |
| ml.g5.48xlarge | 192 | 768 | 8 | 192 |

**桁違いのモンスター級スペック！！** 

気になるお値段は以下の通り。

| インスタンスタイプ  | 価格(/h) | 価格(/720h) |
| --- | ---: | ---: |
| ml.p4de.24xlarge | $47.1106 | $33,919.6320 |
| ml.p4d.24xlarge | $37.6885 | $27,135.7200 | 
| ml.g5.48xlarge  | $20.3600 | $14,659.2000 |

1ドル120円換算で、ml.p4de.24xlargeの場合は**月400万円**を超えます😂

:::note
MidやLightは**ml.g4dn.12xlarge**から、Summarizeは**ml.g5.xlarge**から、ParaphraseとGrammatical Error Correctionは**ml.g4dn.2xlarge**から利用可能です。
専用モデルはインスタンスについても実用的に抑えられてますね。
:::

## 人生初"48xlarge"を起動（注：個人のアカウントです）

ここまで調べたらもう**やらずにいられません**。

ただ、デフォルトクオータでは0台までしか起動できないので、上限緩和申請を行います。
まずは`ml.p4d.24xlarge`インスタンスの上限緩和を申し出ましたが、

> 人気のインスタンスやから在庫ないねん。代わりにg5、inf2、trn1つかってくれへん？

と英語で回答が来ましたので、`ml.g5.48xlarge`の上限緩和を行い、こちらは無事（しかも1時間ぐらいで）適用されました。

SageMakerの設定手順はこちらに記載しました。手順もありますので難しくありませんでした。
長くなるので別記事にしました。

https://moritalous.pages.dev/12eebf613876f8c92412

## 気になる性能は？？

OpenAIとの性能差がきになるところと思います。[OpenAIのExamples](https://platform.openai.com/examples)と同じプロンプトを実行し、比較してみました。

検証結果は主観になりますが、以下の基準でつけました。
◎：OpenAIと遜色なし
○：OpenAIと同等ですが少しコメントあり
△：比較するとOpenAIより劣っているように感じた
×：エラー回答

項目 | 検証結果 | コメント |
| --- | :---: | --- |
| Q&A | ◎ |  |
| Grammar correction | ◎ |  |
| Summarize for a 2nd grader | ◎ |  |
| Natural language to OpenAI API | ○ | コード生成だけでなく、コードに対するコメントも生成された |
| Text to command | × |  |
| English to other languages | △ | フランス語、スペイン語はOK。日本語が誤っている |
| Natural language to Stripe API | ○ | コード生成だけでなく、コードに対するコメントも生成された |
| SQL translate | ◎ |  |
| Parse unstructured data | ◎ |  |
| Classification | ◎ |  |
| Python to natural language | ○ | 内容は問題ないが出力形式が大きく異なる |
| Movie to Emoji | ○ | スターウォーズ以外にも大量に出力されたw |
| Calculate Time Complexity | ○ | 他と異なり、OpenAIのほうが詳細な解説が含まれる |
| Translate programming languages | △ | Haskellがわからないですがなんとなく違う出力に見えます |
| Advanced tweet classifier | ◎ |  |
| Explain code | ○ | コード生成だけでなく、コードに対するコメントも生成された |
| Keywords | △ | Jurassic-2 Ultraのほうが抽出されたキーワードが少ない |
| Factual answering | ◎ |  |
| Ad from product description | ○ | Jurassic-2 Ultraのほうがシンプルな出力 |
| Product name generator | ◎ |  |
| TL;DR summarization | ◎ |  |
| Python bug fixer | ○ | コード生成だけでなく、コードに対するコメントも生成された |
| Spreadsheet creator | ○ | 表の生成だけでなく、表に対するコメントも生成された |
| JavaScript helper chatbot | ◎ |  |
| ML/AI language model tutor. | ◎ |  |
| Science fiction book list maker | ◎ |  |
| Tweet classifier | ◎ |  |
| Airport code extractor | ◎ |  |
| SQL request | ○ | コード生成だけでなく、コードに対するコメントも生成された |
| Extract contact information | ◎ |  |
| JavaScript to Python | ◎ |  |
| Friend chat | ○ | チャットの相手役だけでなく自分に成り代わってやり取りまでしてくれちゃいました |
| Mood to color | ○ | コード生成だけでなく、コードに対するコメントも生成された |
| Write a Python docstring | ○ | OpenAIのほうがdocstringっぽい書式になってます。 |
| Analogy maker | ◎ |  |
| JavaScript one line function | ◎ |  |
| Micro horror story creator | ◎ |  |
| Third-person converter | ◎ | Jurassic-2 Ultraのほうが正しい英語のような気がします |
| Notes to summary | △ | プロンプトの意図とはちょっと違う |
| VR fitness idea generator | ◎ |  |
| Essay outline | ◎ |  |
| Recipe creator (eat at your own risk) | ◎ |  |
| Chat | ◎ |  |
| Marv the sarcastic chat bot | ◎ |  |
| Turn by turn directions | ◎ |  |
| Restaurant review creator | ◎ |  |
| Create study notes | ○ | 5つ挙げるはずが4つ（トークンの問題？） |
| Interview questions | △ | 質問を生成してほしいが生成されなかった |

実際の実行結果はこちらを参照ください。また、**日本語でのプロンプトを実行した結果**も載せています。

https://moritalous.pages.dev/dbb3d7326909769f26cc

Text to command以外は回答を返してくれ、ほぼ期待通りの結果が返ってきました。少なくとも、OpenAIの回答として提示されても違和感はない精度でした。

日本語については、全く未対応というわけではなさそうですが、現時点では英語に比べ精度が落ちる印象でした。

## まとめ

以上、Jurassic-2について調べた結果となります。
性能については問題なしと感じました。レスポンスも数秒で返答が得られる印象でした。
日本語対応に期待ですね。

気になる課金ですが、、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/6b25dfd5-7650-7487-06e9-9d7dbf9c3656.png)

**5.8ドルで抑えました！w**

あー怖かった