Jetson NanoでQwen2.5-3Bを動かす方法
目次
ARM Ubuntu × llama.cpp 導入トラブル完全対策
Jetson NanoでローカルLLMを動かそうとして、
「手順通りにやったのに動かない」「原因が分からず時間だけ溶ける」
そんな経験はありませんか?
この記事では、Jetson Nano(ARM Ubuntu)環境で Qwen2.5-3B Instruct を llama.cpp(CPU推論)で確実に動かすまでを、
実際に発生したトラブルとその回避策を中心に解説します。
対象読者
- Jetson NanoでローカルLLMを動かしたい方
- ARM Ubuntu環境でllama.cppを使いたい方
- Hugging Face CLIやPython環境でつまずきたくない方
構成概要(ゴール)
- LLM:Qwen2.5-3B Instruct(GGUF / q3_k_m)
- 推論エンジン:llama.cpp(CPU推論)
- 実行環境:Jetson Nano / ARM Ubuntu
Step 1:Jetson Nanoでllama.cppを最小構成ビルドする
sudo apt update
sudo apt install -y git build-essential cmake python3-pip
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -S . -B build -DGGML_CUDA=OFF
cmake --build build -j$(nproc)
この構成を選ぶ理由
- Jetson Nanoでは CUDAを使わない方が安定
- CPU推論+量子化モデル前提の構成
Step 2:llama.cppとモデルを分離して配置する
推奨ディレクトリ構成
~/models/
└── llm/
├── llama.cpp/
└── qwen2.5-3b/
└── qwen2.5-3b-instruct-q3_k_m.gguf
分離するメリット
- 作業ディレクトリ依存の事故を防げる
- 再ビルド・再DL時に迷わない
- モデル差し替えが容易
Step 3:Hugging Face CLIがJetson Nanoで失敗する原因
実際に起きた問題
huggingface-cliが見つからないpython -m huggingface_hubが環境差で失敗- Python環境の不整合で作業が破綻
結論
CLIは使わない。URL直ダウンロードが最も確実。
Step 4:Qwen2.5-3Bを確実にダウンロードする方法
sudo apt install -y aria2
mkdir -p ~/models/llm/qwen2.5-3b
aria2c -c -x 8 -s 8 \
-d ~/models/llm/qwen2.5-3b \
-o qwen2.5-3b-instruct-q3_k_m.gguf \
https://huggingface.co/Qwen/Qwen2.5-3B-Instruct-GGUF/resolve/main/qwen2.5-3b-instruct-q3_k_m.gguf
この方法が安定する理由
- Python不要
- 認証不要
- 途中失敗しても再開可能
Step 5:libmtmd.so が見つからないエラーの対処
症状
error while loading shared libraries: libmtmd.so.0
原因
- llama.cppが
build/binに共有ライブラリを生成 - 動的リンカがその場所を見ていない
恒久対策(推奨)
echo "$HOME/models/llm/llama.cpp/build/bin" | sudo tee /etc/ld.so.conf.d/llama-cpp.conf
sudo ldconfig
Step 6:--interactive が使えない場合の対処
原因
- llama.cppの引数仕様が変更されている
--interactive非対応ビルド
正しい実行例
~/models/llm/llama.cpp/build/bin/llama-cli \
-m ~/models/llm/qwen2.5-3b/qwen2.5-3b-instruct-q3_k_m.gguf \
-p "こんにちは。自己紹介して。"
Step 7:モデルが見つからないときの確認方法
よくある原因
models/配下に vocabだけ存在.gguf本体を別ディレクトリに置いている
確認コマンド
find ~ -name 'qwen2.5-3b-instruct-*.gguf'
成功条件チェックリスト
.gguf本体が存在する-mに 絶対パスを指定しているldconfigを実行済み--interactiveを使っていない
まとめ
Jetson Nanoでつまずく本質的な原因
- Python環境の分裂
- 作業ディレクトリ依存
- llama.cppの引数仕様変更の見落とし
最も安定する考え方
- モデルはURL直ダウンロード
- llama.cppは独立ディレクトリ管理
- 共有ライブラリはOSに登録
- 実行前に必ず
-hを確認
コメント