Tabbyで内製「GitHub Copilot」を構築:万全のセキュリティと圧倒的なスピード

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

AI利用時のソースコード流出への懸念

エンタープライズプロジェクトにおいて、最も難しいのは生産性とセキュリティのバランスです。開発者は皆、GitHub Copilotのパワーを求めていますが、機密性の高いソースコードがクラウドにアップロードされることを懸念し、上層部からNGが出ることも少なくありません。実際、重大なデータ流出事故を受けて、多くの大企業がサードパーティ製AIの利用を禁止しています。

様々な手法を検討した結果、私はTabbyを解決策として選びました。これは独自のインフラ上で完全にホストできるオープンソースのAIアシスタントです。コード補完のロジックはすべて内部サーバー内で完結します。私のチームでの実戦投入では、適切に構成すれば遅延もほとんどなく、非常に快適なレスポンスが得られました。

Dockerを使って5分で起動

素早く試すには、CPUを使用してTabbyインスタンスを立ち上げることができます。Dockerがインストールされていることを確認し、以下のコマンドを実行してください。

docker run -it \
  -p 8080:8080 \
  -v $HOME/.tabby:/data \
  tabbyml/tabby serve --model TabbyML/StarCoder-1B --device cpu

モデルのダウンロードに数分かかります。ターミナルに完了のメッセージが表示されたら、http://localhost:8080 にアクセスして管理者アカウントを設定します。これで、自分専用のAIサーバーの準備は完了です。

なぜTabbyは競合よりも優れているのか?

「なぜOllamaや他のMCPサーバーを使わないのか?」という疑問もあるでしょう。日々のコーディング作業において Tabbyが優れている理由は主に3つあります。

  • チーム向け設計: Tabbyは標準的なクライアント・サーバー構成を採用しています。強力なサーバーが1台あれば、20〜30人の開発者が同時に利用してもボトルネックになりません。
  • プロジェクトの理解力 (Indexing): 単にコードを推論するだけではありません。Tabbyはコードベース全体をスキャンし、チーム独自のコーディングスタイルや内部ライブラリを学習できます。
  • プロフェッショナルなダッシュボード: 複雑な設定ファイルをいじらなくても、Web UI上でトークンの管理、ログの監視、モデルの変更が簡単に行えます。

本番環境向けの最適化 (GPUの活用)

CPUでの動作はあくまで体験用です。実務で使うなら、レイテンシを200ms以下に抑えるためにNVIDIAのGPU(最低でもRTX 3060)が必要です。コード補完に2秒も待たされるのは非常にストレスですから。

ステップ1:NVIDIA Container Toolkitの有効化

Dockerがグラフィックボードのパワーを借りるには、このツールキットが必要です。Ubuntuの場合は、以下のコマンドを実行します。

# リポジトリの追加とクイックインストール
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

ステップ2:より高性能なモデルの実行

少し物足りない1B(10億パラメータ)版の代わりに、**Deepseek-Coder-6.7B**をお勧めします。これは非常にスマートで、複雑なロジックも理解できるモデルです。

docker run -it \
  --gpus all \
  -p 8080:8080 \
  -v $HOME/.tabby:/data \
  tabbyml/tabby serve --model TabbyML/DeepseekCoder-6.7B --device cuda

VS CodeおよびJetBrainsとの連携

サーバーが起動したら、次は開発環境に組み込みます。手順は非常にシンプルです。

  1. 拡張機能で「Tabby」を検索してインストールします。
  2. Ctrl+Shift+P を押し、「Tabby: Settings」と入力します。
  3. サーバーのURLを入力します(例:http://192.168.1.50:8080)。
  4. Webダッシュボードから API Token をコピーし、IDEに貼り付けて認証します。

データ処理関数などを入力してみてください。薄いグレーでコードの提案が表示されます。Tab キーを押すだけで、まるで誰かが代わりに書いてくれているかのように自動で補完されます。

非常に価値のある機能:自動インデックス (Indexing)

これが私の一番のお気に入りです。Tabbyは、あなたがどのようなフォルダ構成を使っているか、あるいはプロジェクト内のどのファイルから関数を呼び出しているかを把握します。有効にするには、config.toml ファイルを開いてリポジトリを指定します。

[repositories.my-backend]
git_url = "https://github.com/your-org/core-api.git"

インデックスが完了すると、AIはチームの規約に基づいたパターンで優先的にコードを提案してくれるようになります。

トラブルを避けるための実戦的なアドバイス

数ヶ月の運用を経て、3つの重要な注意点に気づきました。

  • ネットワーク遅延: VPN経由でリモートワークをする場合、レイテンシが高いとスムーズさが失われます。サーバーはできるだけ作業場所に近い場所に設置しましょう。
  • VRAMは生命線: 7Bモデルには約14GBのVRAMが必要です。カードが8GBしかない場合は、より安定して動作させるためにQuantized(量子化)版を探してみてください。
  • 情報セキュリティ: ポート8080をインターネットに公開するのは絶対にやめましょう。TailscaleやCloudflare Tunnelを使用して、チーム用の安全な専用経路を作成してください。

Tabbyのセルフホストは単なるセキュリティ対策だけでなく、支援ツールを完全にコントロールするための手段でもあります。セットアップの成功を祈っています。もしGPUの設定でエラーが出たら、コメント欄で教えてください。サポートします!

Share: