はじめに
GitHub CopilotのOSSクローンFauxPilotを試してみます. WindowsのWSLにインストールしてみます.
必要なコンポーネント
- Docker
- Docker Compose >= 1.28
- NVIDIAのGPU
- 2GB, 7GB, 13GB, 32GBのモデルがあり, それぞれのサイズ分のGPUメモリが必要
- nvidia-docker
- curl
- zstd
セットアップ
WSLはインストール済みとします. 私はDebian 11を使っています.
次のコンポーネントインストールそれぞれは, 公式の手順で大丈夫だと思います.
CUDA Toolkit
CUDAのドライバが必要なので, Windows側でツールキットをインストールします.
CUDA Toolkit
Docker
apt経由だと古いバージョンなので, 本家からパッケージをインストールします.
Docker - Install Docker Engine on Debian
NVIDIA Container Toolkit
nvidia-docker
をインストールします.
このNVIDIAの拡張をインストールしないとGPUが見つけられず立ち上がりません.
NVIDIA Container Toolkit - Installation Guide
Faux Pilot
ツール類をインストールして,
$ sudo apt install -y git curl zstd
FauxPilotをインストールします.
$ git clone https://github.com/fauxpilot/fauxpilot.git
$ cd fauxpilot
$ ./setup.sh
モデル選択以外はエンター連打でいいと思います.
setup.sh
Checking for curl ...
/usr/bin/curl
Checking for zstd ...
/usr/bin/zstd
Checking for docker ...
/usr/bin/docker
Enter number of GPUs [1]: 1
External port for the API [5000]:
Address for Triton [triton]:
Port of Triton host [8001]:
Where do you want to save your models [/home/taqu/fauxpilot/models]?
Choose your backend:
[1] FasterTransformer backend (faster, but limited models)
[2] Python backend (slower, but more models, and allows loading with int8)
Enter your choice [1]: 1
Models available:
[1] codegen-350M-mono (2GB total VRAM required; Python-only)
[2] codegen-350M-multi (2GB total VRAM required; multi-language)
[3] codegen-2B-mono (7GB total VRAM required; Python-only)
[4] codegen-2B-multi (7GB total VRAM required; multi-language)
[5] codegen-6B-mono (13GB total VRAM required; Python-only)
[6] codegen-6B-multi (13GB total VRAM required; multi-language)
[7] codegen-16B-mono (32GB total VRAM required; Python-only)
[8] codegen-16B-multi (32GB total VRAM required; multi-language)
Enter your choice [6]: 4
$ sudo bash ./launch.sh
成功すると, http://localhost:5000
にサンプルページが表示されるはずです.
Visual Studio Code Plugin
VSCode用のプラグインが公開されているので, Copilotのプラグインを流用するよりいいでしょう (Fauxpilot).
まとめ
よくインフェランスに時間がかかってサーバからの応答がなくなるので, つよつよサーバが必要だと思います. 問い合わせ頻度も設定する必要があると思います.
補完それ自体は, 逐一本質でないコメントを書くのが面倒くさいです. 頭でロジックを考えながら, 同時にインターフェイスを書いていく人間には煩わしいだけなのかなと思いました. リファクタリング提案や, よりよいフォーマッタやリンタになったらいいなと思います.