見出し画像

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

※このツールは、試作品につき、
 不具合が残っている可能性があります。

■「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
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」の実行ファイルを起動するだけのツールですが、
その方法には、3通りあって、それぞれに用意するものがあります。↓

・「コンソール」で実行する場合


 ・「Llama.cpp」の実行ファイルが必要。
 (「Llama.cpp」をインストールして、ビルドする。
  「cmake」を使う場合は、インストールする必要がある。)

「PowerShell」で実行する場合


 ・上記に加えて、「PowerShell」のインストールが必要。


・LlamaSharpで実行する場合


 ・「Llama.cpp」は必要なし。
 (ただし、現状、GPUには対応していないので遅い。)


・それともう一つ、モデルファイルが必要なんですが、
 これは量子化されたものでないと動きません。↓(*.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

・つまり、「Llama.cpp」というのがプログラムの本体で、
 そこに学習データを読み込んで検索をかけるんですが、
 その学習データというのが、
 このモデルファイルということです。

・サイズが大きいほど頭が良くなるんですが、
 その分、ロード時間や、返答が遅くなります。

・とまあ、これらのファイルパスを
「設定」タブで入力しておく必要があります。

・一度設定したパスは、ファイルに自動的に保存されますから、
 ツールを起動する度に入力し直す必要はありません。

■本ツールを使用しない場合の実行方法


・PowerShellだとかのコンソール画面を開いて、
 次のように入力するだけです。↓

cd 実行ファイルのあるフォルダへのパス
実行ファイルへのパス -m モデルファイルへのパス -p "プロンプト"

・「cd」というのは、カレントディレクトリの略で、
 現在作業中のフォルダのことです。

・「-m」はモデルファイル、
 「-p」はプロンプト(質問などの指示文)です。

■高速化のヒント

【llama.cpp】CPUとRAM、どっちが重要?
https://note.com/bakushu/n/n26537fab5a14

この記事が気に入ったらサポートをしてみませんか?