生成系機械学習ツールtext-generation-webuiとAUTOMATIC1111
“ChatGPTとLangChainの概要及びその利用について“で述べているChatGPTや”Stable DiffusionとLoRAの活用“でも述べているStable Diffusionのような生成系のモジュールをコードレスに利用可能なオープンソースのツールとしてtext-generation-webuiとAUTOMATIC1111等がある。今回は、これらを用いたテキスト生成/画像生成のモジュールの利用法保について述べる。
まずtext-generation-webuiについて
text-generation-webui
“GPTの概要とアルゴリズム及び実装例について“で述べているGPTやLLaMAなどの言語モデルをウェブアプリ風のUIでお手軽に使えるようにしてくれるツールが「Text generation web UI」となる。これを用いることにより、新たなモデルのダウンロードや複数モデルの切り替えなども簡単にできる便利なツールとなる。
以下、公式HPから
「LLaMA、llama.cpp、GPT-J、Pythia、OPT、GALACTICAなどの大規模言語モデルを実行するためのgradioウェブUI。テキスト生成のAUTOMATIC1111/stable-diffusion-webuiになることを目標としています。」
特徴
- 3つのインターフェースモード:デフォルト、ノートブック、チャット
- 複数のモデルバックエンド:tranformers、llama.cpp、AutoGPTQ、GPTQ-for-LaMa、ExLlama、RWKV、FlexGen
- ドロップダウンメニューで異なるモデルを素早く切り替え
- LoRA:LoRAをオンザフライでロード/アンロード、複数のLoRAを同時にロード、新しいLoRAをトレーニング
- Alpaca、Vicuna、Open Assistant、Dolly、Koala、ChatGLM、MOSS、RWKV-Raven、Galactica、StableLM、WizardLM、Baize、Ziya、Chinese-Vicuna、MPT、INCITE、Wizard Mega、KoAlpaca、Vigogne、Bactrian、h2o、OpenBuddyを含むチャットモード用の正確な命令テンプレート
- LLaVAおよびMiniGPT-4を含むマルチモーダルパイプライン
- bitsandbytesによる8ビットおよび4ビット推論
- トランスフォーマーモデルのCPUモード
- DeepSpeed ZeRO-3推論
- 拡張機能
- カスタムチャット文字
- 非常に効率的なテキストストリーミング
- LaTeXレンダリングによるMarkdown出力。
- GPT-4chan用の優れたHTML出力
- ウェブソケットストリーミング用のエンドポイントを含むAPI (サンプルを参照)
以下それらの立ち上げについて述べる。
<Macでの立ち上げ>
Macでの立ち上げは”How to install text-generation-webui (a GUI for local LLMs) on Mac“を参照している。
まずhomebrew環境の立ち上げから、詳細は”Clojureを始めよう(1)環境の立ち上げ(spacemacsとleiningen)“を参照のこと。pythonは3.10が必要となる。puthonのversionを整備するにはpyenvを用いる。pyenvはhomebrewで(brew install pyenv)インストール後、pathを通して(.zshrcや.bash_profile等で)versionが表示されることを確認した後(pyenv –version)、pyenv install 3.10.xxでインストール、pyenv global 3.10.xxで変更することで環境設定が終了する。
次にgitからコピーして、フォルダーのトップに行く
> git clone https://github.com/oobabooga/text-generation-webui.git
> cd text-generation-webui
> python3 --version
#python 3.10.xxと表示される。
#仮想環境の設定
> python3 -m venv venv
> source venv/bin/activate
次に、以下のコマンドを実行して、必要なパッケージをインストールする。
pip install -r requirements.txt
さらに、リリースされているPytorchパッケージはMacのtext-generation-webuiでは動作しないので、ナイトリーの開発ビルドをインストールする。
pip install -U --pre torch torchvision -f
https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html
最後に言語モデルをダウンロードする。
python download-model.py facebook/opt-1.3b
実行させるには以下のコードを入力する。
python server.py
うまく動作するとブラウザ上のhttp://127.0.0.1:7860で確認することができる。
後はモデルタブで先ほどダウンロードしたモデルを選択し
Text GenerationのタブのQuestionの後ろに例えば”Who is JFK?”と入れてGenerateボタンを押すと以下のように出力される。
後は、様々なモデルや出力形態を試したり、学習手法等を組み合わせることができる。
<Windowでの立ち上げ:One-click installersを使ったインストール>
Windows | Linux | macOS | WSL |
---|---|---|---|
oobabooga-windows.zip | oobabooga-linux.zip | oobabooga-macos.zip | oobabooga-wsl.zip |
上記のzipをダウンロードして解凍し、”start “をダブルクリックする。それらによりウェブUIとすべての依存関係が同じフォルダにインストールされる。後はダウンロードしたoobabooga-windowsフォルダ内の「start_windows.bat」の実行することで、macの場合と同様に使用することができる。
LLMについて
LLMには様々な種類があり、A Survey of Large Language Modelsにまとめられている。
代表的な例として以下のようなものがある。
- GPT(Generative Pre-trained Transformer): GPTは、”Transformerモデルの概要とアルゴリズム及び実装例について“でも述べているTransformerアーキテクチャをベースにした言語モデルとなる。GPTは大規模なデータセットで事前学習され、次の単語や文を予測する能力を持っている。GPT-3は最も有名なバージョンであり、多くのタスクで高い性能を発揮している。
- DialoGPT: DialoGPTは、対話型の言語生成モデルの一つであり、OpenAIによって開発されたものとなる。DialoGPTは、GPT(Generative Pre-trained Transformer)アーキテクチャをベースにしている。DialoGPTは、大規模なデータセットを用いて訓練され、対話文脈を理解し、応答を生成することができ、モデルは、過去の発話や文脈を考慮し、応答を生成するためのトークン列を生成する。DialoGPTは、一貫性のある対話を生成することができ、一つの対話ターンに対して複数の応答の候補を出力することも可能となる。
- BERT(Bidirectional Encoder Representations from Transformers): BERTは、双方向のトランスフォーマーエンコーダを使用した言語モデルとなる。BERTは、文脈をより広範に考慮することができ、事前学習によって言語理解のタスクにおいて優れた性能を発揮する。BERTは特に、自然言語処理のタスクにおいて広く使用されている。BERTの詳細に関しては”BERTの概要とアルゴリズム及び実装例について“を参照のこと。
- XLNet: XLNetは、Transformerアーキテクチャをベースにし、双方向性と順方向性の両方の情報を使用してトレーニングすることができるモデルとなる。これにより、言語モデルがより柔軟に文脈を扱い、より精度の高い予測を行うことができる。
- T5(Text-to-Text Transfer Transformer): T5は、テキストを入力として受け取り、テキストを出力するさまざまなタスクに対応できるモデルとなる。T5は、機械翻訳、要約、質問応答、文書分類など、さまざまな自然言語処理タスクに適用することができる。
- PaLM: PaLMは2022年にGoogleから発表されたモデルで「Pathways Language Model」の略となる。PaLMでは端的に言うと、「とにかく大量のパラメータを持ったモデルで大量のデータを最強のマシン構成で学習させたようなモデル」であり、パラメータの数が5400億個ある。(PaLMよりも前に発表されたOpenAIのGPT-3のパラメータは1700億個)
- LLaMA: LLaMAは(Large Language Model Meta AI)の略であり、Metaが2023年2月に発表した大規模言語モデルとなる。LLaMAは、OpenAIに開発するGPTモデルや、Googleの開発するPaLMなどと比較すると圧倒的に少ないパラメータ数のモデルになっている。LLaMAは、パラメータ数をおさえながら高精度を実現しているため、世界中の研究者がLLaMAをベースに様々な大規模言語モデルの可能性を探ることが可能になっている
- OpenFlamingo : DeepMind社が開発したモデル「Flamingo」をドイツの非営利団体「LAION」がオープンソース化したもの。
- Vicuna 13B : LLaMAをベースにChatGPTとユーザの会話を学習させたオープンソースのチャットボット。300ドルのトレーニング費用にも関わらずChatGPTに近い(90%)性能を誇る。
- Alpaca 7B : LLaMAをベースにInstruction-following(自分で学習データを生成)した結果を使ってファインチューニング
- NEMO LLM : NVIDIAが開発した大規模言語モデル。GPT-4と同じく文書生成、画像生成、翻訳、コーディングなどに対応。
- Claude : OpenAIでGPT-2/3 の開発に携わったエンジニアが創業し、そこで開発したモデル
AUTOMATIC1111
AUTOMATIC1111 版 Stable Diffusion Web UI は オープンソースで開発されている、最も機能が豊富な「Stable Diffusion」のフォークとなる。これは、Web UI による簡単な操作性に加え、学習モデルの追加や、LoRAなどの追加学習の利用、GFPGAN を使った顔の修復や高画質化など、ほぼ機能が全部入りのものになっている。
以下にそのインストール方法について述べる。
<Macでの立ち上げ>
まず、Text generation web UIと同様にHomebrew環境を立ち上げる。次に以下のコマンドを使って必要なツールと、gitからAUTOMATIC1111をインストールする。
> brew install cmake protobuf rust python@3.10 git wget
> git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
以上よりホームフォルダに stable-diffusion-webui フォルダが作成されます。さらに次に、学習モデルをダウンロードし(stable-diffusion-v-1-4-originalとか)、stable-diffusion-webui/models/Stable-diffusion フォルダに移動させる。
後はstable-diffusion-webui フォルダに移動して、”webui.sh”スクリプトを実行すると、ブラウザのhttp://127.0.0.1:7860/で動作を確認することができる。
後は、プロンプトを入力して、オプションを決めて「Genegate」を選択すると、しばらく待てば画像が生成され出力される。
<Windowsの立ち上げ>
windowsの場合も、macの場合手順とほぼ同様で立ち上げることができる。
参考情報と参考図書
機械学習による自動生成に関しては”機械学習による自動生成“に詳細を述べている。そちらも参照のこと。
参考図書としては“機械学習エンジニアのためのTransformer ―最先端の自然言語処理ライブラリによるモデル開発“
“
“
コメント
[…] text-generation-webuiとAUTOMATIC1111を用いたコードレス生成モジュール […]
[…] text-generation-webuiとAUTOMATIC1111を用いたコードレス生成モジュール […]
[…] text-generation-webuiとAUTOMATIC1111を用いたコードレス生成モジュール […]
[…] text-generation-webuiとAUTOMATIC1111を用いたコードレス生成モジュール […]
[…] これらのモデルのうちオープンソースになっているものは”Huggingfaceを使った文自動生成の概要“で述べているHuggingfaceより利用可能であり、さらに”text-generation-webuiとAUTOMATIC1111を用いたコードレス生成モジュール“で述べているtext-generation-webuiとAUTOMATIC1111等によりコードレスで活用できる。 […]