@mcptoolshop/backpropagate 1.1.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md CHANGED
@@ -10,144 +10,152 @@
10
10
  <a href="https://github.com/mcp-tool-shop-org/backpropagate/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/backpropagate/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
11
11
  <a href="https://pypi.org/project/backpropagate/"><img src="https://img.shields.io/pypi/v/backpropagate" alt="PyPI"></a>
12
12
  <a href="https://codecov.io/gh/mcp-tool-shop-org/backpropagate"><img src="https://img.shields.io/codecov/c/github/mcp-tool-shop-org/backpropagate" alt="Coverage"></a>
13
+ <a href="https://scorecard.dev/viewer/?uri=github.com/mcp-tool-shop-org/backpropagate"><img src="https://api.scorecard.dev/projects/github.com/mcp-tool-shop-org/backpropagate/badge" alt="OpenSSF Scorecard"></a>
13
14
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
14
15
  <a href="https://mcp-tool-shop-org.github.io/backpropagate/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
15
16
  </p>
16
17
 
17
- **わずか3行で大規模言語モデル(LLM)のファインチューニングが可能。最適なデフォルト設定、VRAMを考慮したバッチサイズ調整、複数回の学習によるSLAO、そしてOllamaへのワンクリックGGUFエクスポート機能。**
18
+ # アダプターをトレーニングします。それをOllamaに送信します。完了です
18
19
 
