🔍

GPUStack:オープンソースGPUクラスターマネージャーの完全ガイド

に公開

はじめに

人工知能(AI)と機械学習(ML)の急速な発展に伴い、大規模言語モデル(LLM)の需要が高まっています。しかし、これらのモデルを効率的に実行し管理することは、多くの組織にとって課題となっています。ここで登場するのが、GPUStackです。

GPUStackとは?

GPUStackは、大規模言語モデル(LLM)を実行するためのオープンソースGPUクラスターマネージャーです。複数のGPUを効率的に管理し、LLMの実行を最適化することで、AIプロジェクトの生産性を大幅に向上させることができます。

この図は、GPUStackの主な機能と、それらがどのように相互に関連しているかを視覚的に示しています。

主な特徴

GPUStackには、以下のような優れた特徴があります:

  1. 多様なハードウェアサポート: Apple MacBook、Windows PC、Linuxサーバーなど、様々な種類のGPUで動作します。

  2. スケーラビリティ: GPUやノードを簡単に追加して、処理能力を拡張できます。

  3. 軽量なPythonパッケージ: 最小限の依存関係で、運用のオーバーヘッドを抑えています。

  4. OpenAI互換API: OpenAIの標準に準拠したAPIを提供します。

  5. ユーザーとAPIキー管理: ユーザーとAPIキーの管理を簡素化します。

  6. GPUメトリクスモニタリング: GPUのパフォーマンスと使用率をリアルタイムで監視できます。

  7. トークン使用量とレート制限: トークンの使用量を追跡し、レート制限を効果的に管理します。

この図は、GPUStackの主な特徴を視覚的にまとめたものです。各特徴がGPUStackの中心にどのように関連しているかを示しています。

インストール方法

GPUStackのインストール方法は、使用するオペレーティングシステムによって異なります。ここでは、主要なOSごとのインストール手順を説明します。

Linux / macOS

LinuxやmacOSでは、以下のコマンドを使用してGPUStackをサービスとしてインストールできます:

curl -sfL https://get.gpustack.ai | sh -s -

Windows

Windowsでは、管理者権限でPowerShellを実行し、以下のコマンドを入力します:

Invoke-Expression (Invoke-WebRequest -Uri "https://get.gpustack.ai" -UseBasicParsing).Content

クラスターへのワーカー追加

他のノードをGPUStackクラスターに追加する場合は、以下のコマンドを使用します(http://myservermytokenを実際のサーバーURLとトークンに置き換えてください):

Linux / macOS

curl -sfL https://get.gpustack.ai | sh -s - --server-url http://myserver --token mytoken

Windows

Invoke-Expression "& { $((Invoke-WebRequest -Uri 'https://get.gpustack.ai' -UseBasicParsing).Content) } -server-url http://myserver -token mytoken"

この図は、GPUStackのインストールプロセスを視覚的に表現しています。OSの選択から始まり、インストールの各ステップを経て、最終的にクラスターへのワーカー追加オプションまでを示しています。

使い始める

GPUStackをインストールしたら、以下の手順で使い始めることができます:

  1. モデルとのチャット:
    コマンドラインから直接LLMとチャットできます。

    gpustack chat llama3 "私にジョークを教えて。"
    
  2. WebUI へのアクセス:
    ブラウザで http://myserver を開き、GPUStack UIにアクセスします。

  3. ログイン:
    ユーザー名 admin とデフォルトパスワードでログインします。パスワードは以下のコマンドで確認できます:

    Linux / macOS:

    cat /var/lib/gpustack/initial_admin_password
    

    Windows:

    Get-Content -Path "$env:APPDATA\gpustack\initial_admin_password" -Raw
    
  4. プレイグラウンドの利用:
    UIの「Playground」メニューから、LLMとチャットできます。

  5. API キーの作成:
    「API Keys」メニューから新しいAPIキーを作成し、安全に保管します。

  6. API の利用:
    作成したAPIキーを使用して、OpenAI互換APIにアクセスできます。

この図は、ユーザーがGPUStackを使用する際の一般的な流れを示しています。コマンドラインインターフェース(CLI)、WebUI、LLM、APIとの相互作用が視覚化されています。

対応プラットフォームとアクセラレーター

GPUStackは、以下のプラットフォームとアクセラレーターをサポートしています:

対応プラットフォーム

  • macOS
  • Linux
  • Windows

対応アクセラレーター

  • Apple Metal
  • NVIDIA CUDA

将来のリリースでは、以下のアクセラレーターのサポートも計画されています:

  • AMD ROCm
  • Intel oneAPI
  • Qualcomm AI Engine

この図は、GPUStackが現在サポートしているプラットフォームとアクセラレーター、および将来サポート予定のものを視覚的に示しています。

サポートされているモデル

GPUStackは、llama.cppをバックエンドとして使用し、GGUF形式の大規模言語モデルをサポートしています。以下のソースからのモデルが利用可能です:

  1. Hugging Face
  2. Ollama Library

サポートされている主なモデルには以下があります:

  • LLaMA
  • Mistral 7B
  • Mixtral MoE
  • DBRX
  • Falcon
  • Baichuan
  • Aquila
  • Yi
  • StableLM
  • Deepseek
  • Qwen
  • Phi
  • Gemma
  • Mamba
  • Grok-1

この図は、GPUStackがサポートする主要なモデルを視覚的にまとめたものです。モデルの提供元やタイプに基づいて分類されています。

OpenAI互換API

GPUStackは、OpenAIと互換性のあるAPIを提供しています。これらのAPIは /v1-openai パスの下で提供され、以下の機能をサポートしています:

  1. モデルのリスト取得
  2. チャット完了(Chat completions)

例えば、公式のOpenAI Python APIライブラリを使用して、以下のようにAPIを利用できます:

from openai import OpenAI
client = OpenAI(base_url="http://myserver/v1-openai", api_key="myapikey")

completion = client.chat.completions.create(
  model="llama3",
  messages=[
    {"role": "system", "content": "あなたは親切なアシスタントです。"},
    {"role": "user", "content": "こんにちは!"}
  ]
)

print(completion.choices[0].message)

このAPIの互換性により、既存のOpenAIベースのアプリケーションを簡単にGPUStackに移行できます。

この図は、アプリケーションがGPUStackのOpenAI互換APIを使用してLLMと対話する流れを示しています。GPUStackがOpenAIのインターフェースを模倣しつつ、内部で実際のLLM処理を行う様子が表現されています。

まとめ

GPUStackは、大規模言語モデル(LLM)の実行と管理を簡素化する強力なツールです。その主な利点は以下の通りです:

  1. 柔軟性: 様々なハードウェアとプラットフォームに対応
  2. スケーラビリティ: 需要に応じてGPUリソースを簡単に拡張可能
  3. 使いやすさ: 直感的なUIとOpenAI互換APIにより、導入と使用が容易
  4. 効率性: GPUリソースの最適化とモニタリング機能により、コスト効率が向上
  5. オープンソース: コミュニティによる継続的な改善と拡張が可能

GPUStackを使用することで、組織はAIプロジェクトの開発と展開を加速し、GPUリソースを最大限に活用することができます。

この図は、GPUStackの主要な利点とそれらがもたらす具体的な価値を視覚的に示しています。

参考サイト

https://github.com/Sunwood-ai-labs/gpustack/blob/main/README.md

Discussion