前言#
この記事では、wenda のローカル使用状況を簡単に記録します。
wenda は、ローカル知識ベースをサポートし、ネットワーク検索をサポートし、AutoGPT のようなクエリ要約出力を実現し、小さなモデルを使用して ChatGPT に劣らない効果を達成するオープンソースの自然言語モデルです。
正文#
一、wenda 紹介#
wenda は、LLM 呼び出しプラットフォームであり、小さなモデルに外部知識ベースを検索する方法を提供し、大モデルに似た生成能力を実現することを目的としています。chatGLM-6B、chatRWKV、chatYuan、llama シリーズモデルをサポートし、自動保存された対話履歴、知識ベース拡張モデル機能、パラメータのオンライン調整、ローカルネットワーク、イントラネットのデプロイ、複数ユーザーの同時使用などの機能を提供します。
二、wenda インストール#
1、wenda のインストール#
プロジェクトファイルをダウンロードし、一般的な依存関係をインストールします。
git clone https://github.com/l15y/wenda.git
pip install -r requirements.txt
使用するモデルに応じて異なる依存ライブラリをインストールします。
2、LLM モデルのダウンロード#
ChatGLM-6B-int4 と RWKV-4-Raven-7B-v10 モデルの使用を推奨します。ChatGLM-6B-int4 は 6G の VRAM またはメモリで実行でき、RWKV は割り当てポリシーによります。
- ChatGLM
ChatGLM-6B はオープンソースの中英バイリンガル対話言語モデルで、General Language Model (GLM) アーキテクチャに基づき、62 億のパラメータを持っています。ユーザーはコンシューマ向けの GPU でローカルデプロイを行うことができ(INT4 量子化レベルでは最低 6GB の VRAM が必要)、P-Tuning v2 の効率的なパラメータ微調整方法を使用して自分のアプリケーションシナリオをカスタマイズできます。現在、このモデルには有害または偏見のあるコンテンツを生成する可能性など、かなりの制限があります。
公式には懒人包下载が提供されており、プログラム本体と複数のモデルが含まれています。また、huggingfaceでより最適化されたモデルバージョンを探すこともできます。
Apple Silicon の GPU で実行する場合は、config.xml
ファイルの GLM6B ポリシー項目をmps fp16
に変更し、plugins/llm_glm6b.py
ファイルに 2 行追加する必要があります:
- RWKV
ChatRWKV は、ChatGPT に似ていますが、RWKV(100% RNN)言語モデルによって駆動されるチャットツールで、拡張性と品質はトランスフォーマーに匹敵し、速度が速く VRAM を節約できます。また、v2 バージョンを提供し、ストリームと分離ポリシー、INT8 を含みます。ユーザーは、ChatRWKV チャットボットを構築する際に、エラーを防ぐために状態のテキストを確認し、推奨される形式でチャットを行うことに注意する必要があります。
現在、RWKV には多くのモデルがあり、さまざまなシーンや言語に対応しています:
- Raven モデル:直接チャットに適しており、+i コマンドに適しています。多くの言語バージョンがあり、どれを使用するかを確認してください。チャット、タスクの完了、コードの作成に適しています。タスクとして文書、アウトライン、ストーリー、詩などを書くことができますが、文体は testNovel シリーズモデルには及びません。
- Novel-ChnEng モデル:中国語と英語の小説モデルで、+gen を使用して世界設定を生成できます(プロンプトを書くことができれば、下文のプロットやキャラクターを制御できます)、SF やファンタジーを書くことができます。チャットには適しておらず、+i コマンドには適していません。
- Novel-Chn モデル:純粋な中国語のネット小説モデルで、+gen を使用してネット小説を続けて書くことができます(世界設定などを生成することはできません)が、ネット小説を書くのが得意です(より一般的な文体で、男性向けや女性向けの作品に適しています)。チャットには適しておらず、+i コマンドには適していません。
- Novel-ChnEng-ChnPro モデル:Novel-ChnEng を高品質の作品(名作、SF、ファンタジー、古典、翻訳など)で微調整します。
wenda ではRWKV-4-Raven-7B-v10-Eng49%-Chn50%-Other1%-20230420-ctx4096
の使用を推奨しており、huggingfacesで各バージョンをダウンロードできます。
RWKV のモデルポリシーには以下の選択肢があります:
RWKV-4-Raven-7B-v10 モデルは 13G のサイズがあり、cuda fp16
でロードするには 15G 以上の VRAM が必要で、一般的なコンシューマ向け GPU には優しくありません。そのため、cuda fp16i8 *20+
のようなポリシーを選択できます。VRAM が不足する場合は、層数を減らすことができます。例えば、*18+
です。これは GPU をストリーミング使用するもので、速度は全てをロードするより遅くなります。さらに、2G の VRAM で動作させる極端な方法もあり、この記事を参考にして、cuda fp16i8 *0+ -> cpu fp32 *1
のポリシーを使用することができます。
VRAM が十分であれば、全てをロードするために cuda を使用しましょう。RWKV は ChatGLM と同じパラメータ量で速度に大きな利点があります。
RWKV の cuda_kernel のコンパイル#
RWKV には環境変数RWKV_CUDA_ONがあり、RWKV の cuda_kernel をコンパイルして推論をさらに加速できます(私のカードでは加速しなくても速いですが😀)。gcc5 + が必要で、CUDA_HOME を設定します。私のテスト環境は Pytorch1.12、cuda は 11.3 で、カーネルをコンパイルする際に #error You need C++14 to compile PyTorch
というエラーが発生した場合、rwkv ライブラリのmodel.py
ファイル内のコンパイルオプション-std=c++17
を-std=c++14
に変更することでコンパイルが完了します。
- LLaMa
llama 系のモデルは多く、vicuna-13B を推奨し、ggml int4 量子化バージョンを使用します。ここからダウンロードできます。
llama-cpp-python をインストールする際、一部のマシンでコンパイルが失敗することがあるため、gcc11 を使用することで成功します。以下は gcc11 をコンパイルし、gcc11 で llama-cpp-python をコンパイルする手順です:
gcc11 のコンパイルインストール
git clone --branch releases/gcc-11.1.0 https://github.com/gcc-mirror/gcc.git
# gcc-11.1.0ディレクトリに移動
./contrib/download_prerequisites
./configure --prefix=/usr/local/gcc-11.1.0 --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib
# 32ビットC/C++に必要な依存関係をインストール
yum install glibc-devel.i686 libstdc++-devel.i686
# コンパイルを開始
make -j$(nproc) && make install
llama-cpp-python のコンパイルインストール
export CC=/usr/local/gcc-11.1.0/bin/gcc
export CXX=/usr/local/gcc-11.1.0/bin/g++
pip install llama-cpp-python
- OpenAI API
wenda では OpenAI の API を直接使用することもでき、知識ベース機能と組み合わせることで、より良い効果が得られます。
三、wenda 使用#
プロジェクト本体をインストールし、モデルをダウンロードした後、config.xml
ファイルを設定できます。ここでモデルのロードパスや知識ベースモードなどのパラメータを設定します。
知識ベースモード#
知識ベースの原理は、いくつかのヒント情報を生成し、それを対話に挿入することです。
プロジェクトのモードには以下のいくつかがあります:
- bing モード、cn.bing 検索、国内のみ利用可能
- bingxs モード、cn.bing 学術検索、国内のみ利用可能
- bingsite モード、bing サイト内検索、URL を設定する必要があります
- st モード、sentence_transformers+faiss によるインデックス作成
- mix モード、融合
- fess モード、ローカルにデプロイされたfess 検索を使用し、キーワード抽出を行います
オンラインとローカルの 2 種類に分けられます。オンラインは bing 検索を使用して情報をネットワークで照会し、ローカルは個人の知識を補完します。
具体的には公式のモード紹介を参照してください。
すべての設定が完了したら、python wenda.py
を実行して URL にアクセスできます。
以下は RWKV モデル使用時のテスト効果です:
論文を書く際に自動的にサブゴールの質問回答をサポートします:
別のトピックの効果:
ChatGLM-6B-int4 のテスト効果:
ChatGLM-6B の効果は良好で、速度に違いは見られません。
llama 系のテスト結果はあまり良くないので、使用しない方が良いでしょう。
四、总结#
使用してみた感触は悪くなく、ChatGLM、RWKV、LLaMa、gpt4all、LLaVa などのモデルを試用したことがありますが、これらのモデルは ChatGPT に比べて直接使用時の効果が少し劣ります。しかし、wenda を使用してテストした結果には驚かされ、四両で千斤を動かす効果を達成しました。その中でも ChatGLM-6B の効果が最も良好で、OpenAI API を使用することでさらに良い効果が得られます。
ただし、知識ベース機能を追加しても、生成の正確性を保証するのは難しく、これは ChatGPT でも同様に無意味な内容が生成されることがありますので、使用時には内容の有効性を慎重に確認する必要があります。
全体的に見て、wenda を使用する際、モデルの選択によって、これらのモデルは自然でスムーズな対話体験を提供してくれます。ローカルデプロイを希望する人にとっては非常に素晴らしいプロジェクトです。
最后#
参考記事:
1.5G VRAM で動作する RNN 14B のオープンソースモデル
声明#
この記事は個人の学習記録としてのみ使用されます。
この記事はHBlogと同期しています。