<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Llama.cpp on soijoy.dev</title>
		<link>https://soijoy.dev/tags/llama.cpp/</link>
		<description>Recent content in Llama.cpp on soijoy.dev</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Tue, 15 Sep 2026 12:06:32 +0000</lastBuildDate>
		
			<atom:link href="https://soijoy.dev/tags/llama.cpp/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Ollamaとは何か？ ローカルLLM推論エンジンの比較</title>
				<link>https://soijoy.dev/notes/ollama-inference-engines/</link>
				<pubDate>Tue, 15 Sep 2026 12:06:32 +0000</pubDate>
				<guid>https://soijoy.dev/notes/ollama-inference-engines/</guid>
				<description>&lt;p&gt;ローカルLLMを動かすエンジンの一つ Ollama とは何か、そして代表的な推論ソフトの比較。基盤構築の初期に整理したもの。&lt;/p&gt;&#xA;&lt;p&gt;Ollamaは一言でいうと「複雑なローカルLLMの環境構築を極限まで簡略化し、使いやすいAPIとして提供するラッパー」。内部では C++製の軽量・高速な推論エンジン &lt;code&gt;llama.cpp&lt;/code&gt; が動いている。本来 &lt;code&gt;llama.cpp&lt;/code&gt; を直接扱うにはビルドやコマンドが必要だが、Ollamaはそれを隠蔽し、&lt;code&gt;ollama run モデル名&lt;/code&gt; というDockerのような手軽さで、モデルのダウンロードから実行、APIサーバー起動までを全自動でこなす。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;得意なモデル形式: GGUF（量子化モデル）&lt;/li&gt;&#xA;&lt;li&gt;主な役割: クライアント（Open WebUI等）からのプロンプトを受け取り、内部モデルで計算して回答を返すバックエンドエンジン&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;代表的な推論ソフトの比較&#34;&gt;&#xA;  代表的な推論ソフトの比較&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%bb%a3%e8%a1%a8%e7%9a%84%e3%81%aa%e6%8e%a8%e8%ab%96%e3%82%bd%e3%83%95%e3%83%88%e3%81%ae%e6%af%94%e8%bc%83&#34; aria-label=&#34;Link to 代表的な推論ソフトの比較&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;vllm&#34;&gt;&#xA;  vLLM&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#vllm&#34; aria-label=&#34;Link to vLLM&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;高速推論・サーバー用途で最強格。「PagedAttention」というメモリ管理で、Ollamaやllama.cppの数倍〜十数倍のスループット。OpenAI互換APIサーバーに最適。一方でVRAM消費が激しく、量子化モデル（GGUF等）対応は発展途上。構築難易度はやや高め。&lt;/p&gt;&#xA;&lt;h3 id=&#34;llamacpp直接実行&#34;&gt;&#xA;  llama.cpp（直接実行）&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#llamacpp%e7%9b%b4%e6%8e%a5%e5%ae%9f%e8%a1%8c&#34; aria-label=&#34;Link to llama.cpp（直接実行）&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Ollamaの内部でも使われるコアエンジンを直接操作する方法。オーバーヘッドがなく最軽量で、リソースを限界まで引き出せる。CPU/GPUの配分など細かいチューニングが可能。すべてCUIで、モデル管理も手動なので学習コストは高い。&lt;/p&gt;&#xA;&lt;h3 id=&#34;lm-studio&#34;&gt;&#xA;  LM Studio&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#lm-studio&#34; aria-label=&#34;Link to LM Studio&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Windows/MacでGUIがセットになったオールインワン。モデル検索→DL→チャットが専用アプリで直感的に完結し、初心者には最も簡単。ただしクローズドソースで、ヘッドレス運用（サーバーで常駐し別PCからアクセス）には不向き。&lt;/p&gt;&#xA;&lt;h3 id=&#34;text-generation-webuioobabooga&#34;&gt;&#xA;  Text-generation-webui（Oobabooga）&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#text-generation-webuioobabooga&#34; aria-label=&#34;Link to Text-generation-webui（Oobabooga）&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;超多機能・拡張性特化。GGUFに加えEXL2/AWQ/GPTQなどほぼ全形式・エンジンを切り替え可能で、パラメータ調整項目も最多。反面、UIが複雑で依存も多く、環境が壊れやすい。&lt;/p&gt;&#xA;&lt;h2 id=&#34;目的別のおすすめ&#34;&gt;&#xA;  目的別のおすすめ&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%9b%ae%e7%9a%84%e5%88%a5%e3%81%ae%e3%81%8a%e3%81%99%e3%81%99%e3%82%81&#34; aria-label=&#34;Link to 目的別のおすすめ&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;手軽さ・安定・汎用: Ollama（+ Open WebUI）&lt;/li&gt;&#xA;&lt;li&gt;超高速APIサーバー: vLLM&lt;/li&gt;&#xA;&lt;li&gt;マニアックな極限設定: llama.cpp&lt;/li&gt;&#xA;&lt;li&gt;色々な形式を試す: Oobabooga&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;この基盤でのその後&#34;&gt;&#xA;  この基盤でのその後&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#%e3%81%93%e3%81%ae%e5%9f%ba%e7%9b%a4%e3%81%a7%e3%81%ae%e3%81%9d%e3%81%ae%e5%be%8c&#34; aria-label=&#34;Link to この基盤でのその後&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;この整理の時点では Ollama + Open WebUI が最もバランスの良いモダン構成だったが、量子化やKVキャッシュ、GPUオフロードといった推論の低レベル制御を自分で握るため、最終的にこの基盤ではオーバーヘッドのない &lt;code&gt;llama.cpp&lt;/code&gt; 直叩き構成へ移行した（→ &lt;a href=&#34;https://soijoy.dev/projects/local-llm-server/&#34;&gt;プロジェクト概要&lt;/a&gt;&#xA;）。&lt;/p&gt;</description>
			</item>
			<item>
				<title>llama.cpp によるモデルの自作量子化（Quantization）</title>
				<link>https://soijoy.dev/notes/llama-cpp-quantization/</link>
				<pubDate>Tue, 15 Sep 2026 12:06:18 +0000</pubDate>
				<guid>https://soijoy.dev/notes/llama-cpp-quantization/</guid>
				<description>&lt;p&gt;Hugging Faceからオリジナル精度（FP16/BF16）の生の重み（Safetensors）を入手し、&lt;code&gt;llama.cpp&lt;/code&gt; の変換スクリプトで無圧縮のGGUF（FP16）を作成。そこからC++ネイティブの &lt;code&gt;llama-quantize&lt;/code&gt; で4bit（Q4_K_M）へ量子化し、自作した量子化モデルがV100で高速かつ論理破綻なく動くことを確認した記録。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提&#34;&gt;&#xA;  前提&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%89%8d%e6%8f%90&#34; aria-label=&#34;Link to 前提&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;作業ディレクトリ: &lt;code&gt;~/llama.cpp&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;対象モデル: Qwen2.5-7B-Instruct&lt;/li&gt;&#xA;&lt;li&gt;変換の流れ: Safetensors（生データ）→ FP16 GGUF（無圧縮）→ Q4_K_M（4bit量子化）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;1-生の重みデータsafetensorsを入手&#34;&gt;&#xA;  1. 生の重みデータ（Safetensors）を入手&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#1-%e7%94%9f%e3%81%ae%e9%87%8d%e3%81%bf%e3%83%87%e3%83%bc%e3%82%bfsafetensors%e3%82%92%e5%85%a5%e6%89%8b&#34; aria-label=&#34;Link to 1. 生の重みデータ（Safetensors）を入手&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;誰かが量子化済みのファイルではなく、公式配布のオリジナル精度の重みを取得する（約15GB）。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma retro-code&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/llama.cpp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hf download Qwen/Qwen2.5-7B-Instruct --local-dir models/Qwen2.5-7B-Instruct-Raw&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2-変換用のpython仮想環境venv&#34;&gt;&#xA;  2. 変換用のPython仮想環境（venv）&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#2-%e5%a4%89%e6%8f%9b%e7%94%a8%e3%81%aepython%e4%bb%ae%e6%83%b3%e7%92%b0%e5%a2%83venv&#34; aria-label=&#34;Link to 2. 変換用のPython仮想環境（venv）&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;現代のLinux（PEP 668）ではシステムのpipへ直接入れられないため、venvで隔離する。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma retro-code&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install python3-venv -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 -m venv llama-env&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; llama-env/bin/activate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;依存ライブラリは &lt;code&gt;requirements.txt&lt;/code&gt; でコケることがある。その場合はコアだけ直接入れる。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma retro-code&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install torch transformers gguf sentencepiece protobuf numpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;3-無圧縮gguffp16へ変換&#34;&gt;&#xA;  3. 無圧縮GGUF（FP16）へ変換&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#3-%e7%84%a1%e5%9c%a7%e7%b8%aegguffp16%e3%81%b8%e5%a4%89%e6%8f%9b&#34; aria-label=&#34;Link to 3. 無圧縮GGUF（FP16）へ変換&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;複数の &lt;code&gt;.safetensors&lt;/code&gt; を、&lt;code&gt;llama.cpp&lt;/code&gt; が扱える1つのGGUF（FP16, 無劣化）に結合する。&lt;/p&gt;</description>
			</item>
			<item>
				<title>llama.cpp ネイティブ環境構築とTesla V100フル稼働の記録</title>
				<link>https://soijoy.dev/notes/llama-cpp-native-v100/</link>
				<pubDate>Tue, 15 Sep 2026 16:00:00 +0900</pubDate>
				<guid>https://soijoy.dev/notes/llama-cpp-native-v100/</guid>
				<description>&lt;p&gt;Ollamaのようなラッパー（ブラックボックス）を排除し、C/C++ネイティブの &lt;code&gt;llama.cpp&lt;/code&gt; をソースからビルドして、Tesla V100（32GB）の性能を限界まで引き出す。エッジAI・組み込みAIの基礎になる「量子化」や「ローレベルな推論制御」を自分の手で握るためのベース環境を作った記録。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提環境&#34;&gt;&#xA;  前提環境&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%89%8d%e6%8f%90%e7%92%b0%e5%a2%83&#34; aria-label=&#34;Link to 前提環境&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OS: Ubuntu Server（Proxmox VM101）&lt;/li&gt;&#xA;&lt;li&gt;GPU: NVIDIA Tesla V100（VRAM 32GB）&lt;/li&gt;&#xA;&lt;li&gt;目的: AIのアーキテクチャ階層を直接操作し、フィジカルAI・エージェントAIの基盤技術（量子化・推論制御）を検証する&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;1-依存関係とcuda-toolkitの導入&#34;&gt;&#xA;  1. 依存関係とCUDA Toolkitの導入&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#1-%e4%be%9d%e5%ad%98%e9%96%a2%e4%bf%82%e3%81%a8cuda-toolkit%e3%81%ae%e5%b0%8e%e5%85%a5&#34; aria-label=&#34;Link to 1. 依存関係とCUDA Toolkitの導入&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;C++ソースからGPU用プログラムをコンパイルするため、ビルドツールとCUDA Toolkit（nvcc等）を導入する。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma retro-code&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ビルドツールと依存ライブラリ&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install build-essential cmake git -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# CUDA Toolkit（nvccコンパイラ等）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install nvidia-cuda-toolkit -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 確認（バージョンが出ればOK）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvcc --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2-llamacpp-のクローンとビルド&#34;&gt;&#xA;  2. llama.cpp のクローンとビルド&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;#2-llamacpp-%e3%81%ae%e3%82%af%e3%83%ad%e3%83%bc%e3%83%b3%e3%81%a8%e3%83%93%e3%83%ab%e3%83%89&#34; aria-label=&#34;Link to 2. llama.cpp のクローンとビルド&#34;&gt;&lt;span aria-hidden=&#34;true&#34;&gt;#&lt;/span&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;公式リポジトリを取得し、CUDA（GPU高速化）を有効化してネイティブバイナリをコンパイルする。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
