ローカルでGitHub Copilotのようなコード補完ができるというtabbyを試して動かなかった件

GitHub Copilotがローカルでも動けば楽しいので、Gigazineでtabbyというのが紹介されてたので試したけど動きませんでした・・・
というか、最近はGigazineの後追い追試みたいになりがち・・・
ローカルPCでセルフホストできてGithub Copilotのように使えるコーディング補助AI「tabby」、Dockerイメージありなので早速使ってみたレビュー - GIGAZINE

毎回ちゃんと自分の環境にインストールして動かしてるのすごいなーと思います。

tabbyのリポジトリはこちら。ここにDockerのコマンドがあるので、パスを適当に修正すればOKです。
https://github.com/TabbyML/tabby

Gigazineでは触れられてないけどイメージが32GBくらいあるので注意。

起動したけど、ぜんぜん補完してくれない。

SwaggerからAPIを叩いても、メモリばっかり食ってだめですね。

あきらめて、Dockerイメージは消しました。
けど、TabbyML/J-350Mというモデルを使ってるっぽく、Hugging Faceで試すとなんとなく動いている。
https://huggingface.co/TabbyML/J-350M

で、これがSalesforce/codegen-350M-multiに由来してるって書いてあるので、Saleceforceのところに行くと動かすスクリプトがあるので試してみると動いた。
https://huggingface.co/Salesforce/codegen-350M-multi

from transformers import AutoTokenizer, AutoModelForCausalLM

# model = "Salesforce/codegen-350M-multi"
# model = "Salesforce/codegen-2B-multi"
model = "TabbyML/J-350M"

device = "cuda:0"
# device = "cpu"

tokenizer = AutoTokenizer.from_pretrained(model)
model = AutoModelForCausalLM.from_pretrained(model).to(device)

text = "def quickSort(array):\n"
input_ids = tokenizer(text, return_tensors="pt").to(device).input_ids

generated_ids = model.generate(input_ids, max_length=128)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))

けど、あまりいい感じのものが出ない・・

ただ、TabbyMLのreadme見てると必ずコメントを入れているので# sort array by Quick sortというコメントを含めるとそれっぽくなりました。

モデルはそんなにメモリも食わずに動くのに、Dockerのは何をしているんだろうか・・・

SalesforceのところにSalesforce/codegen-2B-multiというのがあるので、これだとコメントなしでもいい感じのコードが出てくれます。

ただVRAM8GBではGPUで動かなかったのでCPUで。TabbyML/NeoX-1.3Bはブラウザ落とすとGPUで動きました。6.5GBくらいGPU使う感じ。