Skip to content

Latest commit

 

History

History
139 lines (88 loc) · 5.52 KB

README_ja.md

File metadata and controls

139 lines (88 loc) · 5.52 KB

ChatLLM.cpp

English | 中文版

License: MIT

あなたのコンピュータ(CPU)でリアルタイムチャットを行うための、RAG 対応の多くのモデル(1B未満から300B以上)を推論するための純粋なC++実装です。@ggerganovggml に基づいています。

| サポートされているモデル | 量子化モデルのダウンロード |

特徴

  • int4/int8 量子化、最適化された KV キャッシュ、並列計算によるメモリ効率の高い CPU 推論の加速

  • OOP を使用して、異なる Transformer ベースのモデル間の類似性に対処

  • タイプライター効果を伴うストリーミング生成

  • 継続的なチャット(コンテンツの長さは事実上無制限)

    2つの方法が利用可能です:RestartShift--extending オプションを参照してください。

  • RAG (Retrieval Augmented Generation) 🔥

  • LoRA

  • 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 を使用する準備:

    1. 最新バージョンの w64devkit をダウンロードします。
    2. w64devkit を解凍します。
    3. 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 は大歓迎です。