オープンLLMのLLAMA-CPPサーバーへの展開: 段階的なガイド

オープンLLMのLLAMA-CPPサーバーへのデプロイ: 手順ガイド。オープンソースの大規模言語モデルをLLAMA-CPPサーバーでサービングする方法を学びます。cURL、OpenAIクライアント、Pythonのrequestsパッケージを使ってリクエストを行う方法を解説します。ローカルおよびリモートデプロイメントの最適化も紹介します。

2025年2月21日

party-gif

オープンソースの大規模言語モデル(LLM)の力を解き放つ、LLAMA-CPPサーバーの展開に関する包括的なガイドです。単一のLLMで複数のユーザーを効率的に提供し、AI駆動のアプリケーションのパフォーマンスとアクセシビリティを最適化する方法を発見してください。

LLAMA-CPPのインストール

LLAMA-CPPを使い始める最も簡単な方法は、Homebrewパッケージマネージャーを使ってインストールすることです。これはmacOSとLinuxマシンの両方でネイティブに動作します。Windows マシンでLLAMA-CPPをインストールするには、Windows Subsystem for Linux (WSL)を使う必要があります。

Homebrewを使ってLLAMA-CPPをインストールするには、ターミナルで次のコマンドを実行します:

brew install llama-cpp

このコマンドでLLAMA-CPPパッケージがシステムにダウンロードおよびインストールされます。インストールが完了したら、llama-serverコマンドを使ってLLMモデルを提供できます。

LLAMA-CPPサーバーの起動

LLAMA-CPPサーバーを起動するには、以下の手順に従います:

  1. Homebrewパッケージマネージャーを使ってLLAMA-CPPをインストールします:

    brew install llama.cpp
    

    このコマンドでMacまたはLinuxマシンにLLAMA-CPPがインストールされます。Windowsユーザーの場合、WSL (Windows Subsystem for Linux)を使ってLLAMA-CPPをインストールする必要があります。

  2. 次のコマンドを実行してLLAMA-CPPサーバーを起動します:

    llama-server --model <hugging-face-repo-id> --model-file <quantization-file>
    

    <hugging-face-repo-id>には提供したいモデルのHugging FaceリポジトリIDを、<quantization-file>には使用したい量子化ファイル(例: 4ビット量子化バージョンのGGMLフォーマット)を入力してください。

  3. LLAMA-CPPサーバーはデフォルトでlocalhost:8080でリッスンを開始します。--hostおよび--portのオプションを使って、ホストアドレスとポートをカスタマイズできます。

  4. サーバーには最大コンテキストウィンドウ、バッチサイズなどの設定オプションがあります。llama-server --helpを実行して、これらのオプションを確認できます。

  5. サーバーが起動したら、cURL、OpenAIクライアント、Pythonのrequestsパッケージなどを使って、さまざまな方法でサーバーと対話できます。

LLAMA-CPPサーバーは、オープンソースの大規模言語モデルをローカルマシンやプロダクション環境で効率的に提供するために設計されています。サーバーを活用することで、これらのモデルをアプリケーションに簡単に統合し、単一のGPUで複数のユーザーにサービスを提供できます。

LLAMA-CPPサーバーへのリクエスト

LLAMA-CPPサーバーと対話し、モデルにリクエストを送る方法は以下のとおりです:

  1. cURLコマンドを使う:

    curl -X POST -H "Content-Type: application/json" -d '{"prompt": "Hello, how are you?", "max_tokens": 50}' http://localhost:8080/v1/chat/completions
    

    これはローカルホストのポート8080で実行されているチャット補完エンドポイントにPOSTリクエストを送ります。

  2. OpenAIクライアントを使う:

    import openai
    
    openai.api_base = "http://localhost:8080/v1"
    openai.Model.list()
    
    response = openai.ChatCompletion.create(
        model="chat-gpt-3.5",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Hello, how are you?"}
        ]
    )
    
    print(response.choices[0].message.content)
    

    これはOpenAIクライアントを使ってLLAMA-CPPサーバーと対話し、OpenAI APIと互換性のあるリクエストを行います。

  3. Pythonのrequestsパッケージを使う:

    import requests
    
    url = "http://localhost:8080/v1/chat/completions"
    headers = {"Content-Type": "application/json"}
    data = {
        "prompt": "Hello, how are you?",
        "max_tokens": 50
    }
    
    response = requests.post(url, headers=headers, json=data)
    print(response.json())
    

    これはPythonのrequestsパッケージを使ってチャット補完エンドポイントにPOSTリクエストを送ります。

