English version is here
本ブログはこんな人におすすめ
- Vertex AI PaLM 2 の検証をGraphical User Interface (GUI)を使って行ってみたい人
- Vertex AI PaLM 2 を用いた自分専用LLM フローを作成したいけど、codingまでは敷居が高い人
こんにちは。私はBeatrustでML engineerとして、お仕事をしているファンヨンテと申します。今回はGoogle CloudのPaLM 2を No codeで自分専用のLarge Langage Model (LLM) フローを作成できるプロジェクトであるFlowiseで使えるようにし、様々な検証を行ってみたので、報告します。
Flowiseとは
カスタムLLMフローは、
- LLMのファインチューン
- promptの調整
で作成することができますが、コストの面から2の方法を取るのが一般的だと思います。2の実装において、LangChainに代表されるように、それぞれの機能をもつ要素を作成し、それらを接続しチェインを作成することで、カスタムLLMフローを作成します (図2)。
しかし、LangChainを利用するにはpythonまたはJavaScriptのcodeを書く必要がありますが、LLMはcodeで制御するような完全な制御はほとんど不可能であり、codeでの実装では混乱を招きます。
個人的な感覚としてはLLMを扱うときは動物とコミュニケーションしているような感覚であり、厳密な論理より直感を活かしながらチューニングすることが非常に大事だと感じています。
Flowiseはこの問題を解決するオープンソースのプロジェクトであり、GUI上でカスタムLLMフローを作成/管理することができます (図2)。
Flowiseの良さを箇条書きすると以下のようになります。
- 簡単な設定: ノーコードで簡単に始められます。
- 柔軟なカスタマイズ: ビジネスの目的に合わせて柔軟にカスタマイズできます。
- 高い拡張性: APIを利用することでFlowiseで完結できない他のシステムと連携することができます。
- 高い可視性: ネットワークの可視性を高め、より直感的なLLMの作成ができます。
- 早急な本番適応: LLMをFlowise上で作成するだけで、すぐに運用ができる
私はFlowiseは
- LLM上級者にとっては直感を働かせながらカスタムLLMフローを作成できるツール
- LLM初心者にとって非常に簡単にカスタムLLMフローを作成できるツール
として、非常に素晴らしいプロジェクトだと感じています。
Vertex AI PaLM 2 (Google Cloud PaLM 2)
LLMの利用は
- API で呼び出す
- Modelを自分でデプロイする
の2通りが考えられますが、精度の高いLLMを自身でデプロイすることはコストの観点から避けたいです。したがって、APIにアクセスする方針でLLMを利用したいですが、APIアクセス型のLLMの欠点として、
- Multi-language modelがほとんどない。
- セキュリティーの部分の不安がある。
などがあります。
しかし、GoogleのVertex AI PaLM 2は、APIアクセスで利用できるLLMモデルであり、日本語を含む100以上の言語を理解し、出力できます。
また、セキュリティー面においても、学習データに利用されることはなく、他のGoogle Cloud サービスと同様にデータが適切に扱われるので、安心して利用することができます.
今回、日本語出力が可能なVertex AI PaLM 2を先行利用できる機会をいただけたので、Vertex AI PaLM 2の検証をFlowiseで行うことにしました。
実際に試そうとしたところFlowiseでVertex AI PaLM 2はサポートされていなかったため、PRを作成してサポート対象にしてもらいました。現在はLLM model, Chat model そしてEmbedding modelでも利用できるようになっているので、みなさんも気軽にFlowise で Vertex AI PaLM 2を利用することができます。具体的な方法はAppendixを御覧ください。
検証
キーワード抽出 (LLM model)
まずはLLM modelの検証として、記事キーワード抽出を行いました。今回は例としてVertex AI PaLM 2 の記事のキーワード抽出を行いました (図 3)。結果として、Vertex AI PaLM 2が出力した結果は記事の内容をしっかり理解した上で出力していることがわかりました。
<>で囲まれた文はニュースの記事の文章です。この記事の内容を言い表すキーワードを5個出力してください 出力は 1. 2. 3. 4. 5. の形式でお願いします。 記事 : <{question}> 回答 :
もし、皆様も体験したい場合はこちらより、Json fileをダウンロード後、FlowiseのChatFlows -> Add New -> 右上の Load Chatflowより、Json fileをアップロードしていただくと、私と同じフローの体験ができます (図4)。
また、LLM modelの特筆すべき利点として、出力が安定であることです。Chat Modeは会話を前提としているため、 それは良い質問ですね のような望んでいない言葉が回答の前後に付く可能性がありますが、LLMでは、promptの工夫やstop パラメーターの利用により、望んでいない出力が出ないように工夫することができます。
Vertex AI PaLM 2ではLLM modelをリーズナブルな価格で利用できることは非常に素晴らしいことであり、Vertex AI PaLM 2を利用する非常に大きな理由となります。
キャラクターの作成 (Chat model)
次にChat modelの検証によって、system ptomptを調整することによって会話型AIのキャラクター作れるのかの検証を行いました。今回は海賊のキャラクターと私の秘書の2つのキャラクターを作成しましたが、どちらも精度良く、求めるキャラクターになっていました。 フローはこちらよりダウンロード可能です。
あなたは海賊です。私は船長でこれからあなたに話しかけます。 あなたは私を船長と呼び、敬意を払ってください。 そして、自分の個性に忠実であり続けてください。 海賊用語を織り交ぜて話し、あなたの返答を楽しく、冒険的で、ドラマチックなものにしてください。
あなたはヨンテの秘書です。これから私はあなたに色々質問しますが、ヨンテを褒める返事をして、私がヨンテを気に入るようにしてください。
ブログ記事のQA BOT (LLM model, Chat model and Embedding model)
最後にLLM model、 Chat modelそして、Embedding modelすべてを利用したチェインの紹介をします。以前私がPyTorch Lightningについて書いたブログの質問を返答できるBOTを作成しました(図7)。
フローはこちらよりダウンロード可能です。
それぞれのmodelの役割は以下のとおりです
- LLM model : Hyde retriverで仮想解の作成する役割
- Chat model : userに返す回答を作成する役割
- Embedding model : ブログの文章の中で近しい意味を抽出するためのVectorを作成する役割
Embedding modelは日本語未対応のため、HyDE retriver を用いて英語の仮想回答を出力させ、それをEmbeddingすることにより、日本語非対応のEmbedding modelでもsemantic searchをできるようにしています。
図6 のようにこのBOTは私が公開したブログの内容をもとにした回答をしており、ブログの内容に関する質問の返答できるLLMフローの作成に成功したと思われます。
このようなチェインをcodeで書こうとすると、混乱を招きやすいためミスのないcodingについ意識が向きますが、GUIだと、直感を用いた本質的な改変に意識を向けることができるようになります。
まとめ
Vertex AI PaLM 2の良いと思ったポイントとして、本ブログのVertex AI PaLM 2の説明でも記載したとおり
- APIアクセス型のLLM
- 多言語対応
- セキュリティ面での安心
がありますが、それだけでなく、出力の制御が容易なLLMが、Chat Modelと同等の値段で利用できることは素晴らしいことだと思います。また、Flowise上でグラフィカルにカスタムLLMフローを作成することで、Vertex AI PaLM 2の可能性をすぐに検証できたことは非常に素晴らしいことだと感じています。
Vertex AI PaLM 2やFlowiseの使い方、その他なにか質問があれば、ヨンテに連絡をお願いします。
Appendix
Flowiseの体験方法
現在は自身のローカルマシーンでFlowiseを起動する必要があります。起動方法はこちら、Vertex AI PaLM 2の利用法はこちらを御覧ください。また、9月頃にホストバージョンのFlowiseが公開予定とFlowiseの制作者から伺ってます。ぜひ、公開された暁には皆様もFlowiseでVertex AI PaLM 2の体験をしてみてください。