オフライン版ChatGPTであるh2oGPTを使ってみた

# h2oGPTとは

h2oGPTは[H2O.ai](https://h2o.ai/company/)という会社が公開した、オフラインで使えるChatGPTにような大規模言語モデルです

[H2O.ai](https://h2o.ai/company/)はAIの民主化をモットーにAIの作成と使用を自由にできるように、機械学習、AuntoML、AIのミドルウェア、AIアプリケーションを開発しているようです

ちなみに、h2oGPTは大規模言語モデルの民主化と題してarXivに論文が公開されています
[h2oGPT: Democratizing Large Language Models](https://doi.org/10.48550/arXiv.2306.08161)


# ChatGPTの何がだめなのか?

そもそも、この一年でChatGPTの躍進が取り出たされて、十分に使えそうだと話になっているからそれでいいじゃないかと思う人も多いとは思う

しかし、ある程度お金を持っている個人はそうかも知れないが
- 継続的な課金を気軽にできず、GPT-4を使えない人
(最近[code interpreter](https://openai.com/blog/chatgpt-plugins)という質問の回答をpythonでプログラム組んで回答してくれる機能も有料版の人は使えるらしいです。知らんけど。)
- 情報の流出を恐れてChatGPTのAPIの利用を禁止している企業に属する人

そんな人たちには問題が立ちはだかっていた

そこで出てきたのが今回紹介する**h2oGPT**である

# とりあえずDemoを試してみる

公式サイトにあるデモ[demo](https://gpt.h2o.ai/)で試してみた。
その他[Huggingfaceで公開されているデモ](https://huggingface.co/spaces/h2oai/h2ogpt-chatbot2)も存在するので皆さんは任意の方法でh2oGPTの動作を試してほしい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437409/ed7be3ac-5c29-3b55-c4e5-d9209933e06c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437409/481c1fbe-4241-bf1e-0866-a4620d325a40.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437409/816d2726-d832-8cb3-f130-448aedf17127.png)

なんと複数のモデルの出力結果を比較することができる親切なGUI設計

また後ろの方にpdfやパワポ、エクセル、ワード、画像(png,jpg)、URLをアップロードする領域があるということは文字だけえはなくマルチモーダルなAIの設計の構想があるのだろうか

# h2oGPTの使い方

基本的には公式が公開する[github](https://github.com/h2oai/h2ogpt)などのソースを参照にして欲しい

2023/07/10時点では、[dockerを使って環境構築](https://github.com/h2oai/h2ogpt/blob/main/docs/INSTALL-DOCKER.md#containerized-installation-for-inference-on-linux-gpu-servers)を行って実行する例を紹介する
その他進展があれば、追記や新しい記事として公開していきたい
その他、[windows10/11での実行方法](https://github.com/h2oai/h2ogpt/blob/main/docs/README_WINDOWS.md)や[Mac OSでの実行方法](https://github.com/h2oai/h2ogpt/blob/main/docs/README_MACOS.md)も記載があるので、みなさんチャレンジして頂きたいです


1.任意のディレクトリにソースコードのダウンロードとディレクトリへの移動
```bash
https://github.com/h2oai/h2ogpt.git
```
```bash
cd h2ogpt
```

2.nvidia containerの導入
事前にDockerの環境構築などが終わっている前提で話をすすめているので、そこらへんがまだの人は[Install Docker Engine](https://docs.docker.com/engine/install/)などを参考に導入をしておいてください

```bash
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
    && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
    && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit-base
sudo apt install nvidia-container-runtime
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
```

3.コンテナイメージのビルド
```bash
docker build -t h2ogpt .
```

4.コンテナの実行とパラメータのダウンロード
(50GBのデータをダウンロードすることになるので、ネットワークが貧弱だと時間がかかることを覚悟してください)
```bash
docker run --runtime=nvidia --shm-size=64g -p 7860:7860 \
    -v ${HOME}/.cache:/root/.cache --rm h2ogpt -it generate.py \
    --base_model=h2oai/h2ogpt-oasst1-512-20b
```

5.表示されるURLを踏むことで、先程デモで触ったUIと同じものがローカルで実行できるようになった!

```bash
https://localhost:7860
```

documentを読む限り、CPU・GPU実行ができたり、モデルを変えての実行、
pdfやワードのデータを使ってやモデルのファインチューニングもできるようなのでそうしたことも今後記事を更新していければと思います。

2023/07/11見直したら、google colabのデモも公開されており、日々更新されていてこのツールが覇権を握ったときに使いこなせているようになっていれば人気者間違いなし!!

[code interpreter](https://openai.com/blog/chatgpt-plugins)はローカルで動かせないモデルがpythonで問題を解決しているのすごいと世間が喚起しているうちにローカルで同じことを実行できるようにしてしまおう!!!