--- base_model: Qwen/Qwen3-4B-Instruct-2507 datasets: - daichira/structeval-t-sft-hq-yaml-cleaned - daichira/structured-5k-mix-sft language: - en license: apache-2.0 library_name: peft pipeline_tag: text-generation tags: - qlora - lora - structured-output - json - yaml - toml - xml - csv --- # qwen3-4b-structured-output-lora_0711_run_1 — step 450 このリポジトリには**LoRAアダプタのみ**が含まれています。 ベースモデル `Qwen/Qwen3-4B-Instruct-2507` は別途読み込む必要があります。 ## 学習目的 > 2026-07-10 Run 3のYAML中心ベース+CSV→JSONリプレイを維持し、YAML→TOML教師トークンを最終混合の約10%追加することで、JSON/CSVの改善を保ちながらTOML出力を改善できるか。 このRunは、2026-07-10 Run 3のデータ構成を基準にしています。 元のYAML中心データとCSV→JSONリプレイを維持し、同じ追加データセットから 検証済みのYAML→TOML例を構築して追加しました。 既存のRun 1またはRun 3アダプタからの継続学習ではありません。 ベースモデルから新しいLoRAアダプタを初期化して学習しています。 ## データ ### YAML中心ベースデータ - データセット: `daichira/structeval-t-sft-hq-yaml-cleaned` - リビジョン: `e73a755d3b50bd3ac38c99c1ede87ca9b3139cba` - 最終教師トークン比率: 80.9209% - ライセンス: Apache-2.0 ### CSV→JSONリプレイ - 取得元: `daichira/structured-5k-mix-sft` - リビジョン: `740e82f5bb5ae31c9b0f9c2fa15f78bbcaf3dbe2` - フィルター: - category: `C_JSON` - subcategory: `csv_to_json` - task: `transform` - 選択行数: 79 - Run 3方式での選択時比率: 10.0380% - TOML追加後の最終教師トークン比率: 9.0292% ### YAML→TOMLリプレイ - 取得元: `daichira/structured-5k-mix-sft` - リビジョン: `740e82f5bb5ae31c9b0f9c2fa15f78bbcaf3dbe2` - 選択行数: 104 - 目標最終教師トークン比率: 10.0000% - 実際の最終教師トークン比率: 10.0499% - 構築元内訳: `{'reversed_toml_to_yaml': 104}` - 長さ選択サイクル: `['short', 'short', 'short', 'short', 'medium', 'medium', 'long']` YAML→TOMLは、まず既存のTOML→YAMLペアを意味検証後に反転しました。 その候補だけで目標トークン数へ届かない場合のみ、text→TOMLの正解TOMLを解析し、 同じ構造を決定論的にYAMLへ直列化した入力を補完候補として使用しました。 追加データは次の条件を満たす例だけを使用しています。 - TOMLを`tomllib`で解析可能 - YAMLをPyYAMLで解析可能 - YAMLとTOMLの解析結果が意味的に一致 - 説明文、コードフェンス、思考タグを含まない - チャットテンプレート適用後の完全シーケンスが 2048トークン以内 追加データセットのライセンスはCC-BY-4.0です。 ## 学習設定 - ベースモデル: `Qwen/Qwen3-4B-Instruct-2507` - 手法: Unslothを用いた4ビットQLoRA - 最大シーケンス長: 2048 - 学習予算方式: `epochs` - 要求エポック数: 5.0 - 実際の最終ステップ数: 655 - 実際の最終エポック: 5.0000 - ウォームアップ比率: 0.1 - 実際のウォームアップステップ数: 66 - 学習率: 1e-06 - スケジューラー: cosine - 重み減衰: 0.05 - 実効バッチサイズ: 16 - LoRAランク: 64 - LoRAアルファ: 128 - 精度: BF16 ## 評価データ方針 `public_150.json`は読み込まず、学習、追加データ構築、 チェックポイント選択、早期終了のいずれにも使用していません。 ## 使用方法 ```python import torch from transformers import ( AutoModelForCausalLM, AutoTokenizer, ) from peft import PeftModel base_model_id = "Qwen/Qwen3-4B-Instruct-2507" adapter_id = "morizon/qwen3-4b-structured-output-lora_0711_run_1-step450" tokenizer = AutoTokenizer.from_pretrained( base_model_id ) base_model = AutoModelForCausalLM.from_pretrained( base_model_id, torch_dtype=torch.bfloat16, device_map="auto", ) model = PeftModel.from_pretrained( base_model, adapter_id, ) ``` ## 再現性 このリポジトリには、`dataset_manifest.json`、 `training_summary.json`、選択済みIDファイルが含まれます。 データセットの正確なリビジョン、シード、トークン統計、 2系統の追加データ選択結果、実際の最終ステップを確認できます。 ## 利用条件 利用者は、ベースモデルおよび各データセットのライセンスと 利用条件を確認してください。 ## チェックポイント情報 - 学習ステップ: 450 - 実際の最終ステップ: 655 - 最終モデルか: いいえ - 学習データ、データ分割、シード、学習率スケジュールは、 同じ実験内の他のチェックポイントと共通です。 - 公開150件は、学習、チェックポイント作成、 チェックポイント選択には使用していません。