【TabbyAPI】ExLlamaV2バックエンドOpenAI互換APIサーバー構築ガイド

TabbyAPIとは?ExLlamaV2の公式APIサーバー

TabbyAPIは、高速なローカルLLM推論ライブラリであるExLlamaV2の公式バックエンドAPIサーバーです。OpenAI APIと互換性のあるエンドポイントを提供し、SillyTavernなどのチャットフロントエンドや、自作のアプリケーションからローカルで動作する大規模言語モデルを簡単に利用できるようにします。軽量で高速な設計が特徴で、EXL2、GPTQ、FP16形式のモデルをサポートしています。

結論:TabbyAPIで実現できること

TabbyAPIをセットアップすることで、以下のことが可能になります:

  • OpenAI API互換のエンドポイントをローカル環境に構築
  • ExLlamaV2/ExLlamaV3バックエンドによる高速な推論
  • SillyTavern、Oobabooga’s Text Generation WebUIなどとのシームレスな連携
  • EXL2(量子化)、GPTQ、FP16形式のモデル実行
  • Hugging Faceからのモデル自動ダウンロード機能

TabbyAPIのインストール手順

前提条件と環境準備

TabbyAPIを実行するには、以下の環境が必要です:

  • NVIDIA GPU(CUDA対応)
  • Python 3.10以上
  • 十分なVRAM(モデルサイズに依存)

基本的なインストール方法

公式の推奨方法に従ってインストールします:

# リポジトリのクローン
git clone https://github.com/theroyallab/tabbyAPI.git
cd tabbyAPI

# 依存関係のインストール
pip install -r requirements.txt

重要:カスタム版のExllamav2 wheelをインストールしている場合、更新時にはpip install .を使用してください。そうしないと、更新のたびにカスタムexllamav2バージョンが上書きされてしまいます。TabbyAPIは互換性のために最新のExllamav2バージョンを強制します。

設定ファイルの構成

config.ymlの基本設定

TabbyAPIの設定はconfig.ymlファイルで行います。以下の例は基本的な設定です:

# TabbyAPI 基本設定例
host: "0.0.0.0"
port: 5000

model:
  # モデルパス(Hugging FaceのモデルIDまたはローカルパス)
  path: "TheBloke/Mixtral-8x7B-Instruct-v0.1-EXL2"
  
  # モデル形式(exl2, gptq, fp16)
  format: "exl2"
  
  # GPUメモリ設定
  gpu_split: "auto"
  
  # コンテキスト長
  max_seq_len: 4096

# OpenAI互換API設定
oai_compatible: true

EXL2モデルの配置

EXL2形式のモデルを使用する場合、以下のいずれかの方法で配置します:

  • Hugging FaceのモデルIDを直接指定(自動ダウンロード)
  • ローカルディレクトリにダウンロードしたモデルをパス指定

EXL2モデルは通常、複数のファイル(.safetensors, .jsonなど)で構成されています。TabbyAPIはこれらのファイルを自動的に認識します。

TabbyAPIの起動と動作確認

サーバーの起動

設定ファイルを準備したら、以下のコマンドでサーバーを起動します:

# 基本的な起動
python -m tabbyapi

# 特定の設定ファイルを指定して起動
python -m tabbyapi --config path/to/your/config.yml

動作確認

サーバーが正常に起動したら、以下の方法で動作を確認できます:

# APIエンドポイントの確認
curl http://localhost:5000/v1/models

# 簡単な推論テスト
curl -X POST http://localhost:5000/v1/completions 
  -H "Content-Type: application/json" 
  -d '{
    "model": "your-model-name",
    "prompt": "Hello, how are you?",
    "max_tokens": 50
  }'

SillyTavernとの連携設定

TabbyAPIをSillyTavernと連携させるには、以下の手順を行います:

  1. SillyTavernを起動し、API接続設定を開く
  2. 接続タイプで「TabbyAPI」を選択
  3. サーバーアドレスにhttp://localhost:5000(またはTabbyAPIを起動したアドレス)を入力
  4. モデル名を設定(config.ymlで指定したモデル名)
  5. 「Connect」ボタンをクリックして接続を確立

よくあるトラブルと対処法

CUDA/VRAM関連のエラー

問題:「CUDA out of memory」エラーが発生する
解決策:

  • config.ymlgpu_split設定を調整する
  • より小さいモデルを使用する
  • 量子化ビット数を下げたEXL2モデルを選択する
  • コンテキスト長(max_seq_len)を減らす

モデル読み込みエラー

問題:モデルが正しく読み込まれない
解決策:

  • モデルパスが正しいか確認する
  • モデル形式(exl2, gptq, fp16)が正しく指定されているか確認
  • 必要なモデルファイルがすべて存在するか確認
  • Hugging Faceからモデルをダウンロードする場合はインターネット接続を確認

API接続エラー

問題:SillyTavernなどから接続できない
解決策:

  • TabbyAPIサーバーが起動しているか確認
  • ファイアウォール設定でポート(デフォルト5000)が開放されているか確認
  • host設定が0.0.0.0(すべての接続を許可)になっているか確認
  • 同じマシンで動作している場合はlocalhostまたは127.0.0.1を使用

高度な設定とカスタマイズ

複数モデルの管理

TabbyAPIでは、複数のモデルを設定ファイルで定義し、実行時に切り替えることができます:

models:
  - name: "mixtral-8x7b"
    path: "TheBloke/Mixtral-8x7B-Instruct-v0.1-EXL2"
    format: "exl2"
    
  - name: "llama2-7b"
    path: "./models/llama-2-7b-chat-EXL2"
    format: "exl2"

パフォーマンス最適化

推論速度を向上させるための設定:

model:
  # GPUメモリの分割設定
  gpu_split: [20, 20]  # 複数GPUの場合の割合
  
  # キャッシュサイズの設定
  cache_size: 2048
  
  # バッチ処理の設定
  max_batch_size: 8
  
  # コンテキスト長の設定
  max_seq_len: 8192  # モデルとVRAMに応じて調整

参考元

  • GitHub – theroyallab/tabbyAPI: The official API server for Exllama. OAI compatible, lightweight, and fast. – https://github.com/theroyallab/tabbyAPI
  • 01. Getting Started · theroyallab/tabbyAPI Wiki · GitHub – https://github.com/theroyallab/tabbyAPI/wiki/01.-Getting-Started
  • TabbyAPI – https://theroyallab.github.io/tabbyAPI/
  • TabbyAPI | docs.ST.app – https://docs.sillytavern.app/usage/api-connections/tabbyapi/
  • GitHub – turboderp-org/exllamav2: A fast inference library for running LLMs locally on modern consumer-class GPUs – https://github.com/turboderp-org/exllamav2

🔧 おすすめの開発環境

本記事の手順を快適に進めるための推奨スペック:

🔧 快適な開発環境のために

本記事の手順をスムーズに進めるために、以下のスペックを推奨します。

この記事は役に立ちましたか?