1クリックモデルを使用したバッチ推論の実行方法
紹介
DigitalOceanの1クリックモデルは、Hugging Faceの技術を活用して、Mistral、Llama、Gemma、Qwenなどの人気の大規模言語モデルを簡単に展開し、対話することができます。すべてはクラウドで最も強力なGPU上で動作します。NVIDIA H100 GPUドロップレットを活用することで、このソリューションは深層学習タスクに対して加速された計算性能を提供します。圧倒的なインフラの複雑さを排除し、初心者でも上級者でも、あらゆるスキルレベルの開発者が複雑なソフトウェアの設定に煩わされることなく、アプリケーション構築に集中できるようにします。
この記事では、1クリックモデルを使用したバッチ処理を示します。私たちのチュートリアルでは、単一のGPU上でLlama 3.1 8B指示モデルを利用します。この例では小規模なバッチを使用しますが、作業負荷と利用可能な計算リソースに応じて、簡単に大規模なバッチにスケールアップできます。DigitalOceanの1クリックモデルのデプロイメントの柔軟性により、ユーザーはさまざまなデータサイズを簡単に管理でき、小規模なタスクから大規模なエンタープライズアプリケーションまで幅広いシナリオに適しています。
前提条件
DigitalOceanのワンクリックモデルを使用したバッチ推論に入る前に、次のことを確認してください。
- DigitalOceanアカウント: DigitalOceanアカウントにサインアップし、請求を設定してください。
- 1クリックモデルのデプロイ:GPUドロップレットで1クリックモデルを開始する方法を理解するためにブログを読んでください。
- ベアラートークン: GPUドロップレットのウェブコンソールからベアラートークンを取得しました。
バッチ推論とは何ですか?
バッチ推論は、複数のデータ入力を一度に処理および分析するプロセスであり、個々のデータを一つずつ処理するのではありません。各リクエストをモデルに一つずつ送信する代わりに、リクエストのバッチやグループを一度に送信します。このアプローチは、大量のデータセットを扱ったり、大量の作業を処理したりする際に特に便利です。
このアプローチは、いくつかの理由で有益であり、その一部は以下に示されています。
- 処理の高速化:
複数の入力を一緒に処理することで、バッチ推論は大量のデータを分析するのにかかる時間を短縮します。 - 効率的なリソースの利用:
一度に複数のリクエストを送信することで、個々のリクエストを処理するオーバーヘッドが減少し、GPUなどの計算リソースの使用が最適化されます。 - コスト効率的:
バッチ推論は、特にAPIコールの数に基づいて請求される場合に、推論エンドポイントへのリクエスト数を最小限に抑えることで運用コストを削減できます。 - ビッグデータにスケーラブル:
大規模なデータセットを扱うとき、バッチ推論はシステムを圧倒することなく、大規模に処理を可能にします。 - 一貫した結果:
入力をバッチで処理することで、モデルのパフォーマンスが均一になり、結果の変動が減少します。
DigitalOceanの1クリックモデルの設定
1クリックモデルとDigitalOceanのプラットフォームの使い始め方についての詳細な記事を作成しました。リンクをチェックして、詳細を学んでください。
DigitalOceanのワンクリックモデルを使用してバッチ推論を実行し、感情を分析する方法
顧客のコメントを分析することは、企業がブランドの認識を監視し、製品に対する顧客の満足度を理解し、トレンドを予測するための重要なツールとなっています。DigitalOceanの1クリックモデルを使用することで、効率的に大規模な感情分析を行うことができます。以下の例では、5つのコメントのバッチを分析します。
感情分析のユースケースを用いたバッチ推論の例を見ていきましょう。
ステップ1:依存関係をインストールする
pip install --upgrade --quiet huggingface_hub
ステップ2:推論クライアントを初期化する
import os
from huggingface_hub import InferenceClient
Initialize the client with your deployed endpoint and bearer token
client = InferenceClient(base_url="http://localhost:8080", api_key=os.getenv("BEARER_TOKEN"))
ステップ3:バッチ入力を準備する
Create a list of inputs
batch_inputs = [
{"role": "user", "content": "I love using this product. It's amazing!"},
{"role": "user", "content": "The service was terrible and I'm very disappointed."},
{"role": "user", "content": "It's okay, not great but not bad either."},
{"role": "user", "content": "Absolutely fantastic experience, I highly recommend it!"},
{"role": "user", "content": "I'm not sure if I like it or not."},
]
ステップ4:バッチ推論を実行する
Iterate through the batch and send requests
batch_responses = []
for input_message in batch_inputs:
Send each input to the deployed model
response = client.chat.completions.create(
model="meta-llama/Meta-Llama-3.1-8B-Instruct",
messages=[input_message],
temperature=0.7,
top_p = 0.95,
max_tokens = 128,)
Extract the sentiment result from the response and append the result to the batch_responses list
batch_responses.append(response['choices'][0]['message']['content'])
ステップ5:結果を印刷する
Print the results for each input
for idx, (input_text, sentiment) in enumerate(zip(batch_inputs, batch_responses), start=1):
print(f"Input {idx}: {input_text['content']}")
print(f"Sentiment: {sentiment}")
print("-" * 50)
仕組み:
- バッチ入力: 各入力文の感情を分析するために、入力のリストを定義します。
- 入力を反復処理する: InferenceClientを使用して、各入力をデプロイされたモデルにリクエストとして送信します。
温度とTop-p:
- 決定論的な結果のために温度を0.7に設定してください。
- サンプリングのランダム性を避けるためにtop_p=0.95を使用します。
- 結果を抽出: レスポンスから感情予測を収集し、保存します。
- 結果を表示: 明確にするために、元のテキストと感情ラベルを並べて印刷する
重要なポイント
"YOUR_BEARER_TOKEN"をあなたのDigitalOcean Dropletから取得した実際のトークンに置き換えてください。- バッチサイズや温度、Top-pなどの他のパラメータを調整してください。
バッチ推論の実行:質問応答システムの例
DigitalOceanの1クリックモデルを使ってバッチ推論を行うには、1回のリクエストで複数の質問を提出できます。こちらが別の例です:
Define a batch of inputs
batch_inputs = [
{"role": "user", "content": "What is Deep Learning?"},
{"role": "user", "content": "Explain the difference between AI and Machine Learning."},
{"role": "user", "content": "What are neural networks used for?"},
]
for input_message in batch_inputs:
response = client.chat.completions.create(
model="meta-llama/Meta-Llama-3.1-8B-Instruct",
messages=[input_message],
temperature=0.7,
top_p = 0.95,
max_tokens = 128,)
batch_responses.append(response['choices'][0]['message']['content'])
for idx, output in enumerate(batch_responses, start=1):
print(f"Response {idx}: {output}")
説明:
- 入力パラメータは文字列のリストであり、1回のAPI呼び出しで複数のテキストを送信できるようにします。
- モデルはすべての入力を一度に処理し、結果をリストとして返します。
- モデルの要件に応じて、max_lengthやtemperatureなどのパラメータをカスタマイズできます。
DigitalOceanによるバッチ推論のスケーリング
DigitalOceanのインフラストラクチャはスケーラビリティのために設計されています。
- 高性能GPUドロップレット: NVIDIA H100 GPUを活用して、高速かつ効率的な推論を行います。
- Kubernetesによるオートスケーリング: マイクロバーストやトラフィックスパイクに対応するために、Dropletクラスターを自動的にスケールします。
- ロードバランサー: 複数のDropletにトラフィックを分散させ、一貫したパフォーマンスを実現します。
現実の応用
感情分析や推薦システムを除いて、バッチ推論は大量のデータを扱うビジネスアプリケーションにとって重要な機能です。これにより、プロセスがより迅速で効率的、かつコスト効果的になります。
- マーケティングキャンペーン:製品発売中のユーザーの感情を監視します。多くの場合、企業は数千のソーシャルメディアの投稿、ツイート、レビューから顧客の感情を分析する必要があります。バッチ処理は、このデータを一度に処理するのに役立ち、レビューが製品発売に対して肯定的か否定的か、または顧客が特定のサービスの問題について話しているかどうかといったトレンドを特定するのに役立ちます。
- 顧客サポート: 企業は、調査やレビューを通じて大量のフィードバックを受け取ります。バッチ推論を使用することで、このフィードバックを事前に定義されたカテゴリ(例えば、「肯定的」、「否定的」、「中立的」)に分類でき、各フィードバックを手動で確認する手間を減らすことができます。
- コンテンツ生成: 一度に複数の質問に対する回答を生成することは、多くの教育機関や研究機関で一般的な利用ケースです。例えば、企業がFAQへの自動応答を行いたい場合や、教師が複数の生徒からの質問に対する回答を必要とする場合があります。
- プラットフォーム上のコンテンツモデレーション:ユーザー生成コンテンツを持つオンラインプラットフォームは、不適切な素材に関して大量のテキスト、画像、または動画をフィルタリングし、モデレートする必要があります。バッチ推論により、コンテンツ違反を自動的にフラグ付けすることが可能になります。
結論
DigitalOceanの1クリックモデルを使用したバッチ推論は、複数の入力を効率的に処理する強力な方法です。DigitalOceanの1クリックモデルを使用することで、感情分析のためのバッチ推論を迅速に実装でき、ソーシャルメディアトレンドに関するリアルタイムの洞察を得ることができます。このソリューションは、デプロイメントを簡素化するだけでなく、最適化されたパフォーマンスとスケーラビリティも保証します。
参考文献
- GPUドロップレットでの1クリックモデルの使い方 - Hugging Faceを使ったLlama 3.1のガイド
- デジタルオーシャン上のHugging Faceによって提供される1クリックモデル
- ワンクリックモデルのGPUドロップレットを個人アシスタントに変える
- デジタルオーシャンのHUGS


