FlexGenでおうちのパソコンとお話する

前のエントリでFlexGenも話題に出したので、メモを。
画像は、なんかStable DiffusionにFlexGenって入れていろいろやってたらかっこいいのが出たやつ。
おうちの8GB VRAM GPUでChatRWKVと会話する - きしだのHatena

FlexGenは、おうちでChat AIが動かせるぞって最初に話題になったやつですね。
https://github.com/FMInference/FlexGen

インストールは書いてあるとおりにやればいいと思うのだけど、いろいろハマりました。個人的に。
Python 3.10以前じゃないと動かないのだけど、インストールしてたのがPython 3.11で、以前いれてたPythonが散乱してたりしてハマり。普通の人はハマらない気がする。

なので、PyTorchも入れなおし。

> py -3.10 -m pip install -I torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

なんも考えなければpipでいけるぽい。

> pip install flexgen

でもまあgit cloneするやつにした。pyでバージョン指定している。

> git clone https://github.com/FMInference/FlexGen.git
> cd FlexGen
> py -3.10 -m pip install -e .

あとはflex_optで実行確認、ということなんだけど、このときhuggingfaceからモデルをダウンロードする。そしてこのモデルが~/.cache/huggingfaceになるのだけど、Cドライブに空きがないので別ドライブにしたい。

みんなcolabとかに入れてるから気にしないかもしれないんだけど、気にするのよ。
ということで、環境変数HF_HOMEにパスを設定すればいいという情報をChatGPTに教えてもらったので、設定する。

気をとりなおして、確認

> py -3.10 -m flexgen.flex_opt --model facebook/opt-1.3b

エラーがなければOK

VRAMが7GBちょい、GPUの共有メモリも使ってます。メインRAMも結構使ってますね。

それではチャットを。。。と動かそうすると、chatbot.pyを動かすという説明がいろいろ出てくるのだけど、いまはリポジトリから消えてます。
履歴をたどると2月の終わりのDelete Filesというコミットがあってそのときに消えてるので、発掘しておきます。
https://github.com/FMInference/FlexGen/blob/9d888e5e3e6d78d6d4e1fdda7c8af508b889aeae/flexgen/apps/chatbot.py

動かしてみます。

>py -3.10 -m flexgen.apps.chatbot --model facebook/opt-1.3b

ちゃんと動きますね。
日本語は通るように見えるんだけどわかってないっぽい。
英語にすると会話できるんだけど「世界をおみせしますよ。そこには浅い湖があります。」「虎がいます。泳げます」みたいな感じで、バカっぽくてよい。

モデルは1.3bの他に6.7bとか30bがあるので試してみます。
と思ったけど、メモリが足りなくてだめでしたね。
--compress-weightをつけます。

>py -3.10 -m flexgen.apps.chatbot --model facebook/opt-6.7b --compress-weight

動くけど、反応に30-40秒くらいかかりますね。そして、言葉すくなめな気がする。あまり会話ははずみませんね。なんか、バカな話をしたいのにマジメな質問をされて適当に答えている、という感じがw

VRAMは4.7GB使ってます。プロセッサもGPUもあまり使ってないので、何してるんだろう。

まあ、なんだか動いたので満足です。

だいたいtransformersライブラリを使っているので、このあたりを読んでおくのがいいのかなー