
モデル2B が軽さと性能で最高

環境
| 項目 | 内容 |
|---|---|
| マシン | iMac 5K Late 2015 |
| RAM | 24GB |
| GPU | AMD Radeon R9 M380(Metal tensor API 非対応世代) |
| OS | macOS Monterey(darwin21.6.0) |
| 外付けUSB | USB64BLACK(64GB、空き約47GB) |
| llama.cpp | build b8925 |
| モデル | Qwen3.5-0.8B / 2B(Q4_K_M、Unsloth GGUF) |
方針
- macOS本体のSSDが逼迫しているため、llama.cppのビルド成果物・モデルファイルはすべてUSBに置く
- AMD Radeon R9 M380はMetalのtensor APIが無効(pre-M5チップ制限)のため、CPU onlyで動作させる(
-ngl 0)
手順
1. 前提ツールの確認
xcode-select --print-path
# → /Library/Developer/CommandLineTools が出ればOK
clang --version
# → Homebrew clang version 21.x.x などが出ればOK
cmake --version
# → cmake version 4.x.x が出ればOK
2. USB上に作業ディレクトリを作成
mkdir -p /Volumes/USB64BLACK/llama
mkdir -p /Volumes/USB64BLACK/models
sudo chmod -R 777 /Volumes/USB64BLACK/llama/
sudo chmod -R 777 /Volumes/USB64BLACK/models/
3. llama.cpp をホームにcloneしてUSBに移動
cd ~
git clone https://github.com/ggerganov/llama.cpp
mv llama.cpp/ /Volumes/USB64BLACK/llama/
4. ビルド(Metal有効指定、実際はCPU動作)
cd /Volumes/USB64BLACK/llama/llama.cpp
cmake -B build -DLLAMA_METAL=on
cmake --build build --config Release -j$(sysctl -n hw.logicalcpu)
ビルドには10〜15分程度かかる。完了すると build/bin/llama-cli などが生成される。
※ LLAMA_METAL=on は deprecated で GGML_METAL が推奨だが動作には問題なし。AMD Radeon R9 M380は has tensor = false となりMetalのtensor APIは無効化されるが、ビルド自体は成功する。
5. huggingface_hub のインストール確認
python3 -m pip install --break-system-packages huggingface_hub
6. モデルダウンロード(HFキャッシュもUSBへ)
Qwen3.5-0.8B(約533MB)
HF_HOME=/Volumes/USB64BLACK/.hf_cache \
huggingface-cli download \
unsloth/Qwen3.5-0.8B-GGUF \
Qwen3.5-0.8B-Q4_K_M.gguf \
--local-dir /Volumes/USB64BLACK/models/qwen3.5-0.8b
Qwen3.5-2B(約1.28GB)
huggingface-cli download \
unsloth/Qwen3.5-2B-GGUF \
Qwen3.5-2B-Q4_K_M.gguf \
--local-dir /Volumes/USB64BLACK/models/qwen3.5-2b
7. 動作確認
0.8Bモデル
/Volumes/USB64BLACK/llama/llama.cpp/build/bin/llama-cli \
-m /Volumes/USB64BLACK/models/qwen3.5-0.8b/Qwen3.5-0.8B-Q4_K_M.gguf \
-n 1024 \
--temp 0.7 \
-ngl 0 \
--reasoning off \
-p "日本語で自己紹介してください。"
2Bモデル
/Volumes/USB64BLACK/llama/llama.cpp/build/bin/llama-cli \
-m /Volumes/USB64BLACK/models/qwen3.5-2b/Qwen3.5-2B-Q4_K_M.gguf \
-n 1024 \
--temp 0.7 \
-ngl 0 \
--reasoning off \
-p "日本語で自己紹介してください。"
ハマりポイントまとめ
| 症状 | 原因 | 解決策 |
|---|---|---|
GGML_ASSERT(buf_src) failed でクラッシュ |
AMD Radeon R9 M380がMetalのtensor APIに非対応 | -ngl 0 でGPUレイヤー数をゼロにしてCPU動作 |
[Start thinking] が出て回答が遅い・長い |
Qwen3.5はデフォルトでthinkingモード | --reasoning off を追加 |
--no-thinking --hidethinking でエラー |
これらはollamaのオプション。llama.cppには存在しない | --reasoning off が正しい |
--chat-template-kwargs '{"enable_thinking":false}' が効かない |
このバージョンのllama.cppでは未対応 | 同上、--reasoning off を使う |
| 回答が途中で切れる | -n 256 でトークン数が不足 |
-n 1024 以上に増やす |
速度(CPU only、参考値)
| モデル | Prompt速度 | 生成速度 |
|---|---|---|
| 0.8B Q4_K_M | 約89〜108 t/s | 約18〜20 t/s |
| 2B Q4_K_M | 約55〜127 t/s | 約11〜20 t/s |
USB使用量(参考)
| 内容 | サイズ |
|---|---|
| llama.cpp clone + build | 約500MB |
| Qwen3.5-0.8B Q4_K_M | 533MB |
| Qwen3.5-2B Q4_K_M | 1.28GB |
| HFキャッシュ等 | 約100MB |
| 合計 | 約2.5GB |
今後の展開
- Fedora 42(PT6サーバー)への移植
llama-serverでOpenAI互換APIサーバー化 → ReactフロントのApp.jsから利用- Raspberry Piでの0.8B動作確認
Loading model...
▄▄ ▄▄
██ ██
██ ██ ▀▀█▄ ███▄███▄ ▀▀█▄ ▄████ ████▄ ████▄
██ ██ ▄█▀██ ██ ██ ██ ▄█▀██ ██ ██ ██ ██ ██
██ ██ ▀█▄██ ██ ██ ██ ▀█▄██ ██ ▀████ ████▀ ████▀
██ ██
▀▀ ▀▀
build : b8925-0adede866
model : Qwen3.5-2B-Q4_K_M.gguf
modalities : text
available commands:
/exit or Ctrl+C stop or exit
/regen regenerate the last response
/clear clear the chat history
/read <file> add a text file
/glob <pattern> add text files using globbing pattern
> 南京大虐殺について責任の所在も踏まえて詳しく教えて。
南京大虐殺(1937 年 12 月 13 日)は、中国の南京市民を虐殺し、約 37 万人を殺害した事件です。この事件について、歴史的事実、責任の所在、そしてその後の国際社会的な反応を詳しく整理します。
### 1. 基本的な事実と状況
1937 年 12 月 13 日、日本軍が侵攻し南京を占領した直後、南京国民政府は「市民保護のため」の理由から、南京の中華街(紅樓門)を警戒に置きました。日本軍は南京市民を大量に殺害しました。
* **死亡者数**: 確認されている死者は約 37 万人(少なくとも 370,000 人)です。
* **犠牲者**: 中国市民、抗日軍員、日本兵の多くが犠牲となりました。
* **原因**: 日本軍の過激な攻撃、国民政府の警戒体制、および日本軍の指揮命令系統の混乱が背景にあります。
### 2. 責任の所在
この事件については、国際的には明確な責任の所在が認定されています。
#### 日本側の責任
* **国際法違反**: 1937 年 9 月の国際連盟総会において、「侵略は不可逆的な戦争であり、侵略国の国民に対する人道主義的措置は行わない」という決議を採択した上で、日本軍が侵略行為を開始したと認定されています。
* **責任の所在**: 国際法(特に国際人道法)に基づき、日本軍による過剰な攻撃、虐殺行為、および侵略の責任は、**日本軍全体**に問われるべきものとされています。特に、日本の最高指導者である**東条英機大将**は、日本軍の侵略行為に対する責任を自らの責任として負わされ、後に死刑を宣告されました。
#### 中国側の責任
* **警戒体制の欠如**: 南京市民の生存を保障するため、中国軍と国民政府は警戒体制を構築しました。しかし、この体制は日本軍の過剰な攻撃に対する対応に遅れ、結果として大量の犠牲者を生みました。
* **国際社会的な評価**: 国際的な歴史認識と公の認識では、南京大虐殺は**日本軍の過激な攻撃**に起因する事件とされ、中国側が責任を独自に負うことはなかったとされています。
### 3. 国際社会的な反応
この事件は、国際社会の良心を揺るがす重大な事件となりました。
* **国際連盟の介入**: 国際連盟は、日本軍による侵略行為と虐殺行為を認定し、日本に対して制裁措置を講じるよう求めました。
* **国際裁判の提起**: 1937 年、国際連盟は南京大虐殺を認定した上で、日本軍を裁くための国際裁判(国際連盟裁判所)を設立しました。日本軍はこれを拒否しましたが、その後の国際司法裁判所(ICC)の設立過程でこの事件が国際法上の重大な違反として扱われるようになりました。
* **歴史的記憶**: 南京大虐殺は、人類史上最も悲惨な戦争の一幕として記憶され、平和と人道的な価値を再考するきっかけとなりました。
### 4. 結論
南京大虐殺について、以下の点が重要です。
1. **責任の所在**: 日本軍による侵略行為と過激な攻撃が主原因であり、その責任は**日本軍(特に東条英機大将など最高指導者)に問われるべき**。中国側の警戒体制の欠如は、日本軍の過剰な攻撃に対する対応に遅れ、結果として犠牲を生ませた要因ですが、日本軍の主要な責任は負わされました。
2. **国際評価**: 国際連盟および国際司法裁判所などの国際的機関によって、日本軍は侵略行為と虐殺行為として認定され、その責任が認定されました。
3. **歴史的意義**: この事件は、人類が戦争の悲惨さを学び、平和と人道的価値を再考する重要な歴史的節目となりました。
この事件は、戦争の悲惨さと国際法違反の深刻さを示す最も有名な事例の一つであり、今後も歴史の教科書や国際社会の記憶として重要な位置を占めています。
[ Prompt: 54.8 t/s | Generation: 10.2 t/s ]
>
0.8Bモデルは正確性が足りない
応答は速いけど、日付とか肝心なところが違ってくるので、歴史には向かないかな。コードは書かせてもいいかもしれない。

> 南京大屠殺について教えて。

bitFlyer口座開設(ビットコイン1,000円もらえる)URL
