目安: 50分。演習の状態: 未実行 (not-run)。本文は学習ガイドであり、動作や品質の実測記録ではありません。

前提となる章: Hugging Faceとモデルファイルの読み方

独自の概念図。矢印は依存関係や判断の順序を示し、性能の実測を表さない。

  1. 1CPUかMLXを選ぶ
  2. 2依存と初回ダウンロードを確認
  3. 3上限付きの架空入力
  4. 4手動推論
  5. 5出力と未測定値を記録
順序と役割を、ひとつずつ分けて考える

学習目標

  • CPUとMLXの二つの経路を区別して試せる
  • 自動実行せずに準備と実行を分ける

仕事の役割

  • 学習者: 仮説・データ・評価を設計する
  • モデル: 指定した変換を試す
  • アプリ: 制限・検証・権限を保証する

入力 → 工程 → 出力

入力 工程 出力
短い架空テキストと確認済みの小型モデル tokenize→モデル読み込み→最大生成数を指定した推論 生成文、token数、実行条件、未測定を含む実験記録

初回は実行経路を一つだけ選ぶ

MacではMLX LMを使う経路、OSを問わず概念を確認したい場合はTransformersのCPU経路から選ぶ。Ollamaはモデル管理やローカルAPIを簡単に扱う候補、llama.cppはGGUFと推論設定を細かく扱う候補になる。最初から四つを入れる必要はない。

以下は教材用の未実行コードである。表示だけでは何もインストールされない。Pythonと実行環境が対応していること、配布元とライセンス、空きディスク、ネットワーク通信を確認してから、読者が選んだ手順のみを手動で行う。初回のfrom_pretrained/loadはモデルをダウンロードする。

CPU例は Qwenモデルカードのchat templateと生成の経路 を基に、CPUを明示して生成上限を小さくしたもの。コミュニティ変換版カード はMLX版の来歴を示し、MLX LM公式の利用資料がCLIの根拠になる。本教材ではどちらのモデルも取得・実行していない。

短い入力と出力で確認する

まず架空の製品説明の要約など、個人情報を含まない短文を使う。CPU例は0.5Bに限定し、入力512token以下、出力64token以下とする。モデル全体はCPUに置き、device_map=autoによる予期しないデバイス割り当てを避ける。速度を競うためではなく、処理経路の確認用である。

MLX例も同じ小型モデルの4bit変換版を使い、出力128tokenに制限する。入力が短くても、メモリ使用量と実行時間を観察する。終わらない、メモリプレッシャーが悪化する、応答しない場合は中止し、上位モデルへ進まない。

成功とは何かを狭く定義する

成功はモデルIDと設定を記録できたこと、短い生成が返ったこと、資源消費を観察できたことである。回答が正しいか、日本語用途で十分か、複数利用者を捌けるかは次の評価で確かめる。未実行コードは実機確認済みと表示しない。

ローカルAPIを公開する場合も、最初は127.0.0.1のみにbindする。インターネットやLANへの公開、認証なしの利用、外部ログサービスへの送信は初回演習に含めない。ローカルアプリでもクラウド機能やtelemetryの設定は別に確認する。

手動で試すコード例

以下は未実行の例です。コピーやページの閲覧では実行されません。依存導入・モデルの初回ダウンロード・学習を伴う行は、容量、ライセンス、実行環境を確認してから自分で選んで実行してください。

環境準備:CPU経路を選ぶ場合のみ

状態: 未実行 (not-run)。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install torch transformers
python -m pip freeze > environment-cpu.txt

公式PyPIの依存導入を伴う。版は実行時に記録し、再現実験では検証済み環境を固定する。

Transformers CPUの最小推論

状態: 未実行 (not-run)。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "Qwen/Qwen2.5-0.5B-Instruct"
torch.set_num_threads(4)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=False)
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=False).to("cpu")
model.eval()
messages = [{"role": "user", "content": "架空の製品説明です。青いノートは80ページです。一文で要約してください。"}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt")
assert inputs["input_ids"].shape[-1] <= 512, "入力が長すぎます"
with torch.inference_mode():
    output = model.generate(**inputs, max_new_tokens=64, do_sample=False)
new_tokens = output[0, inputs["input_ids"].shape[-1]:]
print(tokenizer.decode(new_tokens, skip_special_tokens=True))
print({"input_tokens": inputs["input_ids"].shape[-1], "output_tokens": len(new_tokens)})

CPU上のfloat型・最適化はライブラリ版に依存。最新mainを再現可能な版だと思わず、初回検証後にrevisionを固定する。

Apple Silicon:MLX経路を選ぶ場合のみ

状態: 未実行 (not-run)。

python3 -m venv .venv-mlx
source .venv-mlx/bin/activate
python -m pip install mlx-lm
mlx_lm.generate --help
mlx_lm.generate --model mlx-community/Qwen2.5-0.5B-Instruct-4bit --prompt "青いノートは80ページです。一文で要約してください。" --max-tokens 128
python -m pip freeze > environment-mlx.txt

Apple Silicon対応環境が必要。公開モデルIDを指定しているため初回はダウンロードする。全行を自動実行するUIにしない。

自分で進める工程

  1. 公式Python環境と対応OSを確認する
  2. 専用venvを用意する
  3. CPUかMLXを一つ選んで依存関係を導入する
  4. コードを読み、初回ダウンロードを理解して実行する
  5. 環境のpackage一覧とモデルrevisionを保存する

品質を確認する

  • CPUとMLXの二つの経路を区別して試せる
  • 自動実行せずに準備と実行を分ける
  • 「実行できた」と「正確だった」を別欄にしたか

失敗を切り分ける

注意すること 具体的な確認方法
この教材作成時には実行していない 自分で実行して環境と出力を残すまでは、未実行の例として扱う。
エラー時に不明なインストールスクリプトやremote codeを追加しない モデルと公式ランタイムの要件を確認し、不明なコードは実行を許可する前に読む。

演習: 小さなLLMをローカルで動かす

状態: 未実行 (not-run)。

同じ短文を要約させ、事実を足したか・省きすぎたかを目視で確認する

提出するもの: 原文、出力、モデル情報、設定、観察記録

完了の確認: 「実行できた」と「正確だった」を別欄にしたか

実験記録用ワークシートに計画・条件・観察を記録する。未測定値は null とし、推定値は式と仮定を残します。

MENTAL MODEL / メモリ

モデルの重さを、分けて考える。

重みとKVキャッシュは別々に増える。下の値は設計用の概算です。

4.5 GB重み 4.0 GB + KV 0.5 GB

GBは10⁹ byte。KVは32層・8 KV heads・128 head dim・FP16・batch 1の仮定。量子化メタデータ、実行バッファ、OS、モデル固有の構造は別途必要。MoEでは総重みとactive parametersを分けます。

出典

公開日は資料の日付、確認日は内容を参照した日です。コミュニティの観測は公式の確定事項と区別します。

01
Qwen2.5-0.5B-Instruct モデルカード ↗huggingface.co公開: 不明 · 確認: 2026-10-03
02
MLX変換版 Qwen2.5-0.5B-Instruct-4bit ↗huggingface.co公開: 不明 · 確認: 2026-10-03
03
MLX LM 公式リポジトリ公開: 不明 · 確認: 2026-10-03
04
Transformers Auto classes ↗huggingface.co公開: 不明 · 確認: 2026-10-03
05
Ollama FAQ ↗docs.ollama.com公開: 不明 · 確認: 2026-10-03
06
llama.cpp 公式リポジトリ公開: 不明 · 確認: 2026-10-03
このブラウザ内に保存します。