Hindsight のローカル計算資源分担と Docker コンテナ化デプロイ
技術ノート
公開 / DavidHLPL
本ページは Linux 上の Vectorize Hindsight の計算資源分担とコンテナ配置を記録する。出典は日常の推論・記憶アクセスをローカル実行したと報告し、GPU LLM + CPU Embedding、永続化権限、サービス寿命を扱う。完全オフラインには全モデルの cache と外部 provider 依存がないことの確認が必要。
範囲と確認(2026-09-08):2026-08-17 raw の v0.9.1 配置を保持する。その修訂では Compose、モデル import、健康検査を実行していない。Ollama は可変
rocmtag、driver、モデル revision/checksum、reranker は固定不十分で、そのまま再現できる版固定ではない。名称と成功は出典の報告で、現在の可用性は未確認。
1. 構成と実行トポロジー
計算基盤、記憶中枢、Agent 接続層からなる。Compose は公開 host port を 127.0.0.1 に bind するが、container 間は Compose network と ollama-gpu のサービス名を使う。全通信が host loopback を通るわけではなく、port bind は外向き通信を禁止しない。
flowchart TD
subgraph Agent_Layer["Agent クライアント接続層"]
OMP["OMP (Oh-My-Pi)<br/>ネイティブ memory.backend: hindsight<br/>+ FastMCP stdio ブリッジ"]
Codex["Codex CLI<br/>FastMCP stdio ブリッジ<br/>(hindsight-bridge.mjs)"]
end
subgraph Hindsight_Core["Hindsight 記憶ハブ (Docker)"]
API["Hindsight Core (固定 v0.9.1)<br/>API: :8888 | UI: :9999<br/>データ永続化: $HOME/.hindsight/data"]
FastMCP_EP["Streamable FastMCP エンドポイント<br/>/mcp/{project_bank}/"]
PG0["組み込み pg0 (PostgreSQL + pgvector)<br/>事実抽出 / エンティティグラフ / ベクトル索引"]
end
subgraph Local_Inference["ローカル推論エンジン (実行時ローカル)"]
OLLAMA["GPU LLM: Ollama ROCm (:11434)<br/>モデル: gemma4:12b (Q4_K_M GGUF)<br/>ハードウェア: AMD Radeon RX 6800/6900 XT"]
EMBED["CPU Embedding: Local Provider<br/>モデル: BAAI/bge-m3<br/>ハードウェア: Intel CPU (マルチスレッド推論)"]
end
OMP -->|自動 Recall / Retain / Reflect| API
OMP -.->|MCP ツール呼び出し| FastMCP_EP
Codex -->|"MCP JSON-RPC (stdio)"| FastMCP_EP
API --> FastMCP_EP
API --> PG0
API -->|LLM による事実抽出とリフレクション| OLLAMA
API -->|ベクトル埋め込み| EMBED
設計原則
- 資源分担:
- GPU LLM:出典はローカル別名
gemma4:12bを 12B Q4_K_M とし Fact Extraction/Reflection に使用。モデルの実体と VRAM は別途確認する。 - CPU Embedding:
BAAI/bge-m3を CPU に置いて VRAM 競合を減らす意図。任意の文脈長での安定動作の保証ではない。
- GPU LLM:出典はローカル別名
- データのローカル化:
- DB、Hugging Face cache、Ollama data を
$HOME/.hindsight/に mount。クライアントの会話記録や Docker log は一括管理されない。reranker と実行場所も Compose では明確に固定していない。
- DB、Hugging Face cache、Ollama data を
2. 配置手順
1. 永続ディレクトリと権限
出典のプロセス UID は 1000 で、mount への書き込みが必要。container 内 non-root と Docker Rootless は異なる。Rootless/user namespace は host UID 対応を変える(Docker Rootless)。過去の権限コマンドは、再 map なし、専用ディレクトリ、UID/GID 一致を確認した環境限定。共有データへそのまま使わない。
mkdir -p ~/.hindsight/data ~/.hindsight/models ~/.hindsight/ollama
# 権限設定:データとモデルのディレクトリをコンテナ UID 1000 の所有にする
sudo chown -R 1000:1000 ~/.hindsight/data ~/.hindsight/models
chmod -R u+rwX,g+rwX ~/.hindsight/data ~/.hindsight/models
2. Docker Compose(~/.hindsight/docker-compose.yml)
非対話環境の shell ~ 展開に頼らず、host path に ${HOME} または絶対パスを使う。
services:
# GPU LLM サービス:Ollama ROCm 経由でモデルをロード
ollama-gpu:
image: ollama/ollama:rocm
container_name: hindsight-ollama-gpu
restart: unless-stopped
ports:
- "127.0.0.1:11434:11434"
environment:
- HSA_OVERRIDE_GFX_VERSION=10.3.0 # AMD RDNA2 (gfx1030)
- ROCR_VISIBLE_DEVICES=0
- OLLAMA_KEEP_ALIVE=-1
devices:
- "/dev/kfd:/dev/kfd"
- "/dev/dri:/dev/dri"
volumes:
- ${HOME}/.hindsight/ollama:/root/.ollama
- ${HOME}/.hindsight/models:/models:ro
# Hindsight コアサーバー(Vectorize.io の固定バージョン)
hindsight:
image: ghcr.io/vectorize-io/hindsight:v0.9.1
container_name: hindsight-server
restart: unless-stopped
ports:
- "127.0.0.1:8888:8888" # API & MCP エンドポイント
- "127.0.0.1:9999:9999" # Web UI コンソール
environment:
# --- LLM プロバイダー (GPU) ---
- HINDSIGHT_API_LLM_PROVIDER=ollama
- HINDSIGHT_API_LLM_BASE_URL=http://ollama-gpu:11434/v1
- HINDSIGHT_API_LLM_MODEL=gemma4:12b
# --- Embedding プロバイダー (CPU) ---
- HINDSIGHT_API_EMBEDDINGS_PROVIDER=local
- HINDSIGHT_API_EMBEDDINGS_LOCAL_MODEL=BAAI/bge-m3
- HINDSIGHT_API_EMBEDDINGS_LOCAL_FORCE_CPU=true
# --- モデル重みの取得設定(初回取得は通信が必要、事前キャッシュ後はオフライン利用可能) ---
- HF_ENDPOINT=https://huggingface.co
- HINDSIGHT_API_LOG_LEVEL=info
volumes:
- ${HOME}/.hindsight/data:/home/hindsight/.pg0
- ${HOME}/.hindsight/models:/home/hindsight/.cache/huggingface
depends_on:
- ollama-gpu
3. GGUF import と別名登録
~/.hindsight/models/Modelfile を作る。
FROM /models/gemma-4-12b-it-Q4_K_M.gguf
TEMPLATE """{{ if .System }}<start_of_turn>system
{{ .System }}<end_of_turn>
{{ end }}{{ if .Prompt }}<start_of_turn>user
{{ .Prompt }}<end_of_turn>
{{ end }}<start_of_turn>model
{{ .Response }}<end_of_turn>
"""
PARAMETER stop "<start_of_turn>"
PARAMETER stop "<end_of_turn>"
PARAMETER num_ctx 8192
import と確認:
docker exec -i hindsight-ollama-gpu ollama create gemma4:12b -f /models/Modelfile
docker exec hindsight-ollama-gpu ollama list
3. 適用条件と境界
- ハードウェア:図の GPU と 16GB VRAM は例で、一般的最低条件や同世代互換の保証ではない。GPU、driver、ROCm/Ollama、量子化、文脈長に依存し、その修訂では機種行列を検証していない。
- ネットワーク:公開 host port は
127.0.0.1、container 間は内部網。未認証サービスを公開しない。 - 初回:weight は外部網または
~/.hindsight/modelsの事前 cache が必要。
4. 最小検証
docker psでhindsight-serverとhindsight-ollama-gpuの Up を確認。docker exec hindsight-ollama-gpu ollama psでgemma4:12bが GPU VRAM に全て載ることを確認。curl -I http://127.0.0.1:8888/healthが HTTP 200。
これは実施候補で、その修訂の結果ではない。Up は稼働のみ。ollama list はローカル一覧、ollama ps は実行中一覧(CLI 文書)。HTTP 健康は推論・書き込み・検索の代用ではない。短い depends_on は ready を待たない(Compose 起動順)。登録・準備後に E2E を行う。
5. 証拠と不確実性
- 出典報告:
hindsight-local-deployment-and-agent-integrationが配置成功と一回の検索を記録。Compose は/dev/kfd、/dev/dri、Hindsight v0.9.1 を使う。過去報告を今回の実測に昇格させない。 - 総合:資源分担、権限、Compose を独立 Concept に整理。
- 未確認:Ubuntu/Fedora/Arch 等で ROCm driver 導入が異なり host に合わせる。
6. 関連ページ
出典と関連文書
研究記録
- 元の文書: src/content/note/ja/hindsight-local-deployment.md
- 出典リビジョン: f49953fb0d4bd52a39bf81167b0c4b7dd7d78a64
- 証拠の状態: 有効