「RunPodを使用した生成的LLMsの実行 | サーバーレスプラットフォーム」
Executing generative LLMs using RunPod | Serverless platform
イントロダクション
サーバーレスは、クラウドコンピューティングにおける画期的な戦略として浮上しています。開発者がアプリケーションの作成に完全に集中できる一方、基盤となるインフラストラクチャはクラウドプロバイダーが管理します。Generative AI Large Language Modelsは、これらの言語モデルが使用する高いGPU VRAMのため、ほとんどの開発者がローカルで実行できないため、Serverless GPUsの成長を後押ししています。RunPodは、リモートGPUサービスで人気が高まっているプラットフォームの1つです。RunPodは、GPUインスタンス、Serverless GPUs、APIエンドポイントなどのさまざまなコンピューティングサービスを提供することで、大規模な言語モデルを使用したアプリケーションの構築およびテストに強力なGPUへのアクセスを提供します。手頃な価格とさまざまなGPUの可能性があるため、リソース集約型の大規模言語モデルの実行には、RunPodでLLMsを学習してください。
学習目標
- サーバーレスの概念と、LLMsで作業する開発者にとってなぜ役立つのかを学ぶ
- 大規模言語モデルを実行するための高いGPU VRAMの必要性を理解する
- クラウドでGPUインスタンスを作成して言語モデルを実行する方法を学ぶ
- LLMのサイズに基づいてGPU VRAMを割り当てる方法を学ぶ
この記事は、Data Science Blogathonの一環として公開されました。
サーバーレスとは何ですか?
サーバーレスは、クラウドプラットフォームのサービス/メソッドであり、開発とアプリケーションの展開に必要なインフラストラクチャをオンデマンドで提供します。サーバーレスでは、アプリケーションの開発に集中し、クラウドプロバイダーに基盤の管理を任せることができます。AWS、Azure、GCPなどの多くのクラウドプラットフォームがこれらのサービスを提供しています。
近年、サーバーレスGPUが人気を集めています。サーバーレスGPUは、メモリが不足している場合にクラウド上でGPUの計算能力を借りることです。大規模な言語モデルの導入以来、これらのサーバーレスプラットフォームは次々と台頭し、他のプラットフォームよりも優れたGPUサービスを提供しています。RunPodはそのようなサービスの1つです。
- 「Amazon SageMaker JumpStartを使用して、Generative AIとRAGを活用して安全なエンタープライズアプリケーションを構築する」
- 「ChatGPTにおける自然言語入力のパワーを解き放つ」
- 「生成AIの10年からの教訓」
RunPodについて
RunPodは、GPUインスタンス、Serverless GPUs、AIエンドポイントなどのコンピューティングサービスを提供するクラウドプラットフォームであり、大規模な言語モデルを使用したアプリケーションの開発者が大規模なGPUを活用できるようにします。RunPodのGPUインスタンスの価格は、GCP、Azure、AWSなどの大手クラウドプロバイダーが提供する価格よりもはるかに安くなっています。RunPodには、RTX 30シリーズから40シリーズ、さらにはNvidia Aシリーズなど、40GB以上のVRAMを持つ幅広いGPUがあります。そのため、130億パラメータや600億パラメータの言語モデルを簡単に実行できます。
RunPodは、次の2つのタイプのGPUサービスを提供しています:
- Community Cloudサービス:個々のユーザーに属するGPUを借りるサービスで、非常に安価です。
- Secure Cloudサービス:使用するGPUがRunPod自体に属しており、Community Cloudよりもやや高価です。大規模な言語モデルをトレーニングするために複数のGPUをクラスタリングしたい場合には、Service Cloudがより適しています。
また、RunPodはSpot InstancesとOn-Demand Instancesの両方を提供しています。Spot Instancesはいつでも中断される可能性があるため非常に安価ですが、On-Demand Instancesは中断されません。この記事では、RunPodを通じてGPUインスタンスを設定し、テキスト生成のWeb UIを実行し、Hugging Faceから大規模な言語モデルをダウンロードしてそれとチャットする方法を説明します。
RunPodアカウントの設定
まず、RunPodアカウントの設定から始めましょう。ここをクリックすると、RunPodのホーム画面に移動し、以下の画像が表示されます。その後、サインアップボタンをクリックします。
サインアップした後、クラウドGPUインスタンスを使用するためにクレジットを追加する必要があります。最低入金額は10ドルからで、デビットカードまたはクレジットカードで行うことができます。クレジットを購入するには、左側の請求セクションをクリックする必要があります。
ここで、私は10ドルを購入しましたので、利用可能な残高は10ドルです。これは一度だけの支払いです。10ドルが使い果たされた後は、作成したPodが利用可能な残高が0ドルになると自動的にシャットダウンされます。RunPodには自動支払いオプションもありますが、お金の心配をする必要はないので、一度だけの支払い設定を行います。
GPUインスタンス
ここでは、左側のコミュニティクラウドをクリックすると、利用可能なすべてのGPU、その仕様、およびそれらに対する料金がリストされていることがわかります。セキュリティクラウドも同じですが、セキュリティクラウドのGPUはRunPodチームによって管理されており、コミュニティクラウドのGPUは世界中の個人の所有物です。
テンプレート
上の写真では、事前定義されたテンプレートが利用可能であることがわかります。これらのテンプレートを使用して数分でGPUインスタンスを実行できます。安定拡散テンプレートなどの多くのテンプレートでは、安定拡散を使用して画像を生成するためのGPUインスタンスを起動できます。RunPod VS Codeテンプレートでは、GPUインスタンスからGPUを書き込みおよび利用することができます。
さまざまなバージョンのPyTorchテンプレートでは、最新のPyTorchライブラリが含まれたGPUインスタンスを利用することができ、機械学習モデルの構築に使用することができます。また、カスタムテンプレートを作成することもでき、同じテンプレートでGPUインスタンスを起動できるよう他の人と共有することもできます。
RunPodを使用してLLMsを実行する
このセクションでは、GPUインスタンスを起動し、Oobaboogaテキスト生成Web UIをインストールします。これにより、ハグフェイスから利用可能なモデルをダウンロードすることができます。オリジナルのfloat16バージョンまたは量子化形式のいずれでも使用できます。これには、24GBのVRAMを搭載したNvidia A5000 GPUインスタンスを選択します。これは私たちのアプリケーションに十分な容量かもしれません。したがって、A5000を選択し、展開をクリックします。
PyTorchテンプレート
次に、大規模言語モデルを実行するためにはPyTorchが必要ですので、PyTorchテンプレートを選択しました。このテンプレートからインスタンスを作成すると、テンプレートにはPyTorchライブラリがロードされます。ただし、このインスタンスではいくつかの変更を行います。したがって、カスタム展開をクリックします。
ここでは、コンテナディスクを75GBに割り当てます。したがって、大容量の言語モデルをダウンロードする場合に収まるようになります。また、後でデータを保存する必要はありません。したがって、ボリュームディスクを0に設定します。これが0に設定されている場合、GPUインスタンスが削除されるとすべての情報が失われます。この例では、それで問題ありません。さらに、実行するアプリケーションはポート7860にアクセスする必要があります。したがって、ポート7860を公開します。最後に、オーバーライドをクリックします。
オーバーライド
オーバーライドをクリックすると、以下の画像にGPUインスタンスの推定1時間あたりの費用が表示されます。24GBのVRAMを搭載したGPUと29GBのRAM、8vCPUは約0.45ドル/時間かかります。これは、多くの大手クラウドプロバイダーが提供するものよりも非常に安価です。今、デプロイボタンをクリックします。
上記のデプロイをクリックすると、数秒以内にインスタンスが作成されます。これで、上の写真に表示されるConnectボタンを使用してこのGPUインスタンスに接続できます。Connectボタンをクリックすると、ポップアップが表示され、Start Web Terminalをクリックし、以下の写真に示すようにWeb Terminalに接続することで、GPUインスタンスにアクセスできます。
今、ウェブブラウザの新しいタブが表示されます。これにアクセスすることができます。それでは、ウェブターミナルで以下のコマンドを入力して、text-generation-web-uiをダウンロードしましょう。これにより、HuggingFaceから任意の大規模言語モデルをダウンロードして推論に使用することができます。
git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
pip install -r requirements.txt
テキスト生成WebUI
今、最初のコマンドはテキスト生成WebUIのGitHubリポジトリを取得します。このリポジトリには、大規模な言語モデルをローカルで使用するためのPythonコードが含まれています。次の2行はディレクトリに移動し、Pythonプログラムを実行するために必要なすべてのライブラリをインストールします。WebUIを起動するには、以下のコードを使用します。
python server.py --share
上記のコマンドでWebUIが起動します。これにより、WebUIがローカルホストで起動します。ただし、リモートのGPUインスタンスでアプリケーションを実行するため、ウェブサイトにアクセスするためにパブリックURLを使用する必要があります。-shareオプションを使用すると、パブリックURLが作成され、テキスト生成WebUIにアクセスするためにクリックすることができます。
上の画像に示されているように、gradio.liveリンクをクリックしてUIにアクセスします。そのUIで、トップメニューの「Model」セクションに移動します。以下の画像では、右側に向かって、使用したいモデルのリンクを提供する必要があります。
WizardLM 30B
これについては、Hugging Faceの「WizardLM 30B」というモデルに移動しましょう。30億パラメータのモデルです。このモデルへのリンクをコピーし、UIに貼り付けて、モデルをダウンロードするためにダウンロードボタンをクリックします。
UIの選択
大規模言語モデルがダウンロードされたら、UIの左側から選択できます。モデルの下にある更新ボタンをクリックして、ダウンロードしたモデルが見つからない場合は更新します。今ダウンロードしたモデルを選択します。ダウンロードしたモデルは16GBのモデルです。したがって、GPUのVRAMに約20GBの割り当てを行い、モデルを完全にGPUで実行します。その後、ロードボタンをクリックします。これにより、モデルがGPUにロードされ、UIの右側に成功メッセージが表示されます。
詩を書く
大規模な言語モデルがGPUに読み込まれたので、それを推論することができます。トップメニューの「Notebook」をクリックしてUIの「Notebook」セクションに移動します。ここでは、「太陽についての詩を書く」と言ってモデルに詩を実行するように依頼し、生成ボタンをクリックしてモデルによって以下のように生成されます:
上記の画像は、モデルがクエリに基づいて詩を生成したことを示しています。ここで最も良い部分は、詩が太陽に関連しているということです。ほとんどの大規模言語モデルは、初期のクエリから逸脱しようとしますが、ここでは、私たちのWizardLM大規模言語モデルは最後までクエリの関係を保ちます。テキスト生成だけでなく、モデルともチャットすることができます。そのためには、UIの上部にある「チャットを開く」をクリックして、チャットセクションに移動します。ここで、モデルにいくつかの質問をしてみましょう。
ここでは、モデルに第二次世界大戦に関する情報を箇条書きで提供するように依頼しました。モデルは、クエリに関連するチャットメッセージで適切な返答をすることに成功しました。モデルはまた、クエリのチャットメッセージで要求されたように情報を箇条書きで提示しました。したがって、このようにして、オープンソースの大規模言語モデルをダウンロードし、作成したGPUインスタンスを介してそれを使用することができます。
結論
この記事では、GPUサーバーレスサービスを提供するRunPodというクラウドプラットフォームについて見てきました。ステップバイステップで、RunPodのアカウントを作成する方法、そしてそれ内でGPUインスタンスを作成する方法を見てきました。最後に、GPUインスタンスで、テキスト生成UIを実行して、オープンソースの生成AI大規模言語モデルを推論するプロセスを見てきました。
要点
この記事からのいくつかの要点は次のとおりです:
- RunPodはGPUサービスを提供するクラウドプラットフォームです。
- RunPodは2つの方法でサービスを提供しています。1つはコミュニティクラウドサービスであり、そこで借りるGPUは個人から提供され、安価です。もう1つはセキュアクラウドサービスであり、作成するGPUインスタンスはRunPodのGPUに属します。
- RunPodには、ライブラリ/ソフトウェアがインストールされた状態で作成される、いくつかのボイラープレートコードを含むテンプレートが用意されています。
- RunPodは、自動および一度きりの支払いサービスの両方を提供しています。
よくある質問
この記事に表示されるメディアはAnalytics Vidhyaの所有ではなく、著者の裁量で使用されています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles