llama.cppをGUI化(Ubuntu編)

Ubuntu
スポンサーリンク

Amazonのアソシエイトとして、当ブログは適格販売により収入を得ています。

最近、AIをエージェントとして使役することに試行錯誤しています。
そんな中、出来上がったのがこのツール。
言ってみればただの副産物です。

llama.cppといえば、黒い画面に白い文字でコマンドを打ち込んでいくものです。
コマンドをいつもコピペしている自分にとっては、やっぱり煩わしい。
自動処理させるにはとても便利なんですがね・・・。

ということで、gradioを使ってGUI化してみました。

それでは、いってみましょう。

ダウンロード

GitHub – toaru-ubuntu/simple-llama-studio
Contribute to toaru-ubuntu/simple-llama-studio development by creating an account on GitHub.

例によってリポジトリを作りました。

uv環境を使っています。
インストールの手順はこちらをどうぞ。

それでは、simple-llama-studioをインストールしていきましょう。

#!/bin/bash

cd ~
mkdir -p install
cd install

# simple-llama-studioをダウンロード
git clone https://github.com/toaru-ubuntu/simple-llama-studio.git
cd simple-llama-studio

# uv環境を作ります
uv venv .venv --python 3.12
source .venv/bin/activate

# simple-llama-studioを動かすのに必要なライブラリ等
uv pip install huggingface_hub gradio pyyaml

# llama.cppのダウンロード
sudo apt install -y git cmake g++ libcurlpp-dev
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

# CPU用ビルド(ggufの変換で使う)
mkdir build-cpu
cmake -B build-cpu
cmake --build build-cpu --config Release -j$(nproc)

# vulkanビルド
sudo apt install -y libvulkan-dev glslc spirv-headers
cmake -B build-vulkan -DGGML_VULKAN=ON
cmake --build build-vulkan --config Release -j$(nproc)

# ggufの量子化に必要なライブラリ等
uv pip install -r ./requirements.txt --index-strategy unsafe-best-match

以上でインストールは終了です。

ちなみにバックエンドはvulkanとCPU(CPUってバックエンドとは言わないかも・・・)です。
cudaは触ったこと無いですが相当速いらしいですね・・・。
でも、使える人が限定されてしまうので、自分としてはどのPCでも使える方が良いと思っています。

使い方

最近のLLMは高効率で容量も小さくなってきていますが、それでも50GBとかあります。
システムディスクに移動したりダウンロードしたりするとそれだけでかなり容量を圧迫します。


ではここから使い方です。

以下のコマンドでも大丈夫です。

source .venv/bin/activate
python ./run.py

まずはLLMをダウンロードしなくてはなりません。
次はそこからの手順を説明します。

LLMのダウンロード

このツールはhuggingface IDを使ってLLMをダウンロードします。

ちなみに画像認識など、マルチモーダルに対応していないLLMだと、この工程はエラーが出ると思います。

Vulkanは、ここ10年くらいのGPUならだいたい対応していると思います。
ちなみに自分はCPUで推論することがほとんどです。
Intel Arc A750はVRAMが8GBしかないもので・・・。

ちょっと見えにくいですが、右上の赤丸からパフォーマンス設定を開いていきます。

  • 「-t」を指定する
    • CPUで推論するスレッド(プロセス?)数を指定します。物理コア数を指定すると良いようです。私事で申し訳ないですが、Ryzen9 7900無印に合わせてます。
  • 「-tb」を指定する
    • ユーザーのコンテキストを読み込むスレッド(プロセス?)数を指定します。論理コア数でブン回す。設定数は同上。
  • -ngl を指定する
    • LLMはいくつものレイヤーに分かれているらしいのですが、その内GPUに何層乗せるかの設定数。VRAMの使用量とコンテキスト長で決めましょう。ちなみに自分は設定しません。
  • -ncmoe を指定する
    • MoEモデルの時に使うらしいのですが、VRAMに載せきれない分をCPU(メインメモリ)に肩代わりさせる層数らしいですが、よくわかりません。自分は使わないので。
  • -ctk / -ctv を指定する
    • トークンとか呼ばれるコンテキストの量子化らしい。
    • 「k」がキー、「v」がバリュー。それぞれ量子化してメモリを圧迫するのを緩和できるみたいです。自分はここだけ「q8」とかに設定します。
  • Flash Attentionを指定 (-fa)
    • メモリ効率化のオプション。自分は指定しないです。しなければ「auto」が選ばれるとのこと。

