Amazon Web Services ブログ
Amazon SageMaker JumpStart を使って OSS の日本語大規模言語モデル (LLM) がどこまでできるか試してみた
最近次々と OSS (Open Source Software) の日本語 LLM が発表されています。Amazon Bedrock から利用できる Anthropic 社の Claude のような有償の LLM に比べてどれくらい性能が違うのか試してみたい、という方も多いのではないでしょうか。いざ、自分で試そうとするとモデルをダウンロードして生成のスクリプト書いて、とちょっと試したいのに作業が多くて大変ですよね。そこで、本ブログでは rinna on Amazon SageMaker JumpStart を活用してみたいと思います。Python が書けない方でもGUI だけで実行できます。
簡単に rinna on SageMaker JumpStart をご紹介させてください。2023 年 9 月にこちらのブログで Amazon SageMaker JumpStart にて OSS である rinna株式会社の 日本語 LLM モデルが利用できるようになったことをご報告しました。今回、 LLM を初めて利用される方でもすぐに試せるように Notebook をリニューアルしました。また、現在 SageMaker JumpStart で利用可能な rinna のモデルは Rinna Japanese GPT NeoX 3.6B Instruction PPO に加え、Rinna Bilingual GPT NeoX 4B Instruction PPO となっています。是非、両方のモデルを SageMaker JumpStart からご利用いただき、回答の違いなどご体験ください。
準備
こちらのブログをご覧いただき、Rinna Japanese GPT NeoX 3.6B Instruction PPO もしくは、Rinna Bilingual GPT NeoX 4B Instruction PPO の推論エンドポイントを立ち上げ、Notebook を立ち上げてください。本ブログにおいて rinna モデル と記載した場合には、これら 2 つのモデルを指します。
本題、ちょっとその前に
本題に入る前にクイズを出したいと思います。以下は、プロプライエタリモデルである Bedrock Claude Instant V1 と Rinna Japanese GPT NeoX 3.6B Instruction PPO に同じプロンプトを与えた時の回答です。ユーザーはコンタクトレンズの利用におけるお困りごと (目が痛い、目が赤くなる、慣れない) を各 LLM に相談しています。皆様はどちらの回答がお好みでしょうか?また、どちらが Rinna Japanese GPT NeoX 3.6B Instruction PPO の回答だと思いますか?
回答1:
コンタクトレンズ用の目薬を使用することができます。また、目の周りを保湿する効果がある、目にやさしい市販の目薬もあります。これらの目薬を使用することで、目のかゆみや刺激を抑えることができることがあります。
回答2:
はい、コンタクトレンズを初めて使い始めた時に目が痛くなったり、赤くなったりするのは普通のことです。慣れるまでは以下の点を守ることをおすすめします: – レンズをつける時間を徐々に長くしていく。最初は1時間程度から始め、毎日少しずつ時間を追加していく。 – 常に目薬や潤眼液を使用する。レンズを外した後は必ず目薬を使う。 – 寝る時はレンズを外す。目が休められる時間が必要。 – レンズの品質とサイズが適しているか確認する。 – ストレスを感じた時や目の痛みが強い時はレンズを外す。 – 最初の1週間ほどは時間が短く過ごす。徐々に慣れていく。 目が赤くなる原因はレンズ適応不全の可能性が高いので、上記の点を守りながらゆっくり慣らしていきましょう。症状がひどい場合や続くなら眼科受診をおすすめします。
後ほど、クイズの正解と具体的に与えたプロンプトをご紹介します。
概観
それでは本題に入りましょう。Notebook を立ち上げると目次が表示されます。Notebook には複数のタスクをすぐにお試しいただけるようにプロンプトをご用意しました。
instruction tuning 済みの基盤モデルでは人と LLM が対話するためのフォーマットが決まっている事があります。 rinna モデルの場合は発言の主体をユーザー/システムで区別します。このフォーマットを守る形でサンプルを作成しています。
Notebook では 7 つのユースケースをご紹介しています。いずれもできる限り LangChain のようなライブラリを使わずに素に近い形で書き下しています。LLM を学ぶにあたり、どうプロンプトを与え、対話による複数回の実行によりプロンプトがどう変化していくのかを観察し易くする狙いがあります。基礎を学ぶことで、 LangChain のようなライブラリを使用する時にも、ラップされた内側を想像し易くなり、開発効率に寄与できると考えています。
目次をご紹介します。
- 準備
- rinna モデルを実行するために必要な便利関数を実装しています。rinna フォーマットに合わせるための実装です。
- 以下のリンクの公式サンプルを実行できます。
- Zero-Shot を試す
- Zero-Shot (質問と回答の例を直接的にプロンプトに指定しない方法) によって rinna モデルの口調を変えられるか試すことができます。また、いくつかのプロンプトを追加することでその効果を確認することができます。追加のプロンプト前後の回答の違いを確認いただけます。
- Few-Shot プロンプトを試す
- センチメント分析の例を利用して、いくつかの回答例を示すことで期待する結果を導く Few-Shot を試すことができます。文章に対してラベル (ポジティブ / ネガティブ / ニュートラル) を回答するようにプロンプトを構成してみます。 Few-Shot の利用有無で回答がどのように変化するか確認いただけます。
- 質問応答を試す
- 2022年 Amazon CEO の書簡の第一段落を使用して質問応答を試すことができます。質問対象となる文章をプロンプトに含めておきます。その文章に対して質問し、正しく回答できるかを観察してみてください。プロンプトに回答の参考になる文章を含めることで質問応答することが可能になります。このプロンプトエンジニアリングは RAG と呼ばれる方式でも重要な考え方の一つです。このサンプルプロンプトにより、OSS の日本語 LLM を RAG に組込んでみようかと思っていただければ嬉しいです。
- 要約を試す
- 要約は長い文章を短しつつも必要な情報を残すことが重要です。2022年 Amazon CEO の書簡の第一段落を使用して要約をお試しいただけます。
- ChatBot を試す
- 架空のキャラクター山田太郎という画家を設定して、チャットボットをお試しいただけます。チャット機能ではこれまでの会話の文脈を捉えて回答することが必要です。チャットの内容を随時プロンプトに追加して rinna モデルに入力することで実現できます。追加されていくプロンプトとrinna モデルの回答を確認しながらお試しいただけます。
- 計算を試す
- 足算を題材に rinna モデルの回答を試すことができます。もしかすると正しく回答できない場合があるかもしれません。しかし、人がそうであるように不得意なことはツールを利用することで解消できます。それが次の Agent を試すです。計算を試すと Agent を試すは是非セットでお試しいただければ嬉しいです。
- Agent を試す
- 計算指示に対し rinna モデルが電卓を使用する流れをお試しいただけます。Agent には ReAct などさまざまな手法が提案されており、その一部の要素をピックアップしています。まずツールを選択するまでのプロンプトと rinna モデルの回答の流れを一つ一つ確認できるように実装し、次にそれらを関数化して複数回実行できるようにしています。
- 発展
- Notebook では取り扱っていないけれども、次のステップとして是非挑戦いただきたい内容を記載しています。
- 付録
- テキスト生成実行時に渡せるパラメータを説明しています。Hugging Face の Text Generation Inference に則り、以下のパラメータをテキスト生成実行時に渡すことができます。この Notebook では、
max_new_tokens
,repetition_penalty
などが該当します。Text Generation Inference のパラメータ説明の日本語訳です。
- テキスト生成実行時に渡せるパラメータを説明しています。Hugging Face の Text Generation Inference に則り、以下のパラメータをテキスト生成実行時に渡すことができます。この Notebook では、
是非これら全ての詳細を本ブログでご紹介したいところですが、準備 と Agent を試す についてピックアップしてご紹介します。
「準備」のご紹介
Rinna Japanese GPT NeoX 3.6B Instruction PPO、Rinna Bilingual GPT NeoX 4B Instruction PPO 両方の公式サンプルのプロンプトを試すことができます。早速、出力例を見てみましょう。まず、Rinna Japanese GPT NeoX 3.6B Instruction PPO の例です。ユーザーとシステムを指定してテキストを入力している事がわかります。また、改行には <NL>
を使用しています。LLM の利用を開始する際、フォーマットを確認することは最初の一手です。
出力例:
コンタクトレンズ用の目薬を使用することができます。また、目の周りを保湿する効果がある、目にやさしい市販の目薬もあります。これらの目薬を使用することで、目のかゆみや刺激を抑えることができることがあります。
実は、最初のクイズはこちらのプロンプトを利用していました。上記の回答が Rinna Japanese GPT NeoX 3.6B Instruction PPO の出力です。皆様、クイズに正解できましたか?また、皆様の回答のお好みと比べていかがでしたか?OSS の日本語 LLM を試してみようと思っていただけたら嬉しいです。(Claude Instant V1 は Human/Assistant で識別するためフォーマットだけ変更してプロンプトを実行しました。)
Rinna Bilingual GPT NeoX 4B Instruction PPO の例はこちらです。同じく、ユーザー/システムを指定していますが、改行には改行コードを使用しています。また、多言語対応のため、サンプルも英語と日本語が使用されています。
出力例:
‘Virtual Realityです。’
「Agent を試す」のご紹介
Zero-Shot や Few-Shot に比べて Advanced な使い方として Agent を想定した使い方を記載しています。Agent は単一の LLM が持たない処理能力や知識を外部のツールや他の LLM と連携して、ユーザからの問合せを解決するための仕組みです。Agent の実装方法は目的や使用する LLM の選択により様々な実装が考えられます。Notebook では、その基礎になりそうなツールを選択して使用するというユースケースを挙げています。 人がそうであるように、何か計算する時には LLM も電卓を使用した方が正確です。この場合、プロンプトに入力されたテキストから、電卓を使用すべきか否かを LLM が判断でき、計算に必要な情報をテキストから取得できる事が鍵となります。是非、Notebook を活用いただき、rinna モデルを使用しての Agent の一端をご体験いただけますと幸いです。
出力例 (Rinna Bilingual GPT NeoX 4B Instruction PPO):
考察: [3+5] これは数式です。Tool を使うべきです。
行動: 使用する Tool は Dentaku[3+5]
回答: 8
計算式に対して、考察を経て行動を選択する様子が確認できます。Agent 利用においても OSS の日本語 LLM をお試しいただければ嬉しいです。
終わりに
Amazon SageMaker JumpStart rinna モデルの Notebook を利用してお試しいただける 7 つのユースケースをご紹介しました。LLM が初めての方にも理解し易くする事を心がけて作成しております。是非こちらを活用し、皆様の OSS の日本語 LLM 利用を JumpStart いただければ幸いです。また、現在、Train Model が使用できませんが、近日公開予定です。ご期待くださいませ。
著者
中島 佑樹 西日本のお客様をメインで担当するソリューションアーキテクト。社会人博士を修了したことをきっかけに AIML を得意分野としている。 システム一般のテーマや Amazon Bedrock を用いた生成系 AI のシステム開発、Amazon SageMaker Studio Lab を用いた AIML への入門まで幅広く活動。