これらの例では、LLAMA-CPPサーバーがローカルホストのポート8080で指定したモデルを提供しています。必要に応じて、サーバーの設定(ホストアドレス、ポート、モデルなど)をカスタマイズできます。

LLAMA-CPPサーバーのカスタマイズ

LLAMA-CPPは、LLMデプロイメントの動作を細かく調整できる柔軟なサーバーを提供します。以下は主な設定オプションです:

  1. 最大コンテキストウィンドウ: LLMの最大コンテキストウィンドウサイズを定義できます。これにより、モデルが処理できる入力シーケンスの最大長を決めることができます。

  2. バッチサイズ: LLAMA-CPPはプロンプトのバッチ処理をサポートし、スループットの向上を可能にします。バッチサイズを設定して、パフォーマンスを最適化できます。

  3. ホストアドレス: デフォルトではlocalhostでリッスンしますが、ネットワーク上の他のマシンからアクセスできるようにホストアドレスを変更できます。

  4. ポート: デフォルトのポートは8080ですが、必要に応じて変更できます。

  5. モデルパス: LLAMA-CPPでは、LLMモデルファイルの読み込み元のパスをカスタマイズできます。これにより、モデルアセットの管理方法に柔軟性が生まれます。

  6. 埋め込みモデル: 言語モデルに加えて、LLAMA-CPPは埋め込みモデルも提供できます。これにより、テキスト生成とテキストエンコーディングの両方の機能をアプリケーションに統合できます。

  7. メトリクストラッキング: LLAMA-CPPサーバーはリクエストの待ち時間やスループットなどのメトリクスを追跡できます。これにより、デプロイメントのパフォーマンスを監視および最適化できます。

これらのカスタマイズオプションを活用することで、プロダクション環境や開発/実験用途に合わせてLLAMA-CPPサーバーを最適化できます。

さまざまな方法でLLAMA-CPPサーバーと対話する

LLAMA-CPPサーバーと対話するには、以下の方法があります:

  1. cURLコマンドを使う:

    • localhostで実行されているチャット補完エンドポイントにPOSTリクエストを送ります。
    • 必要なヘッダーとプロンプトおよび生成するトークン数を含むデータオブジェクトを提供します。
    • レスポンスには生成されたテキストのほか、温度、top-P、top-K、予測トークン/秒などの生成プロセスに関する情報が含まれます。
  2. OpenAIクライアントを使う:

    • ベースURLをローカルのLLAMA-CPPサーバーのURLに設定してOpenAIクライアントを作成します。
    • チャット補完エンドポイントクライアントを使い、モデル名(例: chat-gpt-3.5)を指定します。
    • システムプロンプトとユーザープロンプトを設定し、サーバーにリクエストを送ります。
    • レスポンスはOpenAI APIと同じ形式で返されます。
  3. Requestsパッケージ(Python)を使う:

    • POSTリクエストのURLとヘッダーを定義します。
    • 複数のメッセージをサーバーに渡し、リクエストが並行処理されるのを確認します。
    • サーバーはリクエストをキューに入れ、一度に1つずつ処理します。これにより、サーバーがオーバーロードされることはありません。

これらの方法を使って、LLAMA-CPPサーバーと対話し、単一のLLMと単一のGPUで複数のユーザーにサービスを提供できます。サーバーは柔軟でカスタマイズ可能なため、ニーズに合わせて様々なパラメーターを調整できます。

結論

このビデオでは、オープンソースの大規模言語モデルを提供するための強力なオープンソースプロジェクトであるLlamaCPPについて学びました。ローカルマシンへのLlamaCPPのインストール、サーバーの起動、cURL、OpenAIクライアント、Pythonのrequestsパッケージを使ったサーバーとの対話方法について説明しました。

また、最大コンテキストウィンドウ、バッチサイズ、ホストアドレスなど、LlamaCPPの様々な設定オプションについても紹介しました。さらに、メトリクストラッキング機能により、LlamaCPPがプロダクション環境に適していることも説明しました。

最後に、LlamaCPPの実用的な用途、特にRasaフレームワークとの関連性について触れ、関連するコースへのリンクも提供しました。

全体として、このビデオはLlamaCPPとその機能の包括的な概要を提供し、ローカルマシンやプロダクション環境でオープンソースの大規模言語モデルを提供する方法を習得するのに役立つはずです。

FAQ