ちなみに「chat.py」と書かれていますが、Geminiの勘違いです。
llama.cpp専用の簡易UIが立ち上がります。

超軽量モデルを更に量子化しているので動作は軽快ですが、答えはトンチンカンです。

サーバーモード

自分はこのためにこのツールを作ったようなものです。
OpenAI APIとやらを使ってOpenManusやOpenClaw、Roo Codeなどと通信できます。

自分はAIエージェントを使う時、「llama.cpp」だけでなく「OpenVINO GenAI」も使うことがあるので、設定で迷わないように固定にしています。
このあたりの設定は似たようなものがたくさんあるので。
Geminiは「別になんでもいいですよ」って言うんですが・・・。


「Chatbox」や「SillyTavern」、「Dify」のような有名なチャットアプリなどでは設定画面で以下のように入力するとつながるようなるらしいです。

  • APIのベースURL: http://127.0.0.1:8080/v1
  • APIキー: (何でもOK)

Pythonなどで自作のプログラムを組んだりする場合は

http://127.0.0.1:8080/v1/chat/completions 

でつながるようです。


サーバーモードで立ち上げ、自動ループスクリプトで受け取っている様子です。撮影には失敗していますが、雰囲気だけ。

といってもループしませんでした。
本当なら、足りないライブラリを自動でインストールしたり、エラーを自己修復したりします。

LLM次第といったところです。

最後に

Arc Pro B60を手放したのはかなりの痛手です(まぁ仕方がなかったのですが・・・)。
ついでにRadeon Pro W6800も・・・。

人間、失って初めてその価値に気づくものです。

逆に言えば、失うまでその価値には気づいていなかった、ということですね。
おかげでCPUが以外にも推論で役に立つということに気が付きました。
APUなんか結構良い選択肢かもしれません(メモリ次第ですが)。

「重み」と「活性化」の分かれているモデルに注目すれば、そこそこはいけます。
Denseモデルの方が推論性能が強いことは確かですが。

今回は以上です。


Amazon | 玄人志向 Intel Arc B580 搭載 グラフィックボード GDDR6 12GB 【国内正規代理店品】 AR-B580D6-E12GB/DF | 玄人志向 | グラフィックボード 通販
玄人志向 Intel Arc B580 搭載 グラフィックボード GDDR6 12GB 【国内正規代理店品】 AR-B580D6-E12GB/DFがグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマ...
Amazon | ASUS AMD Dual Radeon RX 9060 XT 16GB GDDR6ビデオカード DUAL-RX9060XT-16G 国内正規代理店品 | ASUS | グラフィックボード 通販
ASUS AMD Dual Radeon RX 9060 XT 16GB GDDR6ビデオカード DUAL-RX9060XT-16G 国内正規代理店品がグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。...
Palit RTX 5060 Ti 16GB GDDR7 PCIe 5.0 グラフィックボード
Palit(パリット) GeForce RTX 5060 Ti Infinity 3 16GB / NE7506T019T1-GB2061S / グラフィックボードがグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お...

もし、メインメモリが大量にあるって人は8700Gもおもしろいかも。

Amazon | AMD Ryzen 7 8700G プロセッサ(統合Radeon Graphics.Ryzen AI 8コア/16スレッド.TDP 65W.ソケットAM5, 24MBキャッシュ.最大5.1GHzブースト周波数.レイスステルスヒートシンク付属) | AMD | CPU 通販
AMD Ryzen 7 8700G プロセッサ(統合Radeon Graphics.Ryzen AI 8コア/16スレッド.TDP 65W.ソケットAM5, 24MBキャッシュ.最大5.1GHzブースト周波数.レイスステルスヒートシンク付属...

以下は自分が使っているCPUですが・・・。
今はコスパが悪いのでオススメはできないです。
LLM推論なら、モデル次第ではまぁ我慢できる?

AMD Ryzen 9 7900 Desktop Processor
AMD Ryzen 9 7900, with Wraith Prism Cooler 3.7GHz 12コア / 24スレッド 76MB 65W 100-100000590BOXがCPUストアでいつでもお買い得。当日お急ぎ便対象商品は、当日...

コメント

タイトルとURLをコピーしました