
LlamaCppのUIツール「LlamaChat」
「Llama.Cpp」のUIツールは、すでにあるとは思ったんですが、
勉強になると思って、自作してみました。
といっても、
C#.net用のラッパーライブラリのメソッドを呼ぶだとか、
あるいは、Llama.Cppをインストールしてきて自分でビルドして、
コンソールから実行ファイルを起動しているだけなんですが。
「LlamaChat1.1」(2024年6月17日更新)
https://drive.google.com/drive/folders/1kntvUj2xWJUPMTohSbX2BHzqySdVhoQI?usp=drive_link
※このツールは、試作品につき、
不具合が残っている可能性があります。
■更新履歴
2024年10月30日 7時38分
・パージョン1.2.1をリリース。
・PowerShell版を廃止。
・対話型?に変更。
(AIくんは勝手にどんどん話し続けますので、
こちらも勝手に質問するなり、キャンセルする形式。)
■「Llama」について
・「facebook」を運営しているmeta社が作った
LLM(大規模言語モデル)です。
( わかりやすく言うと、「ChatGPT」みたいなやつです。)
【良いところ】
・オープンソースである。
・商用利用が可能。
・「ChatGPT」などと比類する性能。
・日本語を追加学習させた東工大のモデル「Swallow」を使うと、
日本語でのやり取りが可能である。(ただし、超重い。)
【悪いところ】
・Llama.Cppのビルドなど、最初の設定が面倒である。
・最新の大きなモデルファイルだと、実行速度が遅い。
・性能的には、「ChatGPT」と比べると見劣りするかも。
■「Llama.Cpp」について
・Llamaのソースコードを、C++で書き直したもので、
そのため、実行速度は、飛躍的に速くなっている。
llama.cppのインストール方法
https://qiita.com/suzukiyukizi/items/955660a7f44be1da2581
日本語に強い大規模言語モデル「Swallow」を公開(東京工業大学)
https://www.titech.ac.jp/news/2023/068089
インストールしてビルドする手順ですが、
「PowerShell」だとかのコンソール画面を開いて、
下記を一行ずつコピペして、Enterキーを押していくだけです。↓
git clone https://github.com/ggerganov/llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd C:\llama.cpp-master\llama.cpp-master
mkdir build
cd build
cmake .. -DLLAMA_CUBLAS=OFF
cmake --build . --config Release
1行目は、「llama.cpp」のインストールです。
2行目は、インストールされたllama.cppのフォルダを
カレントディレクトリにしています。
(おそらく、Cドライブの直下に、フォルダが作られているはず。)
3行目は、その配下に「build」フォルダを作成しています。
4行目は、「build」フォルダをカレントディレクトリにしています。
5行目は、llama.cppを「cmake」でコンパイルしていて、
ソリューションファイル(*.sln)が作られます。
(※「cmake」は、事前にインストールしておく必要があります。)
※パソコンがCUDAに対応していない場合は、
「-DLLAMA_CUBLAS」の値は、OFFにしないと失敗します。
6行目は、リリースビルドを行っていて、
これで、実行ファイル(*.exe)や
ライブラリ(*.dll)が作られます。
(「VisualStudio」がインストール済みなら、
ソリューションファイルを開いて、ビルドしても可。)
■操作説明
・このツールは、
「Lama.Cpp」の実行ファイルを起動するだけのツールですが、
その方法には、2通りあって、それぞれに用意するものがあります。↓
・「コンソール」で実行する場合
・「Llama.cpp」の実行ファイルが必要。
(「Llama.cpp」をインストールして、ビルドする。
「cmake」を使う場合は、インストールする必要がある。)
・わりと速いので、CPU版でも数十秒後に一行は出ます。
・まったく出なくなった時は、タスクマネージャーで
main.exeが複数起動していないかを確認して、
終了させて下さい。
( チャット作成時に、一旦全て終了するように処理はしています。)
・LlamaSharpで実行する場合
・「Llama.cpp」は必要なし。
(ただし、現状、GPUには対応していないので遅い。
ふつうのパソコンだと、30分ぐらいかかります。
今のところは実験用として付けています。)
・それともう一つ、モデルファイルが必要なんですが、
これは量子化されたものでないと動きません。↓(*.gguf)
Llama-2-7B-Chat-GGUF
https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/tree/main
Llamacpp imatrix Quantizations of Meta-Llama-3-8B-Instruct
https://huggingface.co/bartowski/Meta-Llama-3-8B-Instruct-GGUF/tree/main
ELYZA-japanese-Llama-2-7b-instruct-gguf
https://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-instruct-gguf/tree/main
tokyotech-llm-Swallow-13b-instruct-v0.1-gguf
https://huggingface.co/mmnga/tokyotech-llm-Swallow-13b-instruct-v0.1-gguf/tree/main
Meta-Llama-3.1-8B-Instruct-GGUF
https://huggingface.co/bullerwins/Meta-Llama-3.1-8B-Instruct-GGUF/tree/main
https://huggingface.co/bartowski/Meta-Llama-3-8B-Instruct-GGUF/tree/mainELYZA-japanese-Llama-2-7b-instruct-ggufhttps://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-instruct-gguf/tree/maintokyotech-llm-Swallow-13b-instruct-v0.1-ggufhttps://huggingface.co/mmnga/tokyotech-llm-Swallow-13b-instruct-v0.1-gguf/tree/mainMeta-Llama-3.1-8B-Instruct-GGUFhttps://huggingface.co/bullerwins/Meta-Llama-3.1-8B-Instruct-GGUF/tree/mainMistral
Mistral-7B-Instruct-v0.2-GGUF
https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/tree/main
Llama-3.3-70B-Instruct-GGUF
https://huggingface.co/unsloth/Llama-3.3-70B-Instruct-GGUF/tree/main
・つまり、「Llama.cpp」というのがプログラムの本体で、
そこに学習データを読み込んで検索をかけるんですが、
その学習データというのが、
このモデルファイルということです。
・サイズが大きいほど頭が良くなるんですが、
(厳密には、パラメータ数が多いほど高性能)
その分、ロード時間や、返答が遅くなります。
・とまあ、これらのファイルパスを
「設定」タブで入力しておく必要があります。
・一度設定したパスは、ファイルに自動的に保存されますから、
ツールを起動する度に入力し直す必要はありません。
■本ツールを使用しない場合の実行方法
・PowerShellだとかのコンソール画面を開いて、
次のように入力するだけです。↓
cd 実行ファイルのあるフォルダへのパス
実行ファイルへのパス -m モデルファイルへのパス -p "プロンプト"
・「cd」というのは、カレントディレクトリの略で、
現在作業中のフォルダのことです。
・「-m」はモデルファイル、
「-p」はプロンプト(質問などの指示文)です。
■高速化のヒント
【llama.cpp】CPUとRAM、どっちが重要?
https://note.com/bakushu/n/n26537fab5a14