19
- *SLAOは、非対称なマージによる継続学習(Single LoRA Continual Learning via Asymmetric Merging)であり、長期間のファインチューニング中に発生する破滅的な忘却を防ぐための手法です。([論文](https://arxiv.org/abs/2512.23017))*
20
+ Backpropagateは、単一のGPUで大規模言語モデルをファインチューニングするためのPythonライブラリです。わずか3行のコードで、16GBのカードで7Bモデルをトレーニングできます。さらに1つのコマンドで、ファインチューニングしたモデルをOllamaにエクスポートし、`ollama run`コマンドで実行できます。Windowsでも問題なく動作します。
20
21
 
21
- *わずか3行のコードでLLMを学習させ、さらに1行でOllamaにエクスポートできます。*
22
+ ```python
23
+ from backpropagate import Trainer
22
24
 
23
- ## クイックスタート
25
+ trainer = Trainer("Qwen/Qwen2.5-7B-Instruct")
26
+ trainer.train("my_data.jsonl", steps=100)
27
+ trainer.export("gguf", quantization="q4_k_m")
28
+ ```
24
29
 
25
30
  ```bash
26
- pip install backpropagate[standard]
31
+ backprop ollama register ./output/lora --name my-model
32
+ ollama run my-model
27
33
  ```
28
34
 
29
- ```python
30
- from backpropagate import Trainer
35
+ これだけで完了です。YAMLの設定ファイルは不要です。`accelerate launch`コマンドも不要です。また、GGUF形式への変換に関するチュートリアルもありません。CUDA対応のGPUと、トレーニングデータを含むJSONLファイルがあれば、わずか3行のコードでファインチューニングを開始できます。
31
36
 
32
- trainer = Trainer("Qwen/Qwen2.5-7B-Instruct")
33
- trainer.train("examples/quickstart.jsonl", steps=10)
34
- trainer.export("gguf", quantization="q4_k_m") # Ready for Ollama
35
- ```
37
+ ## インストール
36
38
 
37
- このリポジトリには、`examples/quickstart.jsonl`という小さなファイル(ShareGPT形式の5つの例)が含まれており、これにより、上記のコードがクリーンな環境でエンドツーエンドで実行できます。独自の学習を行う場合は、以下の「データセット形式」を参照してください。
39
+ ```bash
40
+ # Recommended: isolated Python install (no conflicts with system Python or other projects)
41
+ pipx install backpropagate
42
+
43
+ # Or via uv (faster install, same isolation)
44
+ uv tool install backpropagate
38
45
 
39
- ### コード不要:Web UI
46
+ # Standard pip (if you manage your own virtualenv)
47
+ pip install backpropagate
48
+ ```
40
49
 
41
- Python REPLではなく、UIを使用したい場合は、同じ追加機能をインストールして実行してください。
50
+ オプション機能が必要な場合は、以下のいずれかでインストール方法を変更してください。
42
51
 
43
52
  ```bash
44
- pip install backpropagate[standard]
45
- backprop ui --port 7862
53
+ pipx install "backpropagate[standard]" # adds Unsloth (2x faster training) + the web UI
54
+ pipx install "backpropagate[full]" # adds everything: unsloth, ui, monitoring, export, etc.
46
55
  ```
47
56
 
48
- Reflex (Radix UI) インターフェースを使用すると、JSONLファイルを選択し、モデルを選択し、学習を実行し、エクスポートすることができます。Pythonの知識は不要です。このUIはローカル環境での利用を前提としており、インターネット経由で公開する場合は、`--share` + `--auth`によるセキュリティ設定と、サポートされているトンネルオプション(Cloudflare Tunnel、ngrok)を参照してください([Web UI](#web-ui))。
57
+ Dockerを使用したい場合は、`docker pull ghcr.io/mcp-tool-shop-org/backpropagate:latest`でも動作します。`linux/amd64`と`linux/arm64`の両方のイメージが提供されており、Apple SiliconやARM Linux環境でもネイティブイメージを使用できます。UIをコンテナで実行するための標準的な`compose.yaml`ファイルは、リポジトリのルートにあります。`docker compose up`コマンドを実行すると、Web UIが`http://localhost:7860`で起動し、永続的な`~/.backpropagate`ボリュームがマウントされます。
49
58
 
50
- ## データセット形式
59
+ ## Backpropagateの立ち位置
51
60
 
52
- JSONL形式の学習ファイルは、各行に1つの例が記述されている必要があります。最もシンプルな形式は、ShareGPTのチャット形式です。
61
+ 大規模言語モデルのファインチューニングには、いくつかの優れたライブラリがあります。それぞれが異なる強みを持っています。
53
62
 
54
- ```jsonl
55
- {"conversations": [{"from": "human", "value": "What is Python?"}, {"from": "gpt", "value": "A programming language."}]}
56
- {"conversations": [{"from": "human", "value": "Explain recursion."}, {"from": "gpt", "value": "A function that calls itself."}]}
57
- ```
63
+ - **[Axolotl](https://github.com/OpenAccess-AI-Collective/axolotl)**:YAML設定を使用し、他のユーザーのレシピを参考にしたい場合に最適です。
64
+ - **[LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory)**:Web GUIを使用し、DPO/PPO/RLHFなどの機能を利用したい場合に最適です。
65
+ - **[Unsloth](https://github.com/unslothai/unsloth)**:可能な限り高速なトレーニングが必要で、対応するモデルファミリーを使用する場合に最適です。
66
+ - **[torchtune](https://github.com/pytorch/torchtune)**:Metaが提供する、PyTorchネイティブのレシピを編集したい場合に最適です。
58
67
 
59
- Alpaca (`instruction`/`output`)OpenAIのチャット (`messages`)、および生のテキスト形式もサポートされています。`examples/quickstart.jsonl`には、コピーして利用できるサンプルが含まれています。
68
+ Backpropagateは、これらのライブラリとは異なるアプローチを提供します。**単一のコンシューマーGPUで動作するユーザー向けに、アダプターをトレーニングし、配布するための、3行のPython APIです。** YAML設定、GUIDPO/PPO、マルチノード構成は不要です。必要な機能と、邪魔になるエクスポート手順のみを提供します。
60
69
 
61
- ## なぜバックプロパゲーションを行うのか?
70
+ もし、上記のライブラリを試してみて、設定ファイルの煩雑さに困ったり、対応するモデルファミリーがないことに気づいたり、Windows環境での利用を優先したい場合は、Backpropagateが適しています。
62
71
 
63
- | 問題点 | 解決策 |
64
- |---------|----------|
65
- | ファインチューニングは複雑 | 3行で完了:ロード、学習、保存 |
66
- | Windowsは使い物にならない | Windowsへの完全な対応 |
67
- | VRAM管理は難しい | 自動バッチサイズ調整、GPU監視 |
68
- | モデルのエクスポートは分かりにくい | ワンクリックでGGUF形式にエクスポートし、Ollamaに自動登録 |
69
- | 長時間の学習は忘却を引き起こす | 複数回の学習によるSLAO |
72
+ ## 16GBのコンシューマーGPUでファインチューニングできるモデル
70
73
 
71
- ## 主な機能
74
+ 16GBのカード(RTX 4080 / 5080 / 4070 Ti Super)で動作するモデルの目安です。
72
75
 
73
- - **設計上はヘッドレス**: CI/CDパイプライン、自動化されたワークフロー、およびプログラムによる実行向けに最適化されています。
74
- - **スマートなデフォルト設定**: ハードウェアとデータセットに基づいて、最適なハイパーパラメータを自動的に設定します。
75
- - **複数回の学習によるSLAO**: 長時間の学習中に発生する破滅的な忘却を防ぐための高度な学習戦略。
76
- - **Windowsへの完全な対応**: Windows環境での動作をテストおよび最適化し、一般的なPyTorch/CUDAの問題を回避します。
77
- - **シームレスなエクスポート**: ワンクリックでGGUF形式にエクスポートし、Ollamaへの自動登録を行います。
78
- - **モジュール式のアーキテクチャ**: 必要な依存関係のみをインストールできます(例:`[unsloth]`、`[ui]`、`[export]`)。
76
+ | モデル | 方法 | 状態 |
77
+ |---|---|---|
78
+ | Qwen-3.5-4B / Phi-4-mini-3.8B / SmolLM3-3B | LoRA / QLoRA / DoRA | 快適。最大シーケンス長で動作し、余裕があります。 |
79
+ | Qwen-2.5-7B / Llama-3.1-8B / Mistral-7B | QLoRA | 標準的。約7〜8GBのメモリを使用。Backpropagateのデフォルト設定。 |
80
+ | Llama-3 13B | QLoRA + サンプルパッキング | ギリギリだが動作する。短いシーケンスを使用してください。 |
81
+ | Mixtral 8x7B (合計470億パラメータ) | AQLM 2-bit + LoRA | v1.4での実験機能。16GBのカードで動作する最大のモデルです。 |
79
82
 
80
- ## インストール
83
+ 3B以下のモデルでは、LoRAだけでなく、フルファインチューニングも16GBで実行可能です。v1.4では`mode="full"`オプションとして実装予定です。7B以上のモデルでは、フルファインチューニングには24GB以上のGPUが必要になります。クラウドのA100インスタンスを検討するか、LoRAを使用することをお勧めします。最近の研究によると、LoRAはほとんどのトレーニング後のタスクで、フルファインチューニングと同等の品質が得られることがわかっています(詳細については、[このセクション](#what-backpropagate-is-not-for)を参照)。
81
84
 
82
- ```bash
83
- pip install backpropagate # Core only (minimal)
84
- pip install backpropagate[unsloth] # + Unsloth 2x faster training
85
- pip install backpropagate[ui] # + Reflex (Radix UI) web interface
86
- pip install backpropagate[standard] # unsloth + ui (recommended)
87
- pip install backpropagate[full] # Everything
88
- ```
85
+ ## Backpropagateが適さないケース
89
86
 
90
- | 追加機能 | 説明 | 依存関係 |
91
- |-------|-------------|--------------|
92
- | `unsloth` | 学習速度が2倍、VRAM使用量が50%削減 | unsloth |
93
- | `ui` | Reflex (Radix UI) Webインターフェース | reflex>=0.9.2, fastapi>=0.115 |
94
- | `validation` | Pydanticによる設定検証 | pydantic, pydantic-settings |
95
- | `export` | Ollama用GGUFエクスポート | llama-cpp-python |
96
- | `monitoring` | WandB + システム監視(v1.1.0でトレーナーに自動統合) | wandb, psutil |
97
- | `observability` | OpenTelemetryによるトレース | opentelemetry-api, opentelemetry-sdk |
98
- | `logging` | 構造化されたロギング | structlog |
99
- | `security` | JWT認証 + トークン生成 | PyJWT, cryptography |
100
- | `production` | unsloth + ui + 検証 + ロギング + セキュリティ | (バンドル) |
87
+ 正直な情報を提供することで、ユーザーの皆様に最適な選択肢を提供します。Backpropagateは、これらの機能を提供していません。これらの機能を実装しようとしても、適切なツールを使用するよりも手間がかかる可能性があります。
101
88
 
102
- **必要条件:** Python 3.10以上、CUDA対応GPU(8GB以上のVRAM)、PyTorch 2.0以上
89
+ - **70億パラメータ以上のモデルのフルパラメータファインチューニング** — BackpropagateはLoRA/QLoRAを使用しており、すべての重みを更新するのではなく、小さなアダプターを学習します。70億パラメータ以上のモデルの場合、フルファインチューニングには24GB以上のGPUメモリが必要であり、16GBの一般的なグラフィックボードでは動作しません。30億パラメータ以下のモデルでは、16GBのメモリでフルファインチューニングが可能です。v1.4では、`mode="full"`オプションが予定されています。全体として、最近の研究([Biderman 2024](https://arxiv.org/abs/2405.09673)、[Thinking Machines 2025](https://thinkingmachines.ai/blog/lora/))によると、正しく設定されたLoRAは、ほとんどの追加学習タスク(指示に従う、ドメイン適応、ペルソナ/スタイル)において、フルファインチューニングと同等の品質を、計算量の67%で実現できます。したがって、ほとんどのユーザーが実際に必要とするタスクにおいては、LoRAを使用しても何も失うことはありません。もし、70億パラメータ以上のモデルのフルファインチューニングが必要な場合は、HuggingFaceの`transformers.Trainer`を直接、24GB以上のGPUでご使用ください。
90
+ - **DPO/PPO/GRPO/好みの学習** — Backpropagateは、シングルステージの教師ありファインチューニングのみをサポートしています。好みの学習については、TRLまたはLLaMA-Factoryを直接ご使用ください。
91
+ - **マルチノードトレーニング** — シングルGPUのみをサポートします。シングルマシンのマルチGPU構成は動作しますが(`accelerate launch`を使用)、公式にはサポートされていません。
92
+ - **macOSでのトレーニング** — Apple SiliconにはCUDAがないため、トレーニングはNVIDIA GPUを搭載したLinuxまたはWindowsの環境で行う必要があります。学習済みのモデルは、Ollamaを通じてMacでも実行できます。
93
+ - **テスト対象外のモデルファミリー** — Qwen 2.5 / 3.5 (7B / 4B)、Phi-4-mini-3.8B、SmolLM3-3B、Llama 3.2 (3B / 1B)、Mistral 7B。他のモデルも動作する場合がありますが、CI環境では検証されていません。
103
94
 
104
- ### プラットフォームの前提条件
95
+ 上記のような機能が必要な場合は、上記に記載されているライブラリをご利用ください。それらは、それらの機能に特化しています。
105
96
 
106
- Backpropagateは、実行時の問題(マルチプロセッシング、RTX 40/50でのxformersの使用、Windows上のデータローダー)を処理します。ただし、インストール時のプラットフォーム固有の問題は処理しません。それらの問題は事前に解決してください。
97
+ ## Backpropagateが提供するもの
107
98
 
108
- - **CUDAツールキットのバージョン。** PyTorchはCUDAバージョンごとにリリースされます。誤ったホイールを選択すると、CPUのみのPyTorchがインストールされます。正しい`pip install torch ...`コマンドについては、<https://pytorch.org/get-started/locally/>にあるツールを使用してください。`nvidia-smi`を実行して、ドライバー/CUDAのバージョンを確認してください。
109
- - **Windows。** `[export]`オプションを使用する場合(`llama-cpp-python`をソースからビルドする場合)、Visual Studio Build Tools (C++)とCMakeが必要です。`bitsandbytes`のホイールは、Windowsネイティブで利用可能になりました(>= 0.43)。古いドキュメントで`bitsandbytes-windows`について言及しているものは、最新ではありません。
110
- - **macOS。** GPUによる学習は**サポートされていません**。CUDAは利用できません。エクスポートされたGGUFファイルをOllama経由で実行して*推論*を行うことはできますが、`trainer.train()`を実行すると`DEP_GPU_NOT_AVAILABLE`エラーが発生します。学習にはCUDA対応の環境を使用してください。
111
- - **Linux。** ほとんどのディストリビューションで問題なく動作します。PyPIのバイナリリリースを使用している場合は、LinuxのビルドではCPUのみのPyTorchが使用されていることに注意してください(GitHubの2GBのリリースアセットの制限を超えるため)。最初にpytorch.orgから対応するCUDAホイールをインストールしてください。
99
+ インストール時に利用できる、以下の4つの機能:
112
100
 
113
- 詳細なインストールに関するトラブルシューティングについては、[トラブルシューティングガイド](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/)を参照してください。
101
+ **1. 設定ファイルが不要な、シンプルな3行のAPI**
102
+ このREADMEの冒頭にあるコードは、エンドツーエンドで実行できます。`accelerate config`、YAMLファイル、Hydraの設定などは不要です。`Trainer(model).train(data)`と記述するだけで、ファインチューニングが完了します。
114
103
 
115
- ## 設定
104
+ **2. 実際に動作するWindowsサポート**
105
+ 多くの機械学習ライブラリでは、Windowsは後回しに扱われています。Backpropagateは、Windows + RTX 5080環境で、最初からテストされています。ライブラリは、Windows特有の動作を自動的に処理します。例えば、Windowsのマルチプロセスでクラッシュしないようにデータを事前にトークン化したり、RTX 40/50シリーズのカードでxformersが動作しない場合に自動的に無効にしたり、データローダーの設定を自動的に調整したりします。これらのことをユーザーが知る必要はありません。すべて自動的に処理されます。
116
106
 
117
- すべての設定は、`BACKPROPAGATE_`というプレフィックスを持つ環境変数を使用して上書きできます(例:`BACKPROPAGATE_LOG_LEVEL=debug`)。プロジェクトのルートディレクトリにある`.env`ファイルは、`[validation]`オプションがインストールされている場合に自動的に読み込まれます。
107
+ **3. 無人実行に対応**
108
+ トレーニングには時間がかかります。ユーザーが常に監視する必要はありません。Backpropagateは、バックグラウンドで実行されるように設計されています。
118
109
 
119
- 一般的な設定項目(詳細は[環境変数リファレンス](https://mcp-tool-shop-org.github.io/backpropagate/handbook/env-vars/)を参照):
110
+ - GPUメモリが不足した場合、バッチサイズを自動的に半分にし、最大3回まで再試行します。手動での調整は不要です。
111
+ - GPUの温度が上昇した場合、温度が下がるまで一時停止し、その後、再開します。
112
+ - すべてのチェックポイントは、アトミックに書き込まれます。つまり、ラップトップが保存中にクラッシュした場合でも、以前の正常なチェックポイントは保持されます。
113
+ - すべてのトレーニング実行には、一意のIDが割り当てられ、ログの各行、チェックポイント、およびWeights & Biasesのエントリに記録されます。問題が発生した場合、このIDを使用することで、管理者がすべての情報を関連付けることができます。
114
+ - エラーには、安定したコード(`RUNTIME_GPU_OOM`、`DEP_OLLAMA_REGISTRATION_FAILED`など)が付属しています。これにより、ログを検索したり、[トラブルシューティングガイド](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/)を参照して、解決策を見つけることができます。CUDA関連のエラーについては、専用の[CUDAトラブルシューティングページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/)があります。
120
115
 
121
- | 変数 | デフォルト値 | 備考 |
122
- |----------|---------|-------|
123
- | `BACKPROPAGATE_LOG_LEVEL` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
124
- | `BACKPROPAGATE_LOG_JSON` | 自動 | JSON形式のログを出力するか(`true`)、コンソールに出力するか(`false`) |
125
- | `BACKPROPAGATE_LOG_FILE` | 未設定 | ログを保存するパス |
126
- | `BACKPROPAGATE_DEFER_FEATURE_DETECTION` | 未設定 | 起動時のオプション依存関係の検出をスキップし、CLIの起動を高速化 |
127
- | `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE` | `true` | `true`の場合、`--auth`オプションなしで`backprop ui --share`コマンドを実行できない |
128
- | `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | すべてのUIファイルシステムの書き込みのサンドボックスベース。許可リストで検証済み |
129
- | `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | デフォルトモデル |
130
- | `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | 学習率 |
131
- | `BACKPROPAGATE_LORA__R` | `16` | LoRAのランク |
116
+ **4. 学習済みのアダプターから`ollama run`まで、1つのコマンド**
117
+ 多くのライブラリがモデルを学習しますが、実際に使用したい場合に、ユーザーの邪魔をしないものも多くありません。Backpropagateは、Ollamaで使用される形式(GGUF)にエクスポートし、Ollamaモデルを登録する機能を、1つのコマンドで提供します。トレーニングが完了してから、ファインチューニングしたモデルでチャットを開始するまで、わずか30秒で完了します。
132
118
 
133
- ネストされたキーでは、区切り文字としてダブルアンダースコアを使用します(Pydanticの`env_nested_delimiter`の規約)。
119
+ ## クイックスタート
134
120
 
135
- ## 使い方
121
+ このリポジトリには、小さなサンプルデータセットが含まれており、このREADMEの冒頭にあるコードが、クリーンな環境で実行できるように設計されています。
136
122
 
137
- ### 基本的な学習
123
+ ```bash
124
+ pipx install "backpropagate[standard]"
138
125
 
139
- ```python
126
+ python -c "
140
127
  from backpropagate import Trainer
128
+ trainer = Trainer('Qwen/Qwen2.5-7B-Instruct')
129
+ trainer.train('examples/quickstart.jsonl', steps=10)
130
+ trainer.export('gguf', quantization='q4_k_m')
131
+ "
132
+ ```
141
133
 
142
- trainer = Trainer("Qwen/Qwen2.5-7B-Instruct")
143
- trainer.train("my_data.jsonl", steps=100)
144
- trainer.save("./my-model")
145
- trainer.export("gguf", quantization="q4_k_m")
134
+ これは、5つの短いShareGPT形式の会話データセットでQwen 2.5 7Bのアダプターを学習し、その結果をGGUF形式でエクスポートするものです。ご自身のデータを使用する場合は、JSONLファイルを1行1つの例で記述してください。
135
+
136
+ ```jsonl
137
+ {"conversations": [{"from": "human", "value": "What is Python?"}, {"from": "gpt", "value": "A programming language."}]}
138
+ {"conversations": [{"from": "human", "value": "Explain recursion."}, {"from": "gpt", "value": "A function that calls itself."}]}
139
+ ```
140
+
141
+ Alpaca(`instruction` / `output`)、OpenAIのチャット(`messages`)、および生のテキスト形式も使用できます。Backpropagateは、形式を自動的に検出します。
142
+
143
+ より包括的なワークフロー(ファインチューニングとHugging Face Hubへのアップロード、OOMエラーからの再開、長期的なキャンペーンにおける複数回の学習など)については、[handbook recipes page](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/)を参照してください。
144
+
145
+ ### Web UI(オプション)
146
+
147
+ Pythonコードを直接入力する代わりに、Web UIを使用したい場合は、UIの追加機能をインストールして起動します。
148
+
149
+ ```bash
150
+ pipx install "backpropagate[ui]"
151
+ backprop ui --port 7862
146
152
  ```
147
153
 
148
- `Qwen/Qwen2.5-7B-Instruct`がデフォルトです。`Trainer()`を呼び出す際にモデルの引数を指定しない場合、この値が使用されます(`config.py`の`ModelConfig.name`を参照)。以前の例では、事前量子化された`unsloth/Qwen2.5-7B-Instruct-bnb-4bit`が使用されていましたが、より安定性の高い公式のQwenの重みを使用するように変更されました([CHANGELOG v0.1.3](CHANGELOG.md))。どちらのモデルでも動作します。
154
+ ローカルのWebインターフェースが`http://localhost:7862`で起動します。ここで、データセットを指定し、モデルを選択し、学習を実行し、エクスポートすることができます。UIはデフォルトではローカルでのみ利用可能です。他のデバイスからアクセスできるようにするには、[Web UI](#web-ui)を参照して、`--share`と`--auth`のセキュリティ設定を確認してください。
155
+
156
+ ## 複数回の学習
149
157
 
150
- ### マルチランSLAO学習
158
+ 複数のデータセットで段階的にファインチューニングを行いたい場合(たとえば、毎週新しい学習データを受け取り、以前に学習した内容を忘れることなく追加したい場合)は、Backpropagateの`multi_run`モードが適しています。
151
159
 
152
160
  ```python
153
161
  from backpropagate import Trainer
@@ -159,198 +167,196 @@ result = trainer.multi_run(
159
167
  num_runs=5,
160
168
  steps_per_run=100,
161
169
  samples_per_run=1000,
162
- merge_mode="slao", # Single LoRA Continual Learning via Asymmetric Merging
163
170
  )
164
171
  ```
165
172
 
166
- SLAO(Single LoRA Continual Learning via Asymmetric Merging)は、[Merge before Forget](https://arxiv.org/abs/2512.23017)という論文を実装しています。QR分解による直交A行列の初期化、非対称なA/Bの処理、および時間依存の`λ(i) = 1/√i`によるスケーリングが行われます。CLIフラグは`--samples`(対応するフィールドは`samples_per_run`)です。
167
-
168
- ### Ollamaへのエクスポート
169
-
170
- ```python
171
- # Export to GGUF
172
- result = trainer.export("gguf", quantization="q4_k_m")
173
-
174
- # Register with Ollama separately
175
- from backpropagate import register_with_ollama
176
- register_with_ollama(result.path, "my-finetuned-model")
177
- # ollama run my-finetuned-model
178
- ```
173
+ これは、5回の学習を繰り返し実行し、各回の実行でアダプターをマージすることで、以前の知識を維持しながら新しい例を取り入れる方法です。この手法は、最近の研究に基づいています。詳細は、このREADMEの末尾にある[References](#references)を参照してください。
179
174
 
180
- ### CLI
175
+ CLI(コマンドラインインターフェース)版:
181
176
 
182
177
  ```bash
183
- backprop train --data my_data.jsonl --model Qwen/Qwen2.5-7B-Instruct --steps 100
184
- backprop multi-run --data my_data.jsonl --runs 5 --steps 100
185
- backprop export ./output/lora --format gguf --quantization q4_k_m --ollama --ollama-name my-model
186
- backprop ui --port 7862
187
- backprop info
188
- backprop list-runs # v1.1.0: query past training runs
189
- backprop show-run <run-id> # v1.1.0: detail view
190
- backprop resume <run-id> # v1.1.0: resume a crashed multi-run
191
- backprop push ./output/lora --repo me/my-model # v1.1.0: push adapter to HF Hub
178
+ backprop multi-run --data my_data.jsonl --runs 5 --steps 100 --samples 1000
192
179
  ```
193
180
 
194
- すべてのサブコマンドとフラグについては、[CLIリファレンス](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/)を参照するか、`backprop <サブコマンド> --help`を実行してください。
181
+ ## チェックポイントからの再開
195
182
 
196
- ### チェックポイントからの再開(v1.1.0)
197
-
198
- 5回の実行を含むマルチ実行で、4回目の実行でクラッシュが発生した場合でも、実行を再開できます。すべてのマルチ実行セッションは、`run_history.json`ファイルとディスク上のチェックポイントマニフェストの両方に`run_id`を書き込みます。そのため、中断した場所から再開するには、1つのコマンドで済みます。
183
+ 4回目の実行でクラッシュした5回の学習も、再開可能です。すべての`multi_run`セッションは、実行IDをオンディスクの履歴ファイルとチェックポイントマニフェストに書き込みます。そのため、中断した場所から再開するには、1つのコマンドで済みます。
199
184
 
200
185
  ```bash
201
- backprop resume <run-id> # picks up the in-progress session
202
- backprop multi-run --data ... --resume <run-id> # explicit form
203
- backprop train --data ... --resume <run-id> # single-run resume (continues run_id)
186
+ backprop resume <run-id>
187
+ backprop multi-run --data ... --resume <run-id>
188
+ backprop train --data ... --resume <run-id> # single-run resume
204
189
  ```
205
190
 
206
- `backprop multi-run`のデフォルトの動作(`--resume`オプションなし)では、同じ出力ディレクトリ内の実行中のエントリを自動的に検出し、それを継続します。`resume_from="off"`(Python API)を指定するか、`--resume`オプションを省略して、新しい出力ディレクトリで開始することで、クリーンなセッションを強制できます。
207
-
208
- マルチ実行が再開されると、その`run_id`に対応する最新のチェックポイントがモデルにロードされ、`slao/`ディレクトリにあるSLAOマージの状態が復元され、実行ループは`last_completed_run + 1`から継続されます。履歴エントリの`status`が`running`に戻るため、`backprop list-runs --status running`コマンドで実行中のセッションが表示されます。
191
+ `backprop multi-run`のデフォルト設定(`--resume`オプションなし)では、同じ出力ディレクトリ内に実行中のセッションが存在する場合、それを自動的に検出し、再開します。クリーンな状態から開始するには、新しい出力ディレクトリを指定してください。
209
192
 
210
- ### 実験の追跡(v1.1.0)
193
+ ## トレーニング履歴
211
194
 
212
- `Trainer`は、インストールされている実験追跡ツール(`wandb`、`tensorboard`、`mlflow`)を自動的に検出し、それらを基盤となる`transformers.TrainingArguments`に統合します。デフォルトでは、`report_to="auto"`が設定されており、インポート可能なものが使用されます。
195
+ `backprop train`および`backprop multi-run`の実行ごとに、`<output>/run_history.json`ファイルに1行が記録されます。記録される内容は、使用したモデル、データセット、ハイパーパラメータ、ステータス、最終的な損失、損失履歴などです。過去の実行を一覧表示し、確認することができます。
213
196
 
214
197
  ```bash
215
- pip install backpropagate[monitoring] # installs wandb + psutil
216
- wandb login # one-time
217
- backprop train --data my_data.jsonl # W&B run gets the same run_id prefix as the on-disk history
198
+ backprop list-runs # last 20 runs
199
+ backprop list-runs --status failed # filter by status
200
+ backprop list-runs --json --limit 100 # machine-readable
201
+ backprop show-run abcd1234 # detail view (partial ID is fine)
218
202
  ```
219
203
 
220
- `Trainer(report_to=["wandb"])`、`Trainer(report_to=["tensorboard"])`、または`Trainer(report_to="none")`を使用して、明示的に無効化できます。MLflowを使用するには、`pip install mlflow`を実行します。TensorBoardを使用するには、`pip install tensorboard`を実行します。W&Bの実行名は`backprop-<run_id_prefix>`なので、オペレーターはW&B、ログ、および`run_history.json`を同じ識別子で検索できます。
204
+ ## 実験の追跡
221
205
 
222
- ### トレーニング履歴
223
-
224
- `backprop train`および`backprop multi-run`の実行ごとに、`<output>/run_history.json`ファイルに、`run_id`、モデル、データセット、ハイパーパラメータ、ステータス、最終的な損失、損失履歴、および(マルチ実行の場合)SLAOマージのタイムラインが記録されます。最近の実行の一覧を表示するには、次のコマンドを使用します。
206
+ Backpropagateは、インストールされている実験追跡ツール(Weights & Biases、TensorBoard、MLflow)を自動的に検出し、連携させます。`wandb`がインストールされており、ログインしている場合は、各実行が自動的にW&Bに記録されます。記録される実行名は、オンディスクの実行IDと一致します。これにより、W&B、ログ、および`run_history.json`ファイルを、1つの識別子で検索することができます。
225
207
 
226
208
  ```bash
227
- backprop list-runs # most recent 20 runs, all statuses
228
- backprop list-runs --status failed # filter
229
- backprop list-runs --json --limit 100 # machine-readable
230
- backprop show-run abcd1234 # detail view (partial run_id ok)
209
+ pip install backpropagate[monitoring] # installs wandb + psutil
210
+ wandb login # one-time setup
211
+ backprop train --data my_data.jsonl
231
212
  ```
232
213
 
233
- 実行履歴は、プロセスをまたいで保持されます。Web UIの「Runs」タブは、メモリ内のビューであり、オンディスクの履歴が`list-runs` / `show-run` / `resume`の真実のソースです。
214
+ `Trainer(report_to=["wandb"])`、`Trainer(report_to=["tensorboard"])`、または`Trainer(report_to="none")`を使用して、この機能を無効にすることができます。
234
215
 
235
- ### Web UI
216
+ ## Web UI
236
217
 
237
- ローカルでReflexインターフェースを起動します。
218
+ ReflexのWebインターフェースは、オプションで利用可能です。`pipx install "backpropagate[ui]"`でインストールし、起動します。
238
219
 
239
220
  ```bash
240
221
  backprop ui --port 7862
241
222
  ```
242
223
 
243
- パブリックインターネットURLを公開するには、`--share`オプションを`--auth`オプションと組み合わせて使用する必要があります。
224
+ UIは、ローカルで`http://localhost:7862`で実行されます。他のデバイス(ネットワーク上の他のユーザー、パブリックURLなど)からアクセスできるようにするには、`--share`(または`--host`)と`--auth`を組み合わせて使用する必要があります。
244
225
 
245
226
  ```bash
246
227
  backprop ui --share --auth alice:hunter2
247
228
  ```
248
229
 
249
- `backprop ui --share`コマンドを`--auth`オプションなしで実行すると、コード`1`で終了し、構造化されたエラーメッセージ`[INPUT_AUTH_REQUIRED]`が表示されます。これは、`--share`オプションが`*.gradio.live`というURLを公開し、そのURLはインターネット上の誰でもアクセスできるため、認証なしでは、誰でもトレーニングパイプラインを制御できる可能性があるためです。
230
+ `backprop ui --share`を`--auth`なしで実行すると、エラーが発生します。その理由は、`--share`はインターネット上の誰でもアクセスできるURLを公開しますが、認証なしでは、誰でも学習パイプラインを操作したり、Hugging Faceのトークンを読み取ったりできる可能性があるためです。この機能を無効にすることはできません。認証情報を設定したくない場合は、SSHポートフォワードを使用してください。
250
231
 
251
- 明示的に無効化するには(例:内部開発環境)、環境変数`BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false`を設定します。この場合、起動時に大きな警告が表示されます。また、認証されていないUIが起動するまでに5秒の猶予があるので、問題がある場合は`Ctrl-C`で中断できます。
232
+ ```bash
233
+ # On the client:
234
+ ssh -L 7860:localhost:7860 <your-training-host>
235
+ # On the server:
236
+ backprop ui # no --share
237
+ # Then open http://localhost:7860 in your local browser
238
+ ```
239
+
240
+ 完全な脅威モデルについては、[handbook/security.md](https://mcp-tool-shop-org.github.io/backpropagate/handbook/security/)を参照してください。
252
241
 
253
- UIからのファイルシステムへの書き込みは、単一のディレクトリにサンドボックス化されています。
242
+ UI からのファイルシステムへの書き込みは、単一のディレクトリにサンドボックス化されています。
254
243
 
255
244
  - デフォルト: `~/.backpropagate/ui-outputs`
256
- - 上書き: `BACKPROPAGATE_UI__OUTPUT_DIR=/path/you/own`
257
- - 上書きは、許可リストで検証されます。システム/認証パス(`/etc`、`/var`、`~/.ssh`、`~/.aws`、`C:\Windows\System32`など)は、`[UI_OUTPUT_DIR_FORBIDDEN]`というエラーで拒否されます。
245
+ - 上書き: `BACKPROPAGATE_UI__OUTPUT_DIR=/path/you/own` を設定
246
+ - 上書きは、許可リスト方式で検証されます。システムや認証情報に関連するパス (`/etc`, `~/.ssh`, `~/.aws`, `C:\Windows\System32` など) は許可されません。
258
247
 
259
- ## Windowsサポート
248
+ ## プラットフォームに関する注意点
260
249
 
261
- Backpropagateは、Windows上で動作するように設計されています。
250
+ **要件:** Python 3.10以上、CUDA対応GPU(8GB以上のVRAM)、PyTorch 2.0以上
262
251
 
263
- - マルチプロセッシングのクラッシュを回避するための事前トークン化
264
- - RTX 40/50シリーズに対するxformersの自動無効化
265
- - 安全なデータローダー設定
266
- - RTX 5080 (16GB VRAM)でテスト済み
252
+ Python 3.10 は、2026年10月にサポート終了となります。Backpropagate は、v1.4 で Python 3.10 のサポートを終了する予定です。新規インストールの場合は、Python 3.11 または 3.12 を推奨します。3.11 が最もテストされているバージョンです。
267
253
 
268
- ## モデルプリセット
254
+ Backpropagate は、異なるプラットフォームでのトレーニング時の動作に関する問題を処理しますが、インストール時の問題を解決することはできません。最も一般的な問題は以下の2つです。
269
255
 
270
- | プリセット | VRAM | 速度 | 品質 |
271
- |--------|------|-------|---------|
272
- | Qwen 2.5 7B | ~12GB | 中 | 最高 |
273
- | Qwen 2.5 3B | ~8GB | 高速 | 良 |
274
- | Llama 3.2 3B | ~8GB | 高速 | 良 |
275
- | Llama 3.2 1B | ~6GB | 最速 | 基本 |
276
- | Mistral 7B | ~12GB | 中 | 良 |
256
+ - **誤った CUDA wheel の選択:** PyTorch は、CUDA のバージョンごとに異なるバイナリが提供されています。誤ったものを選択すると、CPU のみを使用する PyTorch がインストールされ、トレーニング速度が著しく低下します。お使いのドライバに合った wheel を、<https://pytorch.org/get-started/locally/> で選択してください。`nvidia-smi` コマンドを実行して、ドライバと CUDA のバージョンを確認してください。
257
+ - **Windows + GGUF エクスポート:** `[export]` オプションは、ソースコードから `llama-cpp-python` をビルドしますが、これには Visual Studio Build Tools (C++ コンポーネント) と CMake が必要です。
277
258
 
278
- ## アーキテクチャ
259
+ **macOS:** GPU トレーニングはサポートされていません (CUDA 非対応)。トレーニング済みのアダプターは、Ollama を使用して Mac で実行できますが、`trainer.train()` を実行すると `DEP_GPU_NOT_AVAILABLE` エラーが発生します。トレーニング自体は、CUDA 対応の Linux または Windows マシンで行ってください。
279
260
 
261
+ 詳細なインストールに関するトラブルシューティングガイドは、[トラブルシューティングハンドブックのページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) を参照してください。また、ドライバ / VRAM / xformers / bf16-vs-fp16 に関する問題については、専用の [CUDA トラブルシューティングページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/) を参照してください。
262
+
263
+ ## CLI
264
+
265
+ すべての Python API には、対応する CLI (コマンドラインインターフェース) が用意されています。
266
+
267
+ ```bash
268
+ backprop train --data my_data.jsonl --model Qwen/Qwen2.5-7B-Instruct --steps 100
269
+ backprop multi-run --data my_data.jsonl --runs 5 --steps 100
270
+ backprop export ./output/lora --format gguf --quantization q4_k_m --ollama --ollama-name my-model
271
+ backprop ui --port 7862
272
+ backprop info # environment + version snapshot
273
+ backprop list-runs # past training runs
274
+ backprop show-run <run-id> # detail view
275
+ backprop resume <run-id> # resume a crashed run
276
+ backprop push ./output/lora --repo me/my-model # push adapter to HuggingFace Hub
277
+ backprop diff-runs <run-a> <run-b> # diff two runs side by side
278
+ backprop replay <run-id> # re-run with same config / dataset
279
+ backprop export-runs --format jsonl # bulk export run history
280
280
  ```
281
- backpropagate/
282
- ├── trainer.py # Core Trainer class
283
- ├── multi_run.py # Multi-run SLAO training
284
- ├── slao.py # SLAO LoRA merging algorithm
285
- ├── datasets.py # Dataset loading, filtering & curriculum
286
- ├── export.py # GGUF/Ollama export
287
- ├── config.py # Pydantic settings + training presets
288
- ├── gpu_safety.py # GPU monitoring & safety
289
- ├── cli.py # CLI entry point (backprop command)
290
- ├── checkpoints.py # Checkpoint management
291
- ├── exceptions.py # Structured error hierarchy
292
- ├── feature_flags.py # Optional feature detection
293
- ├── security.py # Path traversal & torch security
294
- ├── logging_config.py # Structured logging setup
295
- ├── ui_theme.py # Radix theme tokens + CSS (Reflex era)
296
- ├── ui_state.py # rx.State subclasses
297
- ├── ui_app/ # Reflex web interface (Radix UI)
298
- │ ├── app.py # rx.App entry point
299
- │ ├── chrome.py # Header / LeftNav / SideRail / Footer
300
- │ ├── pages/ # Train / Multi-Run / Export / Dataset
301
- │ └── components/ # Bp* primitives (status pill, sparkline, event log…)
302
- ├── ui_security.py # Rate limiting, CSRF, file validation (framework-agnostic)
303
- ├── ui_gradio_legacy.py # DEPRECATED preserved as v1.0 reference; removed in v1.2
304
- └── theme_gradio_legacy.py # DEPRECATED same
305
- ```
281
+
282
+ 完全なリファレンスは、[CLI ハンドブックのページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/) を参照するか、`backprop <サブコマンド> --help` を実行してください。
283
+
284
+ ## 設定
285
+
286
+ すべての設定は、`BACKPROPAGATE_` というプレフィックスが付いた環境変数を使用して上書きできます。
287
+
288
+ | 変数 | デフォルト値 | 備考 |
289
+ |---|---|---|
290
+ | `BACKPROPAGATE_LOG_LEVEL` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
291
+ | `BACKPROPAGATE_LOG_JSON` | auto | JSON またはコンソールログの出力を強制 |
292
+ | `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | デフォルトモデル |
293
+ | `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | 学習率 |
294
+ | `BACKPROPAGATE_LORA__R` | `256` | LoRA のランク (v1.3 のデフォルト値。v1.2.x のデフォルト値である 16 を使用するには、`--lora-preset=fast` を指定) |
295
+ | `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | UI ファイルシステムサンドボックス |
296
+
297
+ ネストされたキーには、二重アンダースコアを使用します (`MODEL__NAME`、`MODEL_NAME` ではありません)。完全なリファレンスは、[環境変数ハンドブックのページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/env-vars/) を参照してください。
298
+
299
+ ## モデルプリセット
300
+
301
+ | プリセット | VRAM | ライセンス | 備考 |
302
+ |---|---|---|---|
303
+ | Qwen-3.5-4B | ~8GB | Apache 2.0 | 5B 以下のモデルに推奨されるデフォルト値。このサイズで最高の品質を提供します。 |
304
+ | Phi-4-mini-3.8B | ~8GB | MIT | 推論 / 数学 / コードにおいて高い性能を発揮します。ライセンスの制約が緩やかです。 |
305
+ | SmolLM3-3B | ~6GB | Apache 2.0 | 完全にオープンソースのレシピ。ネイティブな 64K コンテキストに対応。 |
306
+ | Qwen 2.5 7B | ~12GB | Apache 2.0 | 既存のデフォルト値。レガシーの 7B プリセットの中で最高の品質を提供します。 |
307
+ | Qwen 2.5 3B | ~8GB | Qwen-Research | ⚠ 研究ライセンス — 商用利用の際は、Qwen のライセンス条項を確認してください。 |
308
+ | Llama 3.2 3B | ~8GB | Llama Community | Qwen 3B の優れた代替案であり、許可条件があります。 |
309
+ | Llama 3.2 1B | ~6GB | Llama Community | 小規模な環境での迅速な実験に適しています。 |
310
+ | Mistral 7B | ~12GB | Apache 2.0 | Qwen 7B と同等ですが、チャットテンプレートが異なります。 |
311
+
312
+ 他のモデルも動作する可能性がありますが、CI (継続的インテグレーション) で使用されるのはこれらの 8 つのモデルのみです。ランク 256 / all-linear ターゲット (Biderman 2024 + Thinking Machines 2025 の推奨) を使用するには、`--lora-preset=quality` (デフォルト) を指定します。v1.2.x のフットプリントが必要な場合は、`--lora-preset=fast` を指定して、レガシーのランク 16 / q+v ターゲットを使用します。
306
313
 
307
314
  ## トラブルシューティング
308
315
 
309
- よくある初期エラーの簡単な索引。詳細な逆索引は、[トラブルシューティングハンドブックのページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) にあります。以下のすべてのコードは、[エラーコード](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) で説明されています。
316
+ 初回実行時に発生する可能性のある一般的なエラーの簡単な一覧です。完全な逆引き一覧は、[トラブルシューティングハンドブックのページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) を参照してください。ドライバ / VRAM / 混合精度に関する詳細については、[CUDA トラブルシューティングページ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/) を参照してください。
310
317
 
311
- | 症状 | コード | 解決策 |
312
- |---------|------|-----|
313
- | トレーニング中にGPUのメモリが不足する | `RUNTIME_GPU_OOM` | OOM(メモリ不足)自動復旧(B-002)が、バッチサイズを最大3回まで自動的に半分にします。無効にするには、`Trainer(oom_recovery=False)` を指定します。バッチサイズを強制的に小さくするには、`--batch-size 1` を指定します。 |
314
- | HF Hubが401エラー/「モデルが見つかりません」と表示される | `DEP_MODEL_LOAD_FAILED` | `huggingface-cli login` を実行し、再試行してください。入力ミスがある場合は、<https://huggingface.co/models> から正確なIDをコピーしてください。 |
315
- | モデル名の入力ミス | `INPUT_VALIDATION_FAILED` または `DEP_MODEL_LOAD_FAILED` | <https://huggingface.co/models> での `org/name` の識別子を確認してください。 |
316
- | `register_with_ollama` への接続が拒否される | `DEP_OLLAMA_REGISTRATION_FAILED` | デーモンを起動します: `ollama serve`。 <https://ollama.com> からインストールしてください。再試行可能です。 |
317
- | チェックポイントの保存中にディスクがいっぱいになる | `STATE_CHECKPOINT_INVALID` | クラッシュが発生すると、`.partial` ディレクトリが残ります。削除しても安全です。以前の正常なチェックポイントはそのままです。 |
318
- | GPUの過熱によりトレーニングが一時停止/中断される | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | B-003: NVMLの温度閾値を超えるとモニタが一時停止し、GPUが冷却されると自動的に再開されます。エアフローを改善するか、持続的な負荷を下げてください。 |
319
- | `backprop ui --share` が拒否される | `INPUT_AUTH_REQUIRED` | `--auth user:password` を指定するか、`BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false` を設定して、認証を無効にします(警告が表示されます)。 |
320
- | 複数回の実行における「検証の重複」 | `CONFIG_INVALID` (Stage A backend B-001) | `--samples` の値を、トレーニングプールのサイズよりも小さくするか、データセットを増やしたり、検証を無効にしてください。 |
321
- | GGUFのエクスポートが最初に失敗する | `RUNTIME_GGUF_EXPORT_FAILED` | `pip install backpropagate[export]` を実行します。Windowsでは、Visual C++ Build Tools + CMake も必要です。 |
318
+ | 症状 | エラーコード | 対処法 |
319
+ |---|---|---|
320
+ | GPUメモリ不足によるトレーニング中断 | `RUNTIME_GPU_OOM` | 自動モードでは、メモリ不足が発生した場合、バッチサイズを半分にし、最大3回まで再試行します。この機能を無効にするには、`Trainer(oom_recovery=False)` と指定してください。バッチサイズを強制的に小さくするには、`--batch-size 1` オプションを使用してください。 |
321
+ | HuggingFaceから401エラー(「モデルが見つかりません」)が返ってきました。 | `DEP_MODEL_LOAD_FAILED` | `huggingface-cli login` を実行し、再度試してください。入力ミスがある場合は、<https://huggingface.co/models> から正確な ID をコピーしてください。 |
322
+ | `register_with_ollama` への接続拒否 | `DEP_OLLAMA_REGISTRATION_FAILED` | デーモンを起動します: `ollama serve`。 <https://ollama.com> からインストールしてください。再試行可能です。 |
323
+ | チェックポイント保存中にディスク容量不足 | `STATE_CHECKPOINT_INVALID` | クラッシュ時に、`.partial` というディレクトリが作成されますが、削除しても問題ありません。以前の正常なチェックポイントは保持されています。 |
324
+ | GPUの過熱により、トレーニングを一時中断しました。 | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | 自動モードでは、温度が設定された閾値を超えると一時的に動作が停止し、GPUが冷却されると再開されます。この現象が頻繁に発生する場合は、冷却効率を改善するために、エアフローを見直してください。 |
325
+ | `backprop ui --share` が拒否される | `INPUT_AUTH_REQUIRED` | `--auth user:password` オプションを指定するか、代わりに SSH のポートフォワード機能を使用してください([Web UI](#web-ui) を参照)。 |
326
+ | GGUF エクスポートが初回試行で失敗 | `RUNTIME_GGUF_EXPORT_FAILED` | `pip install backpropagate[export]` を実行してください。Windows の場合は、Visual C++ Build Tools + CMake も必要です。 |
322
327
 
323
328
  ## バグの報告
324
329
 
325
- 問題が発生した場合、Backpropagateは起動時に `run_started run_id=<uuid>` という行を出力し、同じIDをチェックポイントのマニフェスト、SLAOのマージ履歴、および構造化されたログ行に関連付けます。バグ報告には、`run_id` を必ず含めてください。これにより、開発者が、その実行に関するすべてのログ行、すべてのチェックポイント、およびすべてのマージを関連付けることができます。
330
+ Backpropagateがエラーを検出した場合、起動時に`run_started run_id=<UUID>`のようなメッセージを表示し、同じIDをすべてのログ、チェックポイント、およびWeights & Biasesのエントリに紐付けます。**バグ報告を行う際は、必ず`run_id`を含めてください。** これにより、開発者が特定の実行に関する情報をすべて関連付けることができます。
326
331
 
327
332
  良いバグレポートには、以下の情報が含まれている必要があります。
328
333
 
329
- 1. **`run_id`** 起動時に表示されるUUID(`TrainingRun.run_id` および `RunResult.run_id` でも利用可能)。
330
- 2. **エラーコード** `stderr` に表示される `[CODE_NAME]: message` の行を検索してください。詳細については、[エラーコード](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) を参照してください。
331
- 3. **コマンドライン(個人情報削除済み)。** 詳細表示モードでない場合、`stderr` は自動的に個人情報が削除されます(Bearerトークン、`sk-*`、`hf_*`、AWSキー、`password=`/`token=`/`api_key=` のペアは削除されます)。貼り付けても安全です。完全な未加工のトレースバックを表示するには、`--verbose` オプションで再実行しますが、投稿する前に内容を確認してください。
332
- 4. **Python / PyTorchのバージョン、GPUモデル、OS。** `backprop info` コマンドで、これらすべてを一度に表示できます。
334
+ 1. **`run_id`**: 起動時に表示されるUUID
335
+ 2. **エラーコード**: `stderr`に出力される`[コード名]: メッセージ`という形式のエラーメッセージ。エラーコードの一覧は、[エラーコード](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/)を参照してください。
336
+ 3. **編集されたコマンドライン**: `stderr`は自動的に編集されます(Bearerトークン、`sk-*`、`hf_*`、AWSキー、`password=`/`token=`の組み合わせは削除されます)。安心して貼り付けてください。完全な未編集のトレースバックを表示するには、`--verbose`オプションをつけて再度実行してください。ただし、投稿する前に内容を確認してください。
337
+ 4. **Python/PyTorchのバージョン、GPUモデル、OS**: `backprop info`コマンドを実行すると、これらすべての情報が一度に表示されます。
338
+
339
+ 質問、アイデア、または「これは想定通りですか?」といった内容については、[GitHub Discussions](https://github.com/mcp-tool-shop-org/backpropagate/discussions) のページにお寄せください。セキュリティに関する問題は、[GitHub Security Advisory](https://github.com/mcp-tool-shop-org/backpropagate/security/advisories/new) のフォームを通じて、非公開でご報告ください。詳細は、[SECURITY.md](SECURITY.md) をご確認ください。
333
340
 
334
341
  ## プライバシー
335
342
 
336
- トレーニングはすべて、ローカルのGPUで行われます。Backpropagateは、HuggingFaceからモデルをダウンロードするためにネットワークリクエストを行う場合を除き、ネットワークリクエストは行いません。テレメトリーやクラウドへの依存はありません。
343
+ トレーニングはすべて、ローカルの GPU 上で行われます。Backpropagate は、HuggingFace からモデルをダウンロードするために必要なネットワークリクエストを除き、他のネットワークリクエストは行いません。テレメトリーやクラウドへの依存はありません。
337
344
 
338
- ## スコアカード
345
+ ## 参考文献
339
346
 
340
- | カテゴリ | スコア | 備考 |
341
- |----------|-------|-------|
342
- | A. セキュリティ | 6/8 | SECURITY.md、信頼できるモデル、秘密情報/テレメトリーなし、safe_path()。MCP関連項目はスキップされます。 |
343
- | B. エラー処理 | 5/7 | 構造化された例外情報(`code`/`message`/`hint`/`cause`/`retryable`)は、ERROR_CODES レジストリを通じて提供されます。CLIの終了コードは0/1/2/3です。`--verbose`オプションなしでは、生のスタックトレースは表示されません。`run_id`による関連付け、内容が一部伏せられた標準エラー出力、`--share`と`--auth`の組み合わせによる制限。MCP、デスクトップ版、VS Codeは対象外です。 |
344
- | C. オペレーター向けドキュメント | 4/7 | README、CHANGELOG、LICENSE、`--help`。ロギング、MCP、複雑な機能は対象外。 |
345
- | D. リリース時の品質管理 | 6/9 | `verify.sh`、バージョンはタグ、CI環境での5つのスキャナー、dependabot、`python_requires`、クリーンなビルド。 |
346
- | E. アイデンティティ | 4/4 | ロゴ、翻訳、ランディングページ、メタデータ。 |
347
- | **Total** | **25/31** | 14項目は理由によりスキップされました。`shipcheck audit`は100%合格。監査日: 2026年5月21日(B行は、ステージBとステージAのCLI終了コード関連の作業後に再評価)。 |
347
+ Backpropagateのデフォルト設定や複数回のトレーニングを行う機能は、最新の研究に基づいて設計されています。もし、その基盤となる技術にご興味があれば:
348
348
 
349
- 設計の経緯と、各項目が何に対応しているかについては、[ROADMAP.md](ROADMAP.md)を参照してください。v1.1.0では、Week 1~4のすべての項目がリリースされます。
349
+ - **Hu et al. 2021.** *LoRA: 低ランク適応による大規模言語モデルの効率化.* [arXiv:2106.09685](https://arxiv.org/abs/2106.09685) — LoRAを紹介する基礎論文。Backpropagateは、この技術を用いてアダプターを効率的に学習します。
350
+ - **Biderman et al. 2024.** *LoRAはより少なく学習し、より少なく忘却する.* [arXiv:2405.09673](https://arxiv.org/abs/2405.09673) — 実験的な証拠として、ランク256のLoRAで、すべての線形ターゲットを使用した場合、ほとんどの追加学習タスクにおいて、フルファインチューニングと同等の品質を、計算量の67%で達成できることが示されています。これは、Backpropagateのバージョン1.3のデフォルトLoRA設定の基盤となっています。
351
+ - **Thinking Machines 2025.** *後悔のないLoRA.* [thinkingmachines.ai/blog/lora](https://thinkingmachines.ai/blog/lora/) — 高いLoRAランクを使用する場合に必要な、学習率とフルファインチューニングとの関係を明らかにする実践的な解説。
352
+ - **Kirkpatrick et al. 2017.** *ニューラルネットワークにおける破滅的な忘却の克服.* [arXiv:1612.00796](https://arxiv.org/abs/1612.00796) — ニューラルネットワークが、新しいデータでファインチューニングを行う際に、以前の学習内容を「忘れてしまう」理由を最初に説明した論文(EWC:Elastic Weight Consolidation)。
353
+ - **Wang et al. 2023.** *言語モデルの継続学習のための直交部分空間学習.* [arXiv:2310.14152](https://arxiv.org/abs/2310.14152) — O-LoRAは、新しいアダプターを直交部分空間に制限することで、LoRAを継続学習に利用する初期のアプローチです。
354
+ - **Yadav et al. 2023.** *TIES-マージ:モデルのマージ時の干渉の解消.* [arXiv:2306.01708](https://arxiv.org/abs/2306.01708) — 複数のファインチューニング済みモデルを、干渉なくマージするための基本的な技術です。
355
+ - **Qiao & Mahdavi 2025.** *忘却する前にマージ:継続的なマージによる単一のLoRA継続学習.* [arXiv:2512.23017](https://arxiv.org/abs/2512.23017) — Backpropagateが実装している、特定のアルゴリズムです。2025年12月に発表されたプレプリントであり、Backpropagateがこの論文を最初に実用化した事例として知られています。
350
356
 
351
357
  ## ライセンス
352
358
 
353
- MIT — 詳細については、[LICENSE](LICENSE)を参照してください。
359
+ MITライセンスについては、[LICENSE](LICENSE) をご参照ください。
354
360
 
355
361
  ---
356
362