あなたのコンピュータ(CPU)でリアルタイムチャットを行うための、RAG 対応の多くのモデル(1B未満から300B以上)を推論するための純粋なC++実装です。@ggerganov の ggml に基づいています。
| サポートされているモデル | 量子化モデルのダウンロード |
-
int4/int8 量子化、最適化された KV キャッシュ、並列計算によるメモリ効率の高い CPU 推論の加速
-
OOP を使用して、異なる Transformer ベースのモデル間の類似性に対処
-
タイプライター効果を伴うストリーミング生成
-
継続的なチャット(コンテンツの長さは事実上無制限)
2つの方法が利用可能です:Restart と Shift。
--extending
オプションを参照してください。 -
RAG (Retrieval Augmented Generation) 🔥
-
Python/JavaScript/C/Nim バインディング、ウェブデモ、その他の可能性
python chatllm.py -i -m :model_id
と入力するだけで簡単に始められます。詳細はこちら。
ChatLLM.cpp リポジトリをローカルマシンにクローンします:
git clone --recursive https://github.com/foldl/chatllm.cpp.git && cd chatllm.cpp
リポジトリをクローンする際に --recursive
フラグを忘れた場合は、chatllm.cpp
フォルダで以下のコマンドを実行します:
git submodule update --init --recursive
一部の量子化モデルはオンデマンドでダウンロードできます。
convert.py
の依存関係をインストールします:
pip install -r requirements.txt
convert.py
を使用してモデルを量子化された GGML 形式に変換します。例えば、fp16 ベースモデルを q8_0(量子化 int8)GGML モデルに変換するには、以下のコマンドを実行します:
# ChatLLM-6B、ChatLLM2-6B、InternLM、LlaMA、LlaMA-2、Baichuan-2 などのモデルの場合
python3 convert.py -i path/to/model -t q8_0 -o quantized.bin
# CodeLlaMA などの一部のモデルの場合、モデルタイプは `-a` で指定する必要があります
# 各モデルの `-a ...` オプションは `docs/models.md` に記載されています。
python3 convert.py -i path/to/model -t q8_0 -o quantized.bin -a CodeLlaMA
マージする LoRA モデルのパスを指定するには、-l
を使用します。例えば:
python3 convert.py -i path/to/model -l path/to/lora/model -o quantized.bin
注意:適切に、HF 形式のみがサポートされています(いくつかの例外を除く)。生成された .bin
ファイルの形式は llama.cpp
で使用されている GGUF とは異なります。
このプロジェクトをビルドするには、いくつかの異なるオプションがあります。
-
make
を使用:Windows で
make
を使用する準備:- 最新バージョンの w64devkit をダウンロードします。
w64devkit
を解凍します。w64devkit.exe
を実行し、chatllm.cpp
フォルダにcd
します。
make
実行ファイルは
./obj/main
です。 -
CMake
を使用してビルド:cmake -B build # Linux、WSL で: cmake --build build -j # Windows で MSVC を使用: cmake --build build -j --config Release
実行ファイルは
./build/obj/main
です。
量子化モデルとチャットするには、以下のコマンドを実行します:
./build/bin/main -m chatglm-ggml.bin # ChatGLM-6B
# 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
./build/bin/main -m llama2.bin --seed 100 # Llama-2-Chat-7B
# Hello! I'm here to help you with any questions or concerns ....
インタラクティブモードでモデルを実行するには、-i
フラグを追加します。例えば:
# Windows で:
.\build\bin\Release\main -m model.bin -i
# Linux(または WSL)で:
rlwrap ./build/bin/main -m model.bin -i
インタラクティブモードでは、チャット履歴が次のラウンドの会話のコンテキストとして使用されます。
./build/bin/main -h
を実行して、他のオプションを探索してください!
-
このプロジェクトは ChatGLM.cpp のリファクタリングとして始まりました。これがなければ、このプロジェクトは実現しなかったでしょう。
-
モデルのソースとチェックポイントを公開してくれた方々に感謝します。
このプロジェクトは私の趣味のプロジェクトであり、DL & GGML を学ぶためのもので、現在積極的に開発中です。機能の PR は受け付けませんが、バグ修正の PR は大歓迎です。