YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Aozora GPT-2 Small

青空文庫(日本の古典文学)で事前学習したGPT-2 Smallモデル。個人学習プロジェクトとして、LLMの事前学習プロセスを一から実装・実行しました。

モデル詳細

基本情報

  • モデル名: aozora-gpt2-small
  • アーキテクチャ: GPT-2 (Decoder-only Transformer)
  • パラメータ数: 約125M (124,775,424)
  • 学習方式: Causal Language Modeling (次トークン予測)

モデル構成

  • 語彙サイズ: 32,000
  • 最大シーケンス長: 1,024
  • 埋め込み次元: 768
  • Transformer層数: 12
  • アテンションヘッド数: 12
  • FFN内部次元: 3,072

学習詳細

データセット

  • ソース: globis-university/aozorabunko-clean
  • 使用データ: 新字新仮名作品のみ (1,000作品)
  • 総文字数: 約1,740万文字
  • 内容: 明治・大正・昭和初期の日本文学作品(著作権切れ)

トークナイザー

  • タイプ: SentencePiece (Unigram)
  • 語彙サイズ: 32,000
  • 学習データ: 青空文庫1,000作品で専用語彙を構築
  • 特殊トークン: PAD(0), UNK(1), BOS(2), EOS(3)

学習環境・設定

  • ハードウェア: NVIDIA A100-SXM4-40GB (Google Colab)
  • エポック数: 3
  • バッチサイズ: 4
  • 学習率: 5e-4 (AdamW)
  • 最大長: 1,024トークン
  • 学習時間: 約20分

使用方法

from transformers import GPT2LMHeadModel
import sentencepiece as smp

# モデル読み込み
model = GPT2LMHeadModel.from_pretrained("umaico/aozora-gpt2-small")

# SentencePieceトークナイザー読み込み
sp = smp.SentencePieceProcessor()
sp.load("aozora_tokenizer.model")  # HuggingFaceから自動ダウンロード

# テキスト生成
def generate_text(prompt, max_length=100):
    input_ids = sp.encode(prompt, out_type=int)
    input_tensor = torch.tensor([input_ids])
    
    with torch.no_grad():
        outputs = model.generate(
            input_tensor,
            max_length=max_length,
            do_sample=True,
            temperature=0.8,
            top_p=0.9,
            pad_token_id=0
        )
    
    return sp.decode(outputs[0].cpu().numpy().tolist())

# 使用例
result = generate_text("吾輩は猫である。")
print(result)

制限事項・生成結果

生成品質について

  • 学習データが1,000作品と限定的なため、文章生成品質は制限されます
  • 短い学習期間(3エポック)により、文脈理解が不十分です
  • 古典文学に特化しているため、現代的な表現は苦手です

実際の生成例

入力: "メロスは激怒した。"
出力: "メロスは激怒した。は、のはのは、た、はのだと、はったと、にて、のに、も。のはが、をる、にばい、てかというでこのはたにか 、、はな。、やがし、がを、はを、がるともも、か、の、のもに、、、る、とにて、の。、、は、"

現状では意味のある文章生成はできておらず、助詞や短い単語の断片的な組み合わせが出力される傾向があります。これは学習データ量・学習時間の不足による典型的な現象です。

技術的制限

  • カスタムSentencePieceトークナイザーのため、標準的なHuggingFaceトークナイザーとは互換性がありません
  • 商用利用は推奨されません(品質が実用レベルに達していないため)

想定用途

  • 言語モデルの事前学習プロセスの学習・研究
  • 古典日本文学スタイルのテキスト生成実験
  • 小規模LLM開発の参考実装

ライセンス・著作権

  • モデル: Apache 2.0
  • 学習データ: 青空文庫(パブリックドメイン作品)
  • 実装コード: 教育目的での利用を想定

開発経緯

このモデルは、LLMの事前学習プロセスを一から体験することを目的とした個人学習プロジェクトです。データ収集、トークナイザー学習、モデル設計、学習実行、デプロイまでの全工程を実装しました。

技術スタック

  • PyTorch / Transformers
  • SentencePiece
  • HuggingFace Hub
  • Google Colab (A100)

参考情報

  • 学習記録: 初期loss ~8.2 → 最終loss ~7.9
  • データ処理: 2,390学習ステップ
  • モデルサイズ: 442MB (safetensors形式)

免責事項

このモデルは教育・実験目的で開発されました。生成されるテキストの品質や内容について保証するものではありません。商用利用や重要な用途での使用は推奨されません。

Downloads last month
8
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support