|
| 1 | +[English](CONTRIBUTING.md) · [Français](CONTRIBUTING.fr.md) · [Español](CONTRIBUTING.es.md) · [简体中文](CONTRIBUTING.zh-CN.md) · **Deutsch** <!-- i18n-switcher --> |
| 2 | + |
| 3 | +# Beitragen zu Atome LM |
| 4 | + |
| 5 | +Danke, dass du einen Beitrag in Erwägung ziehst. Dies ist ein kleines, fokussiertes Projekt — ein winziges ternäres Sprachmodell + eine C99-Inferenz-Engine, die bit-genau mit ihm spricht. Lies zuerst `PROJECT_CONTENT.md`; es behandelt, was du nicht brechen darfst. |
| 6 | + |
| 7 | +## Schnellstart |
| 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 | +## Bugs melden |
| 18 | + |
| 19 | +Öffne ein Issue auf GitHub mit: |
| 20 | + |
| 21 | +- was du ausgeführt hast (exakter Befehl) |
| 22 | +- was du erwartet hast |
| 23 | +- was passiert ist (vollständiger Fehler, nicht paraphrasiert) |
| 24 | +- deine Plattform: OS, Python-Version und `python -c "import torch; print(torch.__version__)"` |
| 25 | + |
| 26 | +Falls du auf einen Paritätsfehler stößt (Python-Forward ≠ C-Forward), hänge bitte den fehlschlagenden Seed und jeden von dir trainierten Checkpoint an — das sind die Bugs mit höchster Priorität. |
| 27 | + |
| 28 | +## Einen Pull Request einreichen |
| 29 | + |
| 30 | +1. Forke das Repo und erstelle einen Branch von `main`. |
| 31 | +2. Mache deine Änderung. |
| 32 | +3. Führe die vollständige Test-Suite aus — jeder PR muss `pytest -q` grün halten. |
| 33 | +4. Falls deine Änderung `atome_llm/core/`, `c_engine/upstream/` oder das Exportformat berührt, **bestätige ausdrücklich**, dass diese Tests weiterhin bestehen: |
| 34 | + - `tests/test_parity_with_c.py` — Single-Forward-Python-↔-C-Parität |
| 35 | + - `tests/test_parity_multitoken.py` — Multi-Token-Python-↔-C-Parität |
| 36 | + - `tests/test_export_format.py` — Binärformat + Header-Generierung |
| 37 | +5. Öffne den PR. Die CI führt die Suite auf Python 3.10 / 3.11 / 3.12 erneut aus. |
| 38 | + |
| 39 | +## Umfang akzeptabler Änderungen |
| 40 | + |
| 41 | +Willkommen: |
| 42 | + |
| 43 | +- Bugfixes |
| 44 | +- Neue Testabdeckung (besonders Fuzz-Fälle am C-Parser und Grenzeingaben an `atome_predict_next` / `atome_generate`) |
| 45 | +- Performance-Verbesserungen, die die bit-genaue Parität wahren |
| 46 | +- Dokumentations-Korrekturen und -Klärungen |
| 47 | +- Neue MCU-Zielboards unter `c_engine/targets/`, *solange sie die Upstream-Engine nicht ändern* |
| 48 | +- Neue Baselines unter `atome_llm/baselines/` für einen ehrlichen A/B-Vergleich |
| 49 | + |
| 50 | +Außerhalb des Umfangs, bitte öffne keine PRs für diese: |
| 51 | + |
| 52 | +- Heap-Allokation, dynamischen Speicher oder libc-Abhängigkeiten zu `c_engine/upstream/` hinzufügen |
| 53 | +- "Sollte nicht passieren"-Fallbacks zu deterministischen Codepfaden hinzufügen |
| 54 | +- Neue Tokenizer bündeln (BPE / sentencepiece) — der Byte-Tokenizer ist eine tragende Designentscheidung für das MCU-Flash-Budget |
| 55 | +- Änderungen, die die Python-↔-C-Parität brechen, selbst wenn sie einen Benchmark verbessern |
| 56 | +- Neue Features, die Code von `c_engine/experiments/` nach `c_engine/upstream/` befördern, ohne vollständige Paritäts- + Grenzprüfungs-Abdeckung |
| 57 | + |
| 58 | +## Coding-Standards |
| 59 | + |
| 60 | +- Python: halte es einfach, keine Hilfsschichten, keine Dekoratoren-für-Stil. Passe dich der bestehenden Stimme an — kleine Funktionen, keine verfrühte Abstraktion, Kommentare nur, wenn das *Warum* nicht offensichtlich ist. |
| 61 | +- C: nur C99, keine GNU-Erweiterungen, keine libc über `<string.h>` / `<math.h>` / `<stdint.h>` hinaus. Statische Puffer, dimensioniert durch Kompilierzeit-`ATOME_*`-Makros. Grenzprüfung aller öffentlichen API-Eingaben. |
| 62 | + |
| 63 | +## Sicherheit |
| 64 | + |
| 65 | +Falls du ein Sicherheitsproblem findest (alles, was einem bösartigen Checkpoint oder `.atome`-Blob erlaubt, einen Host zu kompromittieren, der die Engine ausführt), sende bitte eine E-Mail an **hello@atomelm.com**, statt ein öffentliches Issue einzureichen. Wir koordinieren die Offenlegung. |
| 66 | + |
| 67 | +## Lizenz |
| 68 | + |
| 69 | +Durch das Einreichen eines Beitrags stimmst du zu, dass er unter der Apache License 2.0 (der Projektlizenz — siehe `LICENSE`) veröffentlicht wird. |
0 commit comments