💬

自宅で動くChatGPTず噂のFlexGenをDockerで手軜に動かす

に公開
2023/03/30

自宅で動くChatGPTず噂のFlexGenを詊す

shi3zさんが興奮しお動かしおいたFlexGen

https://www.youtube.com/watch?v=QMWrMuXw5ds

関係する蚘事は以䞋
https://www.businessinsider.jp/post-265982

ツペツペGPUが無いず動かないず思っおいたのですが、タむムラむンでミクミンPさんが、RTX3060でFlexGenを動かしおいるツむヌトを発芋。

https://twitter.com/ksasao/status/1628001583689760769

「RTX3060なら自分も持っおいる」ずいうこずで、詊しおみるこずにしたした。

远蚘

私がこの蚘事で動かしおいるのは小さいモデルです。ずりあえずお詊しで動かしただけで、shi3zさんが動かしおいるモデルずは異なりたす。

性胜の参考にする蚘事ではないので、ご承知ください。より倧きいサむズのモデルの䜿甚に関しおは、FlexGenの公匏リポゞトリを参照ください。私も今埌詊したら远蚘しおいきたす珟状、私の環境では動かせおないです。

FlexGenをDockerで動かす

結果的には、Dockerを䜿うこずで簡単に動かせたした。

Dockerセットアップ

䜿甚しおいるPCのスペックは以䞋です。

項目 内容
CPU Intel Core i 7
メモリ 32GB
GPU NVIDIA RTX3060(12GB)

OSはLinuxでもWindowsのWSL2でも動きたした。倚分WindowsのWSL2でも同じ芁領で動くず思いたす。私は詊しおいたせんが、動䜜䟋を参考リンクにのせたので興味ある方はそちらを参照ください。

Linux/Windows(WSL2)のセットアップは以䞋蚘事参照ください。

https://zenn.dev/karaage0703/articles/0ca67e19aa772e

https://zenn.dev/karaage0703/articles/211d89cc0a29a1

WindowsWSL2の堎合は、以䞋蚘事を参考にメモリ、スワップをできるだけたくさん割り圓おおください。
https://zenn.dev/karaage0703/articles/d38e17bd6efbaa

Docker/NVIDIA Dockerのセットアップは以䞋蚘事を参照ください。

https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa

以降は、LinuxもWindows(WSL2)も同じ操䜜ずなりたす。

FlexGenをセットアップ

FlexGenをDockerで䜿っおみたずいう蚘事を参考にしたした。ほずんど蚘事の通りなのですが、そのたた実行するず、数GBあるモデルを毎回ダりンロヌドする必芁があったりするので、手軜に䜿う方法の手順含めおGitHubにリポゞトリずしおたずめたした。

https://github.com/karaage0703/FlexGen-docker

䜿い方は䞊蚘リポゞトリに曞いおある通りです。最初に以䞋コマンドでDockerをビルドしたす。

$ git clone https://github.com/karaage0703/FlexGen-docker
$ cd FlexGen-docker
$ docker build -t ubuntu:FlexGen .

これで準備は完了です。

FlexをDockerで動かす

FlexGen-dockerのディレクトリで以䞋コマンドを実行したす。

$ docker run -it -v $(pwd):/root --gpus all ubuntu:FlexGen

続いお、コンテナ内で以䞋コマンドを実行したす。

root@hostname:/# cd FlexGen
root@hostname:/FlexGen# python3 apps/chatbot.py --model facebook/opt-6.7b --compress-weight

初回のみ、モデルのダりンロヌドが実行されたす。モデルは、Dockerコマンドを起動した堎所FlexGen-dockerディレクトリに保存されたす。

2回目以降は、モデルがダりンロヌドされたディレクトリFlexGen-dockerディレクトリでDockerを起動すれば、初回のモデルダりンロヌドは䞍芁ずなりたす。

FlexGen実行䟋(opt-6.7b)

FlexGenず䌚話しおみた䟋です。

日本語も䜿えたすアホですが。

倧きいモデルを䜿甚する

少し倧きい opt-30b ずいうモデルを䜿甚する方法です。以䞋のコマンドを実行したす。

$ python3 -m flexgen.flex_opt --model facebook/opt-30b --percent 0 0 100 0 100 0 --compress-weight

実行するずモデルのダりンロヌドや倉換が行われたす。

--percentの埌ろの6぀の数字は、GPU/CPUの䜿甚割合を瀺しおいたす。環境に合わせお数字を倉えおください。詳しくはFlexGenの公匏リポゞトリを参照ください。よっぜど凄いGPUを䜿っおない堎合は、CPUをメむンにしたほうが良いようです。

--compress-weightはモデルの圧瞮です。よほど凄いマシンでない限りは圧瞮は必須オプションです。

モデルの準備ができたら、以䞋コマンド実行するずチャットができたす。

$ python3 apps/chatbot.py --model facebook/opt-30b --percent 0 0 100 0 100 0 --compress-weight

FlexGen実行䟋(opt-30b)

opt-30bは、返信に時間がかかる䞊に、䜕故か日本語が喋れないです。䜓感、よりアホになった気がしたすが、PCのスペックのせいだず思いたす。

たずめ

FlexGenを詊しおみたした。小さいモデルだったので結構アホですが、自宅PCでChatGPT的なAIチャットが動くのは驚きですね。

Stable Diffusionもそうですが、やはりロヌカルでも動くずいうのは「自分のものになった」ずいう劙な安心感があっお良いですね。

色々応甚できそうなので、詊しおいきたいですね。

参考リンク

https://github.com/FMInference/FlexGen

https://agirobots.com/flexgen/

https://agirobots.com/chatgpt-mechanism-and-problem/

https://note.com/tori29umai/n/n3cd8c5b32f7a

https://note.com/npaka/n/n722a4ab734f3

https://github.com/karpathy/nanoGPT

https://nikkie-ftnext.hatenablog.com/entry/first-time-revchatgpt-as-of-2023-feb

https://zenn.dev/windvoice/articles/6952bf27863893

https://zenn.dev/syoyo/articles/d0b3e64624bcc5

https://qiita.com/TakanoTaiga/items/4ec4681c822e993624db

https://agirobots.com/jetson-flexgen/

関連蚘事

https://zenn.dev/karaage0703/articles/718506a593fef0

https://zenn.dev/karaage0703/articles/d58d79d8e77ab8

倉曎履歎

  • 2023/02/28 Dockerfileアップデヌト・WSL2に関しお远蚘・opt-30bモデルに関しお远蚘
  • 2023/02/28 モデルに関する泚意事項远蚘

Discussion