kawaimasa's picture
Update README.md
3104bb8 verified
metadata
license: apache-2.0
language: ja
tags:
  - japanese
  - text-generation
  - novel-writing
  - mistral
pipeline_tag: text-generation

wanabi-24B (preview)

wanabi-24B は、小説執筆支援に特化してファインチューニングされた大規模言語モデルの プレビュー版 (preview) です。

このモデルは、mistralai/Mistral-Small-24B-Base-2501 をベースとし、日本語の小説関連テキストデータを用いて学習されました。特に、小説のアイデア出し、設定に基づいた本文生成、文脈に沿った続きの生成といったタスクを得意とします。

アルファ版に関する注意:

  • 概念実証 (Proof of Concept): 本バージョンは機能検証を目的としています。
  • 限定的な学習: 学習はデータセットの内 1500 ステップ(plusは2000step bs24)のみ行われています。
  • 提供形式: 現在、GGUF (Q4_K_M) 形式のみ提供しています。
  • 特性: わずか 1500 ステップのファインチューニング! その結果、ベースモデルの広範な知識が(良くも悪くも)色濃く残っています。ある意味、今後のバージョンの中で最も「博識」なモデルになることをお約束します。小説家としては……今後のモデルに期待しましょう。

今後の改善にご期待ください。

🚀 Project Wannabe との連携

このモデルは、専用のデスクトップアプリケーション Project Wannabe と連携して使用することを強く推奨します。Project Wannabe は、wanabi-24B の能力を最大限に引き出すための GUI を提供し、アイデア生成から本文執筆、継続生成(無限生成)までをシームレスにサポートします。

Project Wannabe を使用することで、以下で説明するプロンプト形式を意識することなく、モデルの機能を活用できます。

💻 学習の詳細

ベースモデル

学習フレームワーク

学習手法

  • QLoRA (4-bit)
    • lora_rank: 128
    • lora_alpha: 256
    • lora_dropout: 0
    • lora_target: all (全ての線形層)
  • 精度: bf16
  • 最適化:
    • PagedAdamW (8-bit)
    • Flash Attention 2
    • Unsloth Gradient Checkpointing (use_unsloth_gc: true)
    • Liger Kernel (enable_liger_kernel: true)
  • 学習パラメータ:
    • learning_rate: 3.0e-5
    • lr_scheduler_type: cosine_with_restarts (num_cycles: 5)
    • warmup_ratio: 0.03
  • その他:
    • cutoff_len: 32768
    • per_device_train_batch_size: 1
    • gradient_accumulation_steps: 24

📝 学習データとタスク

日本語の小説関連テキストデータを用いて、以下の3つの主要なタスク形式で Instruction Tuning (SFT) を行いました。

  1. 本文生成 (GEN):

    • 目的: 指示と任意で与えられるメタデータ(タイトル、キーワード、ジャンル、あらすじ、設定、プロット)に基づいて小説本文を生成します。
    • 形式例 (メタデータあり):
      <s>[INST] 以下の情報に基づいて小説本文を生成してください。
      
      # タイトル:
      異世界転生したら野良犬だった件
      
      # キーワード:
      異世界転生
      犬 [/INST] {生成される本文} </s>
      
    • 形式例 (メタデータなし):
      <s>[INST] 自由に小説を生成してください。 [/INST] {生成される本文} </s>
      
  2. 続き生成 (CONT):

    • 目的: 与えられた本文の続きを、任意で与えられるメタデータを参考にしながら生成します。
    • 形式例 (メタデータあり):
      <s>[INST] 参考情報を基に以下の文章の続きを生成してください。
      
      【本文】
      ```
      通り魔に刺されて死んだと思ったら、異世界で野良犬に転生していた。
      ```
      【参考情報】
      ```
      # タイトル:
      異世界転生したら野良犬だった件
      
      # キーワード:
      異世界転生
      
      追放
      ``` [/INST] {生成される続きの本文} </s>
      
    • 形式例 (メタデータなし):
      <s>[INST] 以下の文章の続きを生成してください。
      
      【本文】
      ```
      通り魔に刺されて死んだと思ったら、異世界で野良犬に転生していた。
      ``` [/INST] {生成される続きの本文} </s>
      
  3. アイデア生成 (IDEA):

    • 目的: 任意で与えられるメタデータの一部(または無し)から、完全な小説のアイデア(タイトル、キーワード、ジャンル、あらすじ、設定、プロット)を生成します。
    • 形式例 (一部メタデータあり):
      <s>[INST] 以下の情報に基づいて、完全な小説のアイデア(タイトル、キーワード、ジャンル、あらすじ、設定、プロット)を生成してください。
      
      # キーワード:
      異世界転生
      犬 [/INST] # タイトル:
      異世界転生したら野良犬だった件
      
      # キーワード:
      異世界転生
      犬
      追放
      恋愛
      NTR
      
      # ジャンル:
      異世界ファンタジー
      ローファンタジー
      
      # あらすじ:
      通り魔に刺されて死んだと思ったら、異世界で野良犬に転生していた。最初は絶望していたが、優しい少女に拾われ...
      
      # 設定:
      舞台は剣と魔法の中世風異世界。主人公は現代知識を持つが犬の体に囚われている。
      
      # プロット:
      少女との出会い -> 街での騒動 -> 主人公の特殊能力覚醒 -> 追放の危機 -> ... </s>
      
    • 形式例 (メタデータなし):
      <s>[INST] 自由に小説のアイデア(タイトル、キーワード、ジャンル、あらすじ、設定、プロット)を生成してください。 [/INST] {生成されるアイデア一式} </s>
      

プロンプトテンプレート: 学習時には mistral_small テンプレート形式を使用しました。推論時も同様の形式 (<s>[INST] {instruction} {input} [/INST] {output} </s>) を推奨します。

⚠️ 制限事項と注意点

  • アルファ版: 本モデルは開発中のpreview版であり、性能や安定性は保証されません。
  • 偏り: 学習データの特性上、生成内容が特定のジャンル、表現、展開に偏る可能性があります。
  • 不適切な内容: 学習データには多様なテキストが含まれるため、未成年者の閲覧に適さない、または不快感を与える可能性のある文章が生成されることがあります。
  • 品質の限界: 生成される文章の多様性、一貫性、文脈への追従性には限界があります。特に長い文章の生成では破綻する可能性があります。
  • 利用上の注意: 本モデルは研究および実験的な目的で提供されています。利用者は、適用される法律および規制を遵守する責任を負います。違法な目的や他者の権利を侵害する目的での使用は固く禁じます。
  • 自己責任: 本モデルの使用によって生じたいかなる結果についても、開発者は一切の責任を負いません。全て自己責任においてご利用ください。

今後の予定

  • preview版からの追加学習版 →廃止、preview_plusが同データセットの最後のモデルです。

レーティング、セリフ量、オーサーズノートに対応したデータセットで現在学習中 

  • wanabi-24B vX: 拡張データセットによる SFT を実施中 (順次公開)

(ロードマップは変更される可能性があります)