privateGPT を使って日本語ドキュメントを解析させる(wsl2 ubuntu22.04)

privateGPT を使って日本語ドキュメントを解析させる(wsl2 ubuntu22.04)

2023/10/30 21:00:00
Program, Ai
PrivateGPT

前提 #

  • 環境は wsl2 ubuntu22.04 を想定
    環境構築は、以下が参考になる。
    https://blog.oya3.net/docs/ubuntu/22.04/ubuntu-settings/
  • anyevn + pyenv がインストール済みであること
  • fish シェルであること
  • 日本語で質問できるようにする
    というより最新(privateGPT 0.1.0)は日本語対応できている様子

インストール手順 #

基本的には以下の privateGPT 公式通りに作業を進める

# もし python 3.11.x が得られない場合、anyenv一式を更新しておく
$ mkdir -p (anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git (anyenv root)/plugins/anyenv-update
# anyenv が管理しているenvを更新
$ anyenv update

# 3.11.x があることを確認
$ pyenv install --list
...
3.11.6
...
# ここでは 3.11.6 をインストールする
$ pyenv install 3.11.6

# poetry をインストールする(python便利パッケージ管理)
$ curl -sSL https://install.python-poetry.org | python3 -
...
Add `export PATH="/home/developer/.local/bin:$PATH"` to your shell configuration file.
Alternatively, you can call Poetry explicitly with `/home/developer/.local/bin/poetry`.
You can test that everything is set up by executing:
`poetry --version`

# 上記の通り、PATHを追加する必要があるので追加する
# -U または --universal:このオプションを使用すると、設定した変数はユニバーサル変数となり、すべての fish インスタンスで即座に利用可能になります。また、シェルの再起動後もこの設定は保持されます。
# -x または --export:このオプションを使用すると、指定したシェル変数が子プロセスにエクスポートされ、環境変数として利用できるようになります。
$ set -Ux fish_user_paths /home/developer/.local/bin $fish_user_paths

# poetry 動作確認
$ poetry --version
Poetry (version 1.6.1)

# privateGPTインストール
$ git clone https://github.com/imartinez/privateGPT.git
$ cd privateGPT
$ pyenv local 3.11.6

# 仮想環境をプロジェクトローカルに作成することを明示する
#  default だと null とっているので true にして privateGPT ディレクトリ内に.venvを配置する
$ poetry config virtualenvs.in-project true

# 仮想環境作成(.venvが作成される)
#  - windows の場合だと、vs2022 が必要。vs2022 のパスも通しておく必要がある。
#  - wsl2 ubuntu の場合だと、gcc 一式のビルド関連パッケージが必要と思われる。
$ poetry install --with ui,local

# 仮想環境を有効にする(activate)
$ poetry shell

# privateGPT をセットアップ(modelをダウンロードして配置してくれてるっぽい)
$ poetry run python scripts/setup

# GPU があるなら追加でビルド指定がある。。。けど何していいかわからん。。。。
# これ必要か不明。。。
# CMAKE_ARGS='-DLLAMA_CUBLAS=on' poetry run pip install --force-reinstall --no-cache-dir llama-cpp-python

実行 #

# privateGPT ディレクトリに移動
$ cd privateGPT

# 仮想環境を有効にする(activate)
$ poetry shell

# privateGPT用の web サーバ起動
# http://localhost:8001 , http://localhost:8001/docs  で待ち受けてるらしい。。。
$ PGPT_PROFILES=local poetry run python -m private_gpt

上記の状態でブラウザで http://localhost:8001 アクセスすると以下の画面が表示され会話可能な状態になる

ドキュメントを追加する #

今の状態だと会話できるだけなので、解析させたいドキュメントを追加する
ここでは以下のドキュメントを追加して実験する

$ emacs aws_clf.txt

クラウドプラクティショナーとは
クラウドプラクティショナーとは、AWSの認定資格の一つであり、クラウドの概念を含めAWSの主要サービスのテクノロジーやセキュリティなどAWSクラウドの知識とスキルを身に付けて効果的に利用できることの証明です。クラウドプラクティショナーは、AWSのサービスやユースケースのみならず、セキュリティや料金モデルなど幅の広い知識が必要とされます。

クラウドプラクティショナーで証明できる能力
クラウドプラクティショナーで証明できる能力としては、AWSクラウドが何なのか、またグローバルインフラストラクチャを定義でき、アーキテクチャ原理を説明スキル。 AWSプラットフォームの主なサービスと一般ユースケース、セキュリティとコンプライアンスの側面及び共有セキュリティモデルの説明スキル。請求、アカウントマネジメント、料金モデルの理解。AWSクラウドにおいてのデプロイと運用の重要点の説明スキルが挙げられます。

AWS認定試験内での位置づけ
AWSの認定試験の中では入門的なものとなっていて、エンジニアをはじめとして営業、マネージャー、コンサルタントとAWSに関わる人からの注目が高い資格です。また、クラウドプラクティショナーは日経SYSTEMSが実施した「ITエンジニアがこれから取得したい思うIT資格」の調査にて、No.1を獲得するなど世間の関心の高さも見て取れます。

学習方法
学習方法は参考書が重要ですが、AWSのサービスはアップデートするのが非常に早いため、参考書で網羅することは難しいと考えたほうが良いでしょう。そのためAWSではオンラインでデジタルセミナーなど受講することが可能で、いくつかは無料で提供されているため活用することをオススメします。また、試験の問題と傾向に慣れておく必要があるため事前に模擬試験や模擬問題集を解いておくと良いでしょう。

AWSクラウドプラクティショナー認定試験の概要
AWSクラウドプラクティショナー認定試験は、試験時間90分間、受験料11,000円(税別)、1000点満点中700点以上が合格ラインとされています。クラウドの概念、セキュリティ、テクノロジー、請求と料金と4つのカテゴリーに分かれて出題されます。

合格者には次回以降の模擬試験1回分が無料になり、試験1回分が半額になったりするなどの特典が与えられます。

追加する手順は以下の通り。

# 上記の手順で設置した privateGPT ディレクトリに遷移する
$ cd privateGPT

# 検索対象エリア作成を作成し、aws_clf.txt を配置しておく
$ mkdir in_docs
$ cp aws_clf.txt in_docs/.

# 解析開始+常に監視
# おそらくこの状態だと、in_docs ディレクトリにドキュメントが配置されるたびに解析が実行されると思われる
# 追加するドキュメントないのであれば Ctrl+C で終了しても構わない
$ make ingest in_docs -- --watch

# ついでに、削除する場合は、解析を停止し、local_data 内を削除すればいいらしい(.gitignore以外)
$ git clean -fdx local_data
# もちろん、in_docs 内も削除したいなら、、、
$ rm -rf in_docs/*

上記、ドキュメント追加後に再度質問すると以下になる。

いつまで無料で公開されるかはわからんけど、、、
ドキュメントを解析させて質問できるのは便利だが、回答するまで数分かかったりするのでGPUが必須な気がする。
か、GPU はメモリが多くなると高価になるので、APU にメモリをたっぷり割り振って試すのもいいかもしれない。
次はソースコードを解析させてみようと思う。
※chatGPT に privateGPT の状況を質問すると以下になったのでたぶんソース解析もいけそう。。。

PrivateGPTは、ソースコードの解析をサポートする能力を持っています。
具体的には、PrivateGPTはLangChainツールを利用してドキュメントを解析し、
HuggingFaceEmbeddings (SentenceTransformersの一部)を使用してローカル埋め込みを作成します¹。
これにより、PrivateGPTはソースコードの構造と機能を理解し、それに基づいて詳細な分析を提供することができます。
ただし、具体的な機能や使用方法はPrivateGPTのドキュメンテーションや関連資料を参照してください。¹
ソース: Bing との会話 2023/10/31
(1) PrivateGPT:安全・プライバシー保護を実現したオフラインGPT-4 .... https://ecoagi.ai/ja/topics/ChatGPT/privategpt.
(2) ChatGPT にプログラムを分析・可視化させてみた #React - Qiita. https://qiita.com/shyamagu/items/0f9fea01e5f9aeb685fd.
(3) PrivateGPT:安全・プライバシー保護を実現したオフラインGPT-4 .... https://bing.com/search?q=privateGPT+%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%b3%e3%83%bc%e3%83%89%e8%a7%a3%e6%9e%90%e6%a9%9f%e8%83%bd.

参考URL #