Text generation web UI の起動時コマンドを指定する【Windows用】

# Text generation web UI とは？
オープンなテキスト生成AIを使うためのWeb UI。
Stable Diffusion web UIをリスペクトした見やすいUIが特徴。

Windowsでのインストール方法は以下を参照した。
無料配布されている言語モデルをチャット風のUIで使えるようにしてくれるツール「Text generation web UI」使い方まとめ - GIGAZINE 
https://gigazine.net/news/20230406-text-generation-webui/

公式のGithubページはこちら
https://github.com/oobabooga/text-generation-webui

## 起動時コマンドを指定するには？
"（インストールフォルダ）\oobabooga_windows\webui.py" 
ファイルの、以下の部分を書き換えればよい。（144行目）

```Python:webui.py
def run_model():
    os.chdir("text-generation-webui")
    run_cmd("python server.py --auto-devices --chat --model-menu")
```
例えばこれを

```Python:webui_args.py
def run_model():
    os.chdir("text-generation-webui")
    run_cmd("python server.py --auto-devices --chat --model-menu --auto-launch")
```

と書き換えてあげることで、"--auto-launch"の効果で自動でデフォルトブラウザでページを開くようになる。

## コマンド例
具体的なコマンド例は [Readme.md](https://github.com/oobabooga/text-generation-webui/blob/main/README.md) の 「Starting the web UI」の欄にある。その中から一部抜粋して紹介。


### 基本設定

| フラグ名                                       | 説明 |
|--------------------------------------------|-------------|
| `--notebook`                               | ノートブックモードでWeb UIを起動し、入力と同じテキストボックスに出力を書き込む。 |
| `--chat`                                   |  チャットモードでWeb UIを起動する。 |
| `--model モデル名`                            | デフォルトで読み込むモデルの名前を指定する。|
| `--lora LORA名`                              | デフォルトで読み込むLORAの名前を指定する。 |
| `--model-menu`                             | Web UIの初回起動時に、ターミナルでどのモデルを選択するか表示する。 |
| `--no-stream`                              | テキスト出力をリアルタイムでストリーミングしない。 |

### 高速化・transformers

| Flag                                        | Description |
|---------------------------------------------|-------------|
| `--cpu`                                     | CPUを使って、テキストを生成する。注：CPUでのトレーニングは非常に遅い。|
| `--auto-devices`                            | 利用可能なGPUとCPUにモデルを自動で分担させる。 |
| `--disk`                                    | GPUとCPUの組み合わせでモデルが大きすぎる場合に、残りのレイヤーをディスクに転送する。 |
| `--xformers`                                | xformerのメモリ効率の良いアテンションを使用する。これにより、トークン/sが増加するはず。 |

### Gradio （Web UIに関する項目）

| Flag                                  | Description |
|---------------------------------------|-------------|
| `--listen`                            | ローカルネットワークからWeb UIにアクセスできるようにする。 |
| `--share`                             | 公開URLを作成する。Google ColabなどでWeb UIを動作させる場合に便利。 |
| `--auto-launch`                       | 起動時にデフォルトのブラウザでWeb UIを開く。 |

## 自分の場合はこう使う
oobabooga_windows\webui.py を直接編集するのもなんか忍びないので、
コピーして oobabooga_windows\webui_args.py というファイルを作り、こちらの引数を自分は編集している。

```Python:webui_args.py

def run_model():
    os.chdir("text-generation-webui")
    #=======================================================================================
    #Input Command HERE.
    run_cmd("python server.py --auto-devices --chat --listen --auto-launch")
    #=======================================================================================

```

ついでに、webui.pyを参照している oobabooga_windows\start_windows.bat ファイルをコピーし、
oobabooga_windows\start_windows_args.bat と名前を変更し、以下のようにこのbatファイルの終盤を置き換える。

```bat:start_windows.bat
@rem setup installer env
call python webui.py 
```
```bat:start_windows_args.bat
@rem setup installer env
call python webui_args.py 
```

こうすることで、start_windows_args.batをクリックしただけでWeb UIを出現させることができる。


## 私の環境
Windows 10
Google Chrome バージョン: 112.0.5615.138