プロジェクト

全般

プロフィール

機能 #415

完了

機能 #396: ゲーム内常駐ペット育成機能の追加

自然文曲検索用ローカルLLMモデルの同梱・パッケージングと実モデル動作検証 (#404 follow-up)

機能 #415: 自然文曲検索用ローカルLLMモデルの同梱・パッケージングと実モデル動作検証 (#404 follow-up)

エージェント ちゃん さんが11日前に追加. 11日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/24
期日:
2026/06/24
進捗率:

100%

予定工数:

説明

背景 / 目的

#404(自然文による曲検索)のフォローアップ。#404 では検索ロジック+API層を実装済みだが、ローカルLLM(de.kherud:llama / GGUF)のモデルファイル本体は未同梱で、未配置時は常にルールベースへフォールバックする状態。LLM経路を実際に有効化・検証し、リリース物に含めるための作業を本チケットで扱う。

作業内容

  • 推奨する小型GGUF Instructモデル(例: Qwen2.5-0.5B/1.5B-Instruct Q4等)の選定とライセンス確認
  • jpackage / zip・msi へのモデル同梱(build.gradle の prepareJpackageContent 等)と配置パス規約(-Dbeatoraja.songsearch.model)の確定
  • LlamaCppInference の防御的リフレクション実装(TODO #404)を de.kherud:llama の実 API に合わせて確定
  • 推論のスレッドモデル化:選曲画面でのロード/推論をバックグラウンドスレッドで実行し、ゲームプレイ中(judgeタイミング)に影響させない
  • 実Windowsホストでの実モデル動作検証(代表クエリでの出力品質・CPU/メモリ/ロード時間・GPU使用の有無)
  • CPU推論を既定とし、GPUオフロードを使う場合はレンダリング(libGDX/LWJGL3)との競合評価

完了条件 (DoD)

  • リリース物にモデルが同梱され、代表的な自然文クエリでLLM経路が期待どおり動作する
  • モデル未同梱/ロード失敗時は従来通りルールベースにフォールバックし例外が生じない
  • 推論がゲームプレイ中の動作(judgeタイミング・フレーム)に影響を与えない
  • ユニットテストがすべて通る

関連するチケット 1 (0件未完了1件完了)

次のチケットに後続 beatoraja - 機能 #404: 自然文による曲検索完了いづ さん2026/06/23

操作

エージェント ちゃん さんが11日前に更新 操作 #1

  • 期日2026/06/24 にセット
  • 開始日2026/06/25 から 2026/06/24 に変更
  • 次のチケットに後続 機能 #404: 自然文による曲検索 を追加

エージェント ちゃん さんが11日前に更新 操作 #2

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

実装に着手しました。

  • ブランチ: feature/415
  • 対応方針: ローカルLLM経路を実有効化する。de.kherud:llama 4.1.0 の実API(LlamaModel(ModelParameters) / InferenceParameters)に合わせて LlamaCppInference のリフレクションを確定し、CPU推論を既定・モデルロード/推論をバックグラウンドスレッド化(選曲/judgeに非干渉)。モデル本体(Qwen2.5-1.5B-Instruct Q4_K_M, Apache-2.0)はビルド時DLで zip/msi に同梱し、配置パスは -Dbeatoraja.songsearch.model(既定 model/)。未同梱/失敗時は従来通りルールベースへフォールバック。実Windowsホストでベストエフォート動作検証。

エージェント ちゃん さんが11日前に更新 操作 #3

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

対応が完了しました。

概要

#404 のフォローアップとして、自然文曲検索のローカルLLM(de.kherud:llama)経路を実有効化。モデル同梱・スレッド化・設定UI・精度/速度改善・LoRA微調整までを実装し、未配置/失敗時はルールベースへフォールバックしてjudgeに干渉しない。

変更点

  • LLM経路の実有効化: de.kherud:llama 4.1.0 の実API(LlamaModel(ModelParameters)/InferenceParameters)に合わせて防御的リフレクションを確定。CPU推論既定、ロード/推論をバックグラウンドスレッド化。
  • モデル同梱: Qwen2.5-1.5B-Instruct Q4_K_M(Apache-2.0)をビルド時DLで zip/msi の model/ に同梱(SHA-256照合)。配置パスは -Dbeatoraja.songsearch.model
  • 設定UI: 選曲コンフィグにモデル選択 ComboBox(model/ 内 *.gguf 自動検出・Config永続化)。
  • 精度改善(A): ルール辞書/正規表現拡張+ルール明示シグナル優先でLLM出力をマージする HybridQueryInterpreter
  • 速度改善(C): ルールが十分抽出できたクエリはLLMを呼ばず即返すショートサーキット。ctx縮小・setCachePrompt/flashAttn。
  • パターン語彙(B): GBNF文法とプロンプトに patternWeights(縦連→JACK 等)を露出。
  • 意味照合(E, オプトイン): textScore を SemanticTextScorer で差し替え可能化。埋め込みモデル指定時のみ意味照合、未指定は従来挙動。
  • LoRA(D): 学習用 tools/songsearch-lora/(合成データ生成+PEFT/TRL学習+GGUF変換)。model/*lora*.gguf を自動検出し base に適用(exe運用でフラグ不要)、ビルドで app-image に同梱。

テスト

  • .\gradlew.bat test : 成功(JavaFXスモーク含むフルスイート緑)。
  • 実Windowsホスト検証: 20件の日本語ゴールデンセットで rule-only 63.9% / llm-only 44.4% → hybrid 100%。LoRA適用で llm単体 74%→100%・3638ms→2504ms

関連 MR

  • !97 (feature/415 → develop) マージ済

他の形式にエクスポート: PDF Atom