初始化项目,由ModelHub XC社区提供模型

Model: summerMC/matutake
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-08-07 02:31:16 +08:00
commit 88124e1e14
13 changed files with 642 additions and 0 deletions

36
.gitattributes vendored Normal file
View File

@@ -0,0 +1,36 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
tokenizer.json filter=lfs diff=lfs merge=lfs -text

310
README.md Normal file
View File

@@ -0,0 +1,310 @@
---
language:
- ja
- en
base_model:
- summerMC/Sakura
base_model_relation: finetune
pipeline_tag: text-generation
library_name: transformers
tags:
- japanese
- chat
- sft
- causal-lm
- conversational
- reasoning
- fable
datasets:
- summerMC/v-Fable
---
# matutake
`matutake` は、[summerMC/Sakura](https://huggingface.co/summerMC/Sakura) をベースに、[summerMC/v-Fable](https://huggingface.co/datasets/summerMC/v-Fable) を用いて **Supervised Fine-Tuning (SFT)** した、日本語寄りの **Fable系対話・推論モデル** です。
このモデルは、coding専用モデルではなく、**会話・説明・推論・ロールプレイ・長めの応答生成** などを含む、Fable系のスタイルと応答傾向をSakura上で再現・適応することを目的に調整しています。
---
# 1. Model Overview
## 概要
* **Model name**: `summerMC/matutake`
* **Base model**: `summerMC/Sakura`
* **Training type**: Full fine-tuning / SFT
* **Primary dataset**: `summerMC/v-Fable`
## 主な目的
* 日本語での自然な会話応答
* Fable系の応答スタイルへの適応
* 長めの説明・推論応答の強化
* instruction following の改善
* 対話形式での安定した文章生成
`matutake` は、Fable系トレースデータをもとに、**対話の流れを保ちながら自然に返答する能力**、**ある程度まとまった推論や説明を返す能力**、**ロールや文脈に沿った返答を行う能力** を強めることを目的としています。
---
# 2. Intended Use
## 想定ユースケース
このモデルは、以下のような **一般的な対話・生成タスク** を想定しています。
### Chat / Conversation
* 日本語での雑談・対話
* 指示に従った応答生成
* 長めの会話文・返答文の生成
* キャラクターや口調を意識した会話
### Reasoning / Explanation
* 質問に対する段階的な説明
* 要点整理
* 比較・整理・要約
* ある程度長い推論を伴う返答
### Creative / Roleplay style generation
* Fable系の会話スタイル再現
* ロールプレイ風の返答
* 雰囲気重視の会話生成
* ストーリー寄りの応答や表現
### General instruction following
* 日本語プロンプトに対する自然な応答
* 情報整理
* 文章生成
* 口調や形式を指定した出力
---
# 3. Training Data
本モデルは主に以下のデータセットで学習されています。
## Dataset
* **`summerMC/v-Fable`**
`v-Fable` は Fable系トレースをもとにした対話・推論・スタイル応答を含むデータセットであり、会話の流れ、応答形式、説明調の返答、Fable系の雰囲気を持つ出力を学習するために使用しています。
学習時には主に `context -> completion` 形式を用い、与えられた文脈に対する応答全体をSFTしています。
### 主な特徴
* 対話形式の応答
* reasoning / explanation を含む返答
* Fable系のスタイルや雰囲気を持つ出力
* instruction-following と会話継続の両方を含む構成
---
# 4. Training Method
## Fine-tuning
* **方式**: Supervised Fine-Tuning (SFT)
* **学習対象**: base model の全パラメータfull fine-tune
* **目的**:
* Fable系の応答傾向への適応
* 会話の自然さの改善
* 長めの返答や説明の安定化
* 日本語での instruction following の向上
## 学習方針
本モデルでは、単純な短文応答よりも、以下のような性質を重視しています。
* 文脈を踏まえて返答する
* 長めの説明や会話を破綻しにくくする
* Fable系の話し方・返答傾向を反映する
* 日本語での自然な対話を強化する
---
# 5. Prompting / Chat Format
このモデルは **chat形式** の入力を想定しています。
ベースモデル `Sakura` のテンプレートに依存するため、基本的には `tokenizer.apply_chat_template(...)` を使うことを推奨します。
## Transformers example
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "summerMC/matutake"
tokenizer = AutoTokenizer.from_pretrained(
model_id,
trust_remote_code=True,
)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{
"role": "system",
"content": "You are matutake, a helpful Japanese conversational assistant."
},
{
"role": "user",
"content": "最近ちょっと疲れてるんだけど、少し気分が軽くなるように話して。"
}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.05,
)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
```
---
# 6. Recommended Generation Settings
用途が会話・説明・Fable系の返答寄りなので、まずは以下を推奨します。
## 会話向け
```python
max_new_tokens = 512
do_sample = True
temperature = 0.7
top_p = 0.9
repetition_penalty = 1.05
```
## 少し安定寄りにする場合
```python
max_new_tokens = 512
do_sample = True
temperature = 0.5
top_p = 0.9
repetition_penalty = 1.05
```
## 長めの応答を書かせる場合
```python
max_new_tokens = 1024
temperature = 0.7
top_p = 0.95
```
---
# 7. Example Prompts
## 日常会話
* `最近ちょっと気分が落ちてるから、少し優しく話してほしい。`
* `今日あったことを聞いてほしい。`
## 説明・整理
* `量子コンピュータって何か、中学生にもわかるように説明して。`
* `この文章を3行で要約して。`
## ロールプレイ / 雰囲気重視
* `落ち着いた口調で、夜に話しかけるような感じで返して。`
* `少し物語っぽい雰囲気で励まして。`
## 推論・長文応答
* `A案とB案のメリット・デメリットを比較して整理して。`
* `この悩みに対して、考え方を段階的に整理してほしい。`
---
# 8. Limitations
このモデルは**研究・実験用途**です。以下の制約があります。
* 事実性は保証されません
* 説明がもっともらしくても誤っている場合があります
* 長い応答では一貫性が崩れることがあります
* Fable系のスタイルに寄ることで、必要以上に感情的・演出的な返答になる場合があります
* chain-of-thought風の出力や冗長な説明が出ることがあります
**重要な判断に使う場合は、必ず人間が内容を確認してください。**
---
# 9. Safety / Responsible Use
以下の用途には適しません。
* 医療・法務・金融など高リスク分野の最終判断
* 人の状態に関する重大な判断の自動化
* 真偽確認なしでの事実情報の利用
* セーフティ確認なしの本番自動応答
モデルの出力は参考情報として扱い、必要に応じて別ソースで確認してください。
---
# 10. License
## Important
このモデルの利用条件は、**ベースモデル `summerMC/Sakura` のライセンス** および **学習データ `summerMC/v-Fable` のライセンス** に依存します。
利用前に必ずそれぞれの配布ページを確認してください。
* Base model: `summerMC/Sakura`
* Dataset: `summerMC/v-Fable`
特に、学習データに由来するライセンス・利用条件・再配布条件には注意してください。
---
# 11. Citation
もしこのモデルや派生物を研究・検証に利用した場合は、ベースモデルと学習データのクレジットも併記してください。
```bibtex
@misc{matutake2026,
title = {matutake},
author = {summerMC},
year = {2026},
howpublished = {\url{https://huggingface.co/summerMC/matutake}}
}
```
必要に応じて、ベースモデル・データセットの引用も追加してください。
---
# 12. Notes
`matutake` は、Sakura系列をベースに **Fable系の会話・推論・スタイル応答** を強化するための実験モデルです。
ベンチマークスコアの最適化よりも、**会話としての自然さ、返答の雰囲気、長めの応答生成** を重視しています。

54
chat_template.jinja Normal file
View File

@@ -0,0 +1,54 @@
{%- if tools %}
{{- '<|im_start|>system\n' }}
{%- if messages[0]['role'] == 'system' %}
{{- messages[0]['content'] }}
{%- else %}
{{- 'あなたは、Summer AIが開発したSakuraです。小型ながら、誠実で優秀なアシスタントです。' }}
{%- endif %}
{{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
{%- for tool in tools %}
{{- "\n" }}
{{- tool | tojson }}
{%- endfor %}
{{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
{%- else %}
{%- if messages[0]['role'] == 'system' %}
{{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }}
{%- else %}
{{- '<|im_start|>system\nあなたは、Summer AIが開発したSakuraです。小型ながら、誠実で優秀なアシスタントです。<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- for message in messages %}
{%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %}
{{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
{%- elif message.role == "assistant" %}
{{- '<|im_start|>' + message.role }}
{%- if message.content %}
{{- '\n' + message.content }}
{%- endif %}
{%- for tool_call in message.tool_calls %}
{%- if tool_call.function is defined %}
{%- set tool_call = tool_call.function %}
{%- endif %}
{{- '\n<tool_call>\n{"name": "' }}
{{- tool_call.name }}
{{- '", "arguments": ' }}
{{- tool_call.arguments | tojson }}
{{- '}\n</tool_call>' }}
{%- endfor %}
{{- '<|im_end|>\n' }}
{%- elif message.role == "tool" %}
{%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %}
{{- '<|im_start|>user' }}
{%- endif %}
{{- '\n<tool_response>\n' }}
{{- message.content }}
{{- '\n</tool_response>' }}
{%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
{{- '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- endif %}

61
config.json Normal file
View File

@@ -0,0 +1,61 @@
{
"architectures": [
"Qwen2ForCausalLM"
],
"attention_dropout": 0.0,
"bos_token_id": null,
"dtype": "bfloat16",
"eos_token_id": 151645,
"hidden_act": "silu",
"hidden_size": 1536,
"initializer_range": 0.02,
"intermediate_size": 8960,
"layer_types": [
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention"
],
"max_position_embeddings": 32768,
"max_window_layers": 21,
"model_type": "qwen2",
"num_attention_heads": 12,
"num_hidden_layers": 28,
"num_key_value_heads": 2,
"pad_token_id": 151643,
"rms_norm_eps": 1e-06,
"rope_parameters": {
"rope_theta": 1000000.0,
"rope_type": "default"
},
"sliding_window": null,
"tie_word_embeddings": false,
"transformers_version": "5.12.0",
"use_cache": false,
"use_sliding_window": false,
"vocab_size": 151665
}

9
generation_config.json Normal file
View File

@@ -0,0 +1,9 @@
{
"_from_model_config": true,
"eos_token_id": [
151645
],
"pad_token_id": 151643,
"transformers_version": "5.12.0",
"use_cache": true
}

3
model.safetensors Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7175b36525c9067d2892388ac4785d4197057d634dcfcf2e29ccdaa87223e9e5
size 3552549728

3
optimizer.pt Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:401d9b863f63ad990876a15e8a2d6479a4440a9426902056b63c17a16bbece7a
size 7105319372

3
rng_state.pth Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:61c19bab1174704a4a4441475683bf1270277af15d2e2c95e964789128e482c4
size 14645

3
scheduler.pt Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ac08bec92a4d36e0429c02d96598c370f748ac8366bfc29c7287da66814c605d
size 1465

3
tokenizer.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8
size 11421892

30
tokenizer_config.json Normal file
View File

@@ -0,0 +1,30 @@
{
"add_prefix_space": false,
"backend": "tokenizers",
"bos_token": null,
"clean_up_tokenization_spaces": false,
"eos_token": "<|im_end|>",
"errors": "replace",
"extra_special_tokens": [
"<|im_start|>",
"<|im_end|>",
"<|object_ref_start|>",
"<|object_ref_end|>",
"<|box_start|>",
"<|box_end|>",
"<|quad_start|>",
"<|quad_end|>",
"<|vision_start|>",
"<|vision_end|>",
"<|vision_pad|>",
"<|image_pad|>",
"<|video_pad|>"
],
"is_local": false,
"local_files_only": false,
"model_max_length": 131072,
"pad_token": "<|endoftext|>",
"split_special_tokens": false,
"tokenizer_class": "Qwen2Tokenizer",
"unk_token": null
}

124
trainer_state.json Normal file
View File

@@ -0,0 +1,124 @@
{
"best_global_step": null,
"best_metric": null,
"best_model_checkpoint": null,
"epoch": 1.0,
"eval_steps": 500,
"global_step": 199,
"is_hyper_param_search": false,
"is_local_process_zero": true,
"is_world_process_zero": true,
"log_history": [
{
"entropy": 0.9629484385251998,
"epoch": 0.10050251256281408,
"grad_norm": 4.09375,
"learning_rate": 1.9000000000000002e-06,
"loss": 0.9181639671325683,
"mean_token_accuracy": 0.8306790262460708,
"num_tokens": 40960.0,
"step": 20
},
{
"entropy": 0.9275371879339218,
"epoch": 0.20100502512562815,
"grad_norm": 4.28125,
"learning_rate": 3.900000000000001e-06,
"loss": 0.8665243148803711,
"mean_token_accuracy": 0.8379091203212738,
"num_tokens": 81920.0,
"step": 40
},
{
"entropy": 0.8652732700109482,
"epoch": 0.3015075376884422,
"grad_norm": 3.359375,
"learning_rate": 5.9e-06,
"loss": 0.7930655002593994,
"mean_token_accuracy": 0.8541035562753677,
"num_tokens": 122880.0,
"step": 60
},
{
"entropy": 0.780908739566803,
"epoch": 0.4020100502512563,
"grad_norm": 2.6875,
"learning_rate": 7.9e-06,
"loss": 0.7104530334472656,
"mean_token_accuracy": 0.8606008648872375,
"num_tokens": 163840.0,
"step": 80
},
{
"entropy": 0.598466919362545,
"epoch": 0.5025125628140703,
"grad_norm": 4.9375,
"learning_rate": 9.9e-06,
"loss": 0.5393049240112304,
"mean_token_accuracy": 0.8908646881580353,
"num_tokens": 204800.0,
"step": 100
},
{
"entropy": 0.40023221969604494,
"epoch": 0.6030150753768844,
"grad_norm": 2.734375,
"learning_rate": 9.118382907149164e-06,
"loss": 0.3737324237823486,
"mean_token_accuracy": 0.9215437412261963,
"num_tokens": 245760.0,
"step": 120
},
{
"entropy": 0.3805061921477318,
"epoch": 0.7035175879396985,
"grad_norm": 3.125,
"learning_rate": 6.635339816587109e-06,
"loss": 0.35905587673187256,
"mean_token_accuracy": 0.9224676638841629,
"num_tokens": 286652.0,
"step": 140
},
{
"entropy": 0.31945948526263235,
"epoch": 0.8040201005025126,
"grad_norm": 3.125,
"learning_rate": 3.5153981233586277e-06,
"loss": 0.29033424854278567,
"mean_token_accuracy": 0.935295569896698,
"num_tokens": 327612.0,
"step": 160
},
{
"entropy": 0.3433520093560219,
"epoch": 0.9045226130653267,
"grad_norm": 2.9375,
"learning_rate": 9.73648712344707e-07,
"loss": 0.32125253677368165,
"mean_token_accuracy": 0.930393049120903,
"num_tokens": 367708.0,
"step": 180
}
],
"logging_steps": 20,
"max_steps": 199,
"num_input_tokens_seen": 0,
"num_train_epochs": 1,
"save_steps": 1000,
"stateful_callbacks": {
"TrainerControl": {
"args": {
"should_epoch_stop": false,
"should_evaluate": false,
"should_log": false,
"should_save": true,
"should_training_stop": true
},
"attributes": {}
}
},
"total_flos": 3757085019549696.0,
"train_batch_size": 1,
"trial_name": null,
"trial_params": null
}

3
training_args.bin Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:92877bd1dbb18040fd11831cbfb5c38b02d1713f51f32d02bf001e28842c0deb
size 5649