DSPy を使用して Stanford OVAL の STORM Mistral デモを実行する
導入
テクノロジーが向上し続けるにつれて、大規模言語モデルの有望性がますます明らかになり、その使用はますます普及しています。 LLaMA 3 のリリースにより、オープン ソース言語モデルの品質が、ChatGPT のリリース以来シーンを支配してきたウォールド ガーデン リリースにかなり近い品質になりつつあります。
これらのモデルのより魅力的な使用例の 1 つは、筆記補助として使用することです。最高の LLM であっても幻覚や確信犯的な誤解が生じる可能性はありますが、よく知られたトピックに関する執筆資料を迅速に生成できることは、さまざまな理由で役立ちます。これらの LLM モデルのトレーニング データの範囲が堅牢性とサイズで増大するにつれて、この可能性は高まるばかりです。
この可能性を活用した最新かつ最もエキサイティングなアプリケーションは、Stanford OVAL の STORM パイプラインです。 STORM (検索と多視点の質問によるトピックのアウトラインの合成) モデルは、トピックに関する相互の会話をシミュレートするさまざまな専門エージェントのコレクションを使用して事前作成段階を実行し、照合された情報を総合的にアウトラインに統合します。エージェントの視点を考慮します。これにより、STORM はアウトラインを使用して、ほぼすべてのトピックについて完全な Wikipedia のような記事を最初から生成できるようになります。 STORM は、資料の構成と網羅性の点で、検索拡張生成ベースの記事ジェネレーターよりも優れたパフォーマンスを発揮します。
この記事では、VLLM でホストされた HuggingFace モデルで STORM を使用して記事を生成する方法を説明します。コーディングのデモに入る前に、STORM がどのように機能するかについて簡単に概要を理解してください。
前提条件
- Python 環境: Python 3.8 以降がインストールされていることを確認します。依存関係には仮想環境を使用します。
- 依存関係:
DSPy
、transformers
、およびデモのrequirements.txt
で指定されているその他のライブラリを含む必要なライブラリをインストールします。 - ミストラル モデル: ミストラル モデルのチェックポイントとトークナイザーを Hugging Face または提供されたソースからダウンロードします。
- ハードウェア: 効率的な実行のための GPU へのアクセス (理想的には CUDA サポートあり)。
- STORM コードベース: Stanford OVAL の GitHub から STORM デモ リポジトリのクローンを作成します。
- 設定: 必要に応じて設定ファイル (モデルやデータセットへのパスなど) を調整します。
ストームは何をするのですか?
STORM は、一連の LLM エージェントと Wikipedia および You.com 検索 API を使用して、あらゆるテーマに関する Wikipedia のような記事を高品質で生成するパイプラインです。これを実現するために、パイプラインはまず、投稿されたトピックに関連する関連記事を Wikipedia で検索し、その目次を抽出してトピックに関する新しい概要を生成します。これらからの情報は、知識のあるウィキペディアのライターを迅速に準備する一連の主題マスターの会話エージェントをセットアップするために使用されます。情報を得たライターは、アウトラインを足場として記事を書きます。
STORMはどのように機能しますか?
まず、STORM は you.com 検索 API を使用して、LLM の Wikipedia 記事にアクセスします。 STORM の使用を開始するには、必ず API キーを設定し、ノートブックの secrets.toml
に追加してください。 LLM ライター エージェントの場合、VLLM を利用して、HuggingFace.co からキャッシュにダウンロードされたモデルを実行します。具体的には、Mistral の Mistral-7B-Instruct-v0.2 を使用します。
(ソース)
ここでは、STORM の記事から、Wikipedia のような記事を生成するという課題に対するさまざまなアプローチの概要を示します。これを行うために、ほとんどのアプローチでは、プリライティングと呼ばれる手法が使用されます。これは、LLM が別々のソースからトピックのマテリアルを解析して取得する発見段階です。
彼らが最初に検討したものは、おそらく最も直接的で明白なものです。LLM エージェントが大量の質問を生成し、それぞれについてモデルにクエリを実行します。その後、それらはエージェントによって記録され、サブヘッダーを付けて順序付けされ、アウトラインが作成されます。
彼らが言及した 2 番目の方法は、視点に基づいた質問です。このプロセスには、モデルが最初に、異なるけれども関連性のある Wiipedia 記事の分析を通じて多様な視点を発見することが含まれます。 LLM はこれらの視点によって擬人化され、記事の概要を生成する直接的な質問をより正確に形成できるようになります。
(ソース)
3 番目の方法は、STORM リリース用に開発された方法、つまり会話型の質問です。この方法には、視点に基づく質問の強化形式が含まれます。パイプライン調査は、「Wikipedia API を通じて記事が取得できる場合、LLM に関連トピックのリストを生成させ、その後、対応する Wikipedia 記事から目次を抽出します」(出典)。次に、記事は、ウィキペディアのライター エージェントとしてトピックの専門家と会話するための一定数の視点を提供するために使用されます。それぞれの視点について、ウィキペディアのライターとトピックの専門家が会話をシミュレートします。一定回数の対話の後、視点と会話履歴のコンテキストを使用してトピックに関連した質問が生成されます。質問は単純な検索用語に分割され、検索結果は信頼できない情報源を考慮から除外するために使用されます。次に、信頼できる検索結果が合成されて、質問に対する最終的な回答が生成されます。最終的な質問と回答のやり取りは、LLM が作成段階で参照するためのリファレンス ガイドにまとめられます。最終的な概要では、固有の知識を使用して、参考文献から収集した知識をつなぎ合わせて高品質の記事にまとめます。
執筆前の段階が完了した後、執筆前に、LLM はまずトピックから記事の一般的なアウトラインを生成するように求められます。この一般的なアウトラインは、入力トピックおよびシミュレートされた会話とともに再び使用され、元のアウトラインから改善されたアウトラインが生成されます。これは、Wikipedia の作成者をガイドするために執筆中に使用されます。記事は、アウトラインの各セクションから部分的に生成されます。最終出力が連結されて完全な記事が生成されます。
ストームデモ
STORM を実行するには、最初に注意する必要があることがいくつかあります。
実際にデモを実行するには、Web+News Search API を利用する You.com にサインアップする必要があります。リンクを使用して無料トライアルにサインアップし、API キーを取得します。後で使用できるようにキーを保存します。
その準備が完了したら、ノートブックを起動できます。 STORM の実行には A6000 または A100-80G GPU を推奨します。これにより、妥当な時間枠で結果を取得し、メモリ不足エラーを回避できます。
ノートブックが起動したら、ipynb ファイルを開いてデモを続行します。
デモのセットアップ
デモのセットアップは非常に簡単です。開始するには、VLLM と STORM の要件をインストールする必要があります。最初のコード セルを実行するか、各行の先頭に感嘆符を付けずにこれを対応する端子に貼り付けます。
!git pull
!pip install -r requirements.txt
!pip install -U huggingface-hub anthropic
!pip uninstall jax jaxlib tensorflow -y
!pip install vllm==0.2.7
このプロセスには少し時間がかかる場合があります。それが完了したら、次のコード セルを実行して HuggingFace.co にログインし、API アクセス トークンを取得します。出力によって提供されるリンクを使用して、トークンにアクセスしたり、トークンを作成したりできます。それをコピーして、出力に表示されるセルに貼り付けるだけでトークンを追加できます。
import huggingface_hub
huggingface_hub.notebook_login()
これが完了すると、使用したい HuggingFace モデルにアクセスできるようになります。これを変更するには、run_storm_wiki_mistral.py ファイルの 35 行目の mistral_kwargs
変数のモデル ID を編集し、VLLM クライアントに対して呼び出すモデル ID も変更します。
VLLM クライアントの実行
STORM を実行するために、Python スクリプトは API 呼び出しに依存して LLM からの入力と出力を受け取ります。デフォルトでは、OpenAI を使用するように設定されています。過去数日間で、DSPY VLLM エンドポイントがスクリプトと連携できるようにする機能が追加されました。
これを設定するには、次のコード セルを実行するだけです。これにより、直接チャットできる対話型 API エンドポイントとして Mistral が起動します。
!python -m vllm.entrypoints.openai.api_server --port 6006 --model 'mistralai/Mistral-7B-Instruct-v0.2'
API が起動したら、STORM を実行できます。構成方法については、次のセクションを参照してください。
ランニングストーム
すべての設定が完了したので、あとは STORM を実行するだけです。このデモでは、サンプル run_storm_wiki_mistral.py を使用します。次のコマンドをターミナル ウィンドウに貼り付けます。
python examples/run_storm_wiki_mistral.py \
--url "http://localhost" \
--port 6006 \
--output-dir '/notebooks/results/' \
--do-research \
--do-generate-outline \
--do-generate-article \
--do-polish-article
ここからは、選択したトピックを入力するように求められます。これが新しい記事の主題になります。入力されたトピック「NVIDIA GPU」を使用してテストしました。以下の生成された記事のサンプルセクションを読むことができます。ご覧のとおり、書式設定は Wikipedia の記事の書式を完全に模倣しています。このトピックは、主題の皮肉なニッチさを考慮すると、元のモデルのトレーニングではあまり扱われていない可能性が高いため、生成されたテキストに表示される正しい情報はすべて STORM 調査手順を通じて確認されたと想定できます。見てみましょう。
## Ampere Architecture (2020)
Ampere is the newer of the two architectures and is employed in the latest generation of NVIDIA graphics cards, including the RTX 30 Series [6]. It offers up to 1.9X Performance per Watt improvement over the Turing architecture [6]. Another great addition to the Ampere is the support for HDMI 2.1, which supports ultra-high resolution and refresh rates of 8K@60Hz and 4K@120Hz [6].
Both Turing and Ampere architectures share some similarities. They are employed in the latest generation of NVIDIA graphics cards, with Turing serving the RTX 20 Series and Ampere serving the RTX 30 Series [6]. However, Ampere comes with some newer features and improvements over the Turing GPU architecture [6].
[6] The Ampere architecture offers up to 1.9X Performance per Watt improvement over the Turing architecture. Another great addition to the Ampere is the support for HDMI 2.1 which supports the ultra-high resolution and refresh rates which are 8K@60Hz and 4K@120Hz.
[7] Look for new applications built from scratch on GPUs rather than porting of existing large simulation applications.
[8] In 2007, NVIDIA’s CUDA powered a new line of NVIDIA GPUs that brought accelerated computing to an expanding array of industrial and scientific applications.
[1] Opens parallel processing capabilities of GPUs to science and research with the unveiling of CUDA® architecture.
[9] RAPIDS, built on NVIDIA CUDA-X AI, leverages more than 15 years of NVIDIA® CUDA® development and machine learning expertise.
[10] Modeling and simulation, the convergence of HPC and AI, and visualization are applicable in a wide range of industries, from scientific research to financial modeling.
[11] PhysX is already integrated into some of the most popular game engines, including Unreal Engine (versions 3 and 4), Unity3D, and Stingray.
[12] NVIDIA Omniverse™ is an extensible, open platform built for virtual collaboration and real-time physically accurate simulation.
ご覧のとおり、これは入手可能な情報を非常に印象的に抽出したものです。この非常に複雑で技術的な主題の詳細に関しては、小さな間違いがいくつかありますが、パイプラインは、主題の現実に関して、生成されたテキストに関してほぼ完全に正確でした。
最後に
この記事で紹介した STORM のアプリケーションは、本当に驚くべきものです。このような LLM のアプリケーションを通じて、教育的でドライなコンテンツの作成プロセスを大幅に強化できる可能性が非常にあります。関連技術の向上に伴い、これがどのようにさらに進化するかを見るのが待ちきれません。