ローカルで動作するコーディング補助ツールとして新たにTabbyというツールがリリースされました。
Github Copilotと違いローカルで完結するためセキュリティが厳しい環境でも使えるのが良さそうです。
いい感じの性能なら今後使っていきたいと思ったので試してみました。
今回使用した環境は以下のとおりです。
項目 | 内容 |
---|---|
OS | Ubuntu 20.04 |
GPU | NVIDIA RTX3080(16GB) |
0. Docker環境の構築
すでにDocker環境を構築している人は読み飛ばしてください。
DockerとNVIDIA CONTAINER TOOLKITのインストールは以下を参考に行いました。
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
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にのっている手順通り行いました。
git clone https://github.com/TabbyML/tabby.git
初回起動はデータのダウンロード等が30GBほどありそこそこ時間がかかります。
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のデモを使用することができます。
とりあえず素数判定のコードでも書いてもらおうと思ったところよく分からない文字列しかでませんでした…。
デモ用に用意されていたコードなども試したのですが、謎の文字列がでる現象が続きます。
Tabbyのhuggingfaceのページを見てみると 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
もう一度素数判定のコードを試してみたところ…
確かにコードはでた。ただプログラミングを初めて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と検索すると拡張機能が見つかるのでこれをインストールします。
あとはDockerを起動させながらコードを書いてみると先程のデモと同じようにコード補完機能が動きます。
最後に
現段階ではまだ実用的なレベルではありませんが今後が楽しみです。
もう少しでかいサイズのモデルなどが発表されたら性能が良くなりそうなのでそこに期待ですね。