|
| 1 | +[English](CONTRIBUTING.md) · [Français](CONTRIBUTING.fr.md) · [Español](CONTRIBUTING.es.md) · [简体中文](CONTRIBUTING.zh-CN.md) · [Deutsch](CONTRIBUTING.de.md) · **日本語** <!-- i18n-switcher --> |
| 2 | + |
| 3 | +# Atome LM への貢献 |
| 4 | + |
| 5 | +貢献をご検討いただきありがとうございます。これは小さく焦点を絞ったプロジェクトです——極小の三値言語モデル + それとビット単位で厳密に対話する C99 推論エンジン。まず `PROJECT_CONTENT.md` を読んでください。壊してはならないものが書かれています。 |
| 6 | + |
| 7 | +## クイックスタート |
| 8 | + |
| 9 | +```bash |
| 10 | +git clone https://github.com/TilelliLab/atome-lm |
| 11 | +cd atome-lm |
| 12 | +./install.sh |
| 13 | +. .venv/bin/activate |
| 14 | +pytest -q # expect: 146 passed (or 145 + 1 skipped without qemu-system-arm) |
| 15 | +``` |
| 16 | + |
| 17 | +## バグの報告 |
| 18 | + |
| 19 | +GitHub で issue を開き、次を添えてください: |
| 20 | + |
| 21 | +- 実行したこと(正確なコマンド) |
| 22 | +- 期待したこと |
| 23 | +- 起きたこと(言い換えではなく、完全なエラー) |
| 24 | +- あなたのプラットフォーム:OS、Python バージョン、`python -c "import torch; print(torch.__version__)"` |
| 25 | + |
| 26 | +一致の失敗(Python の forward ≠ C の forward)に遭遇した場合は、失敗するシードと、学習した任意のチェックポイントを添付してください——これらは最優先のバグです。 |
| 27 | + |
| 28 | +## プルリクエストの提出 |
| 29 | + |
| 30 | +1. リポジトリを fork し、`main` からブランチを作成します。 |
| 31 | +2. 変更を行います。 |
| 32 | +3. 完全なテストスイートを実行します——すべての PR は `pytest -q` を緑に保たねばなりません。 |
| 33 | +4. 変更が `atome_llm/core/`、`c_engine/upstream/`、またはエクスポート形式に触れる場合は、これらのテストが依然として通ることを**特に確認**してください: |
| 34 | + - `tests/test_parity_with_c.py` — 単一 forward の Python ↔ C 一致 |
| 35 | + - `tests/test_parity_multitoken.py` — マルチトークンの Python ↔ C 一致 |
| 36 | + - `tests/test_export_format.py` — バイナリ形式 + ヘッダ生成 |
| 37 | +5. PR を開きます。CI が Python 3.10 / 3.11 / 3.12 でスイートを再実行します。 |
| 38 | + |
| 39 | +## 受け入れ可能な変更の範囲 |
| 40 | + |
| 41 | +歓迎: |
| 42 | + |
| 43 | +- バグ修正 |
| 44 | +- 新しいテストカバレッジ(特に C パーサへのファズケース、`atome_predict_next` / `atome_generate` への境界入力) |
| 45 | +- ビット単位で厳密な一致を保つ性能改善 |
| 46 | +- ドキュメントの修正と明確化 |
| 47 | +- `c_engine/targets/` 下の新しい MCU ターゲットボード(*upstream エンジンを変更しない限り*) |
| 48 | +- 誠実な A/B 比較のための `atome_llm/baselines/` 下の新しいベースライン |
| 49 | + |
| 50 | +範囲外、これらの PR は開かないでください: |
| 51 | + |
| 52 | +- `c_engine/upstream/` へのヒープ割り当て、動的メモリ、libc 依存の追加 |
| 53 | +- 決定的なコードパスへの「起こるはずがない」フォールバックの追加 |
| 54 | +- 新しいトークナイザ(BPE / sentencepiece)の同梱——バイトトークナイザは MCU のフラッシュ予算にとって支えとなる設計上の選択です |
| 55 | +- ベンチマークを改善するとしても、Python ↔ C の一致を破る変更 |
| 56 | +- 完全な一致 + 境界チェックのカバレッジなしに `c_engine/experiments/` から `c_engine/upstream/` へコードを昇格させる新機能 |
| 57 | + |
| 58 | +## コーディング規約 |
| 59 | + |
| 60 | +- Python:シンプルに保ち、ヘルパー層なし、スタイルのためのデコレータなし。既存の語り口に合わせる——小さな関数、早すぎる抽象化なし、*なぜ*が自明でないときだけコメント。 |
| 61 | +- C:C99 のみ、GNU 拡張なし、`<string.h>` / `<math.h>` / `<stdint.h>` を超える libc なし。コンパイル時 `ATOME_*` マクロでサイズ設定された静的バッファ。すべての公開 API 入力の境界チェック。 |
| 62 | + |
| 63 | +## セキュリティ |
| 64 | + |
| 65 | +セキュリティ問題(悪意あるチェックポイントや `.atome` blob が、エンジンを実行するホストを侵害できるもの)を見つけた場合は、公開の issue を提出する代わりに **hello@atomelm.com** へメールしてください。開示を調整します。 |
| 66 | + |
| 67 | +## ライセンス |
| 68 | + |
| 69 | +貢献を提出することで、それが Apache License 2.0(プロジェクトライセンス——`LICENSE` を参照)の下で公開されることに同意したものとします。 |
0 commit comments