ジョブの排他制御
Inkubus はローカル LLM(Ollama)と GPU を単一リソースとして扱い、AI を動かす次の 8 つの処理を 同時 1 件までに絞っています。どれか 1 つが走っている間、他は開始できません。
01 全体像
小説生成、キャストの AI、ひらめき、製本の紹介文とキーワード、推敲、チャットは、どれも同じ Ollama / GPU を使います。同時に走れるのは 1 つだけです。これで、画像を読む処理と小説生成が同時に走って GPU を取り合う事故を防いでいます。どの処理も生成中に画面を閉じてかまいません(裏で続き、終わると結果が保存されます)。
AI 1〜AI 4 はキャストの画面で AI に頼めることです(キャストガイド — AI の関係)。v3.1.0 までは、AI 2 と AI 3 をまとめて「Magic Pen」と呼んでいました。
02 対象の 8 処理
| 処理 | どこから | 所要時間の感覚 |
|---|---|---|
| 小説生成(続編・おまけを含む) | 新規実行画面 · 小説ビュー | 長時間(章数 × 1 章の生成 + α) |
| キャストの AI 1 画像を読む | キャスト画面 | 短〜中時間(モデルと GPU 次第) |
| キャストの AI 2 名前を考える · AI 3 プロフィールを書く · AI 4 学生証に必要な情報を考える | キャスト画面 | 短〜中時間 |
| ひらめき(作品案づくり) | ひらめき画面 | 短〜中時間(個数ぶん) |
| 紹介文の生成 | 製本画面 | 短〜中時間 |
| 推敲(タイトルを付け直す) | 小説ビュー | 短〜中時間 |
| キーワードの生成 | 製本画面(出版の準備) | 短〜中時間 |
| チャット(会話の準備 · 人物をつくる · 返事) | チャット画面 | 返事は短時間。会話の準備は本文の長さ次第 |
具体的な秒数はマシン構成・モデルサイズに大きく左右されるので明記していません。目安は生成速度の目安にまとめています。
- AI 2 · AI 3 · AI 4 は同じ 1 枠を分け合います。名前を考えてもらっている間はプロフィールを書いてもらえませんし、その逆も同じです。ジョブ画面の履歴では キャスト AI 2 名前を考える のように、大きい分類と中身の 2 段で並びます。
- チャットは、会話の準備(キャラシートと最初のひと言)・人物をつくるで人物をつくる(おまかせでつくる · この人でつくる)・返事を書く、のあいだ枠を使います。チャットの「小説にする」は新規実行画面へ文章を渡すだけなので、それ自体は AI を動かしません。
03 ブロックの仕方
どれか 1 つが走っているあいだは、ほかの 7 つは始められません。
- ヘッダーに実行中の印が出ます。押すと、その処理の画面(またはジョブ画面)へ移れます。
- 各画面の AI を動かすボタンは押せなくなり、「◯◯が実行中のため開始できません」と出ます(どれくらい待っているかも出ます)。
- チャットでは、ほかの処理が走っているあいだは返事を頼めません。
- 処理が返ってこないまま残ったときは、設定画面の「LLM 排他フラグ」から解放できます(打ち切りまでの時間)。
04 キューの自動再開
小説生成キューを積んでいる途中に、ほかの AI 処理(キャストの AI · ひらめき · 紹介文 · 推敲 · キーワード · チャット)を挟むと、キューは次の作品を始めずに待ちます。それらが終わると、待っていた小説生成キューが自動で再開します。手動で再開ボタンを押す必要はありません。寝る前に小説生成キューを積み、起きてからキャストの画像登録やチャットを進める運用でも、合間に小説生成が進むので GPU を遊ばせずに済みます。