2
2

More than 1 year has passed since last update.

ローカルで動くコーディング補助ツールTabbyを試してみる

Last updated at Posted at 2023-04-12

ローカルで動作するコーディング補助ツールとして新たにTabbyというツールがリリースされました。

Github Copilotと違いローカルで完結するためセキュリティが厳しい環境でも使えるのが良さそうです。
いい感じの性能なら今後使っていきたいと思ったので試してみました。

今回使用した環境は以下のとおりです。

項目 内容
OS Ubuntu 20.04
GPU NVIDIA RTX3080(16GB)

0. Docker環境の構築

すでにDocker環境を構築している人は読み飛ばしてください。

DockerとNVIDIA CONTAINER TOOLKITのインストールは以下を参考に行いました。

Dockerのインストール
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
sudo apt install docker-ce
NVIDIA CONTAINER TOOLKITのインストール
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

1. Tabbyの起動

Tabbyの起動はリポジトリをcloneしてREADMEにのっている手順通り行いました。

Tabbyのリポジトリのclone
git clone https://github.com/TabbyML/tabby.git

初回起動はデータのダウンロード等が30GBほどありそこそこ時間がかかります。

Tabbyの起動
cd tabby
mkdir -p data/hf_cache && chown -R 1000 data

sudo docker run \
  --gpus all \
  -it --rm \
  -v "/$(pwd)/data:/data" \
  -v "/$(pwd)/data/hf_cache:/home/app/.cache/huggingface" \
  -p 5000:5000 \
  -e MODEL_NAME=TabbyML/J-350M \
  -e MODEL_BACKEND=triton \
  --name=tabby \
  tabbyml/tabby

"INFO: Application startup complete." というログがでたら起動完了です。

2. 動作確認

起動後localhost:5000/_adminにアクセスするとTabbyのデモを使用することができます。

とりあえず素数判定のコードでも書いてもらおうと思ったところよく分からない文字列しかでませんでした…。
Screenshot from 2023-04-12 20-02-46.png
デモ用に用意されていたコードなども試したのですが、謎の文字列がでる現象が続きます。

Tabbyのhuggingfaceのページを見てみると TabbyML/NeoX-1.3B というサイズのでかいモデルがあったのでそちらを試してみます。

TabbyML/NeoX-1.3B用の起動コマンド
sudo docker run \
  --gpus all \
  -it --rm \
  -v "/$(pwd)/data:/data" \
  -v "/$(pwd)/data/hf_cache:/home/app/.cache/huggingface" \
  -p 5000:5000 \
  -e MODEL_NAME=TabbyML/NeoX-1.3B \
  -e MODEL_BACKEND=triton \
  --name=tabby \
  tabbyml/tabby

もう一度素数判定のコードを試してみたところ…
Screenshot from 2023-04-12 20-10-53.png
確かにコードはでた。ただプログラミングを初めて3日目ぐらいのレベルの素数判定のコードが出ただけだ…。
@fujitanozomu さんから指摘があったように初心者どころのレベルではなく素数が理解できていません。
これはまだ実用段階ではなさそうな感じですね。

ちなみにGPUの使用量を確認したところ最大でも3.5GBほどしかVRAMを使用しておらず意外と軽そうです。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 520.61.05    Driver Version: 520.61.05    CUDA Version: 11.8     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0  On |                  N/A |
| N/A   60C    P8    19W /  N/A |   3588MiB / 16384MiB |     14%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

3. VsCode拡張機能の使用

デモを動かした感じ現段階で使えるレベルではありませんでしたが、VsCodeの拡張機能も配布されているのでそちらも試してみました。

VsCodeの拡張機能検索でTabbyと検索すると拡張機能が見つかるのでこれをインストールします。
Screenshot from 2023-04-12 20-15-09.png

あとはDockerを起動させながらコードを書いてみると先程のデモと同じようにコード補完機能が動きます。
Screenshot from 2023-04-12 20-17-01.png

最後に

現段階ではまだ実用的なレベルではありませんが今後が楽しみです。
もう少しでかいサイズのモデルなどが発表されたら性能が良くなりそうなのでそこに期待ですね。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2