- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
5.5 KiB
BUILD-A1: Träningsscript för amos-r2 (ESLM)
Datum: 2026-06-06
Utfört av: Subagent BUILD-A1
✅ Resultat: REKONSTRUERAT
Det ursprungliga träningsscriptet hittades INTE på GPU-boxen. Scriptet build/train_eslm.py är en rekonstruktion baserad på artefakter som finns kvar efter träningen.
🔍 Sökning — Vad undersöktes
Bash-historik
~/.bash_historyfinns ej (cat: /home/ubuntu/.bash_history: No such file or directory)- Inga alternativa historikfiler hittades (zsh_history, fish_history)
- HISTSIZE=1000 / HISTFILESIZE=2000 är konfigurerat i
.bashrcmen filen har aldrig skapats (trolig orsak: sessionen kördes utan interaktivt bash, eller instansen rekurserades)
Python-scripts
find /home/ubuntu -name "*.py"(exkl. train_env, eslm-venv, vllm_env):- Inga egna träningsscripts hittades
- Enda
.py-filerna i home (grunda nivåer) är Unsloth compiled-cache-filer
- Inga
.ipynb-notebooks utanför venv:er - Inga
nohup.out, tmux-loggar eller screen-sessions
Loggar
~/vllm-install.log/~/vllm-serve.log— vLLM-installation och serving, inget om träning/var/log/cloud-init-output.log— cloud-init, inget om träning- journalctl — inget relevant
📦 Hittade artefakter med evidens
~/aamos_adapter/adapter_config.json
DIREKTA FAKTA (dessa är exakta, från adaptern som faktiskt skapades):
| Parameter | Värde | Källa |
|---|---|---|
base_model_name_or_path |
unsloth/Qwen2.5-7B-Instruct-bnb-4bit |
adapter_config.json |
r (lora_r) |
16 | adapter_config.json |
lora_alpha |
32 | adapter_config.json |
lora_dropout |
0.05 | adapter_config.json |
target_modules |
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj (alla 7) |
adapter_config.json |
bias |
"none" |
adapter_config.json |
use_dora |
false |
adapter_config.json |
use_rslora |
false |
adapter_config.json |
init_lora_weights |
true |
adapter_config.json |
peft_type |
CAUSAL_LM |
adapter_config.json |
peft_version |
0.19.1 |
adapter_config.json |
~/aamos_merged/config.json
| Parameter | Värde | Källa |
|---|---|---|
| Quantization | 4-bit NF4 (bnb_4bit_quant_type: "nf4") |
config.json |
| Compute dtype | bfloat16 |
config.json |
| Double quant | true |
config.json |
| Modell-arkitektur | Qwen2ForCausalLM (28 lager, hidden_size=3584) |
config.json |
| Max position embeddings | 32768 | config.json |
~/aamos_adapter/tokenizer_config.json
| Parameter | Värde |
|---|---|
| tokenizer_class | Qwen2Tokenizer |
| eos_token | `< |
| pad_token | `< |
| padding_side | left |
| model_max_length | 32768 |
Installerade paket (train_env / system)
| Paket | Version |
|---|---|
| unsloth | 2026.5.8 |
| trl | 0.24.0 |
| peft | 0.19.1 |
| transformers | 5.5.0 |
~/unsloth_compiled_cache/UnslothSFTTrainer.py
Innehåller UnslothSFTConfig med dessa defaults (Unsloth standard för trl 0.24):
per_device_train_batch_size = 4gradient_accumulation_steps = 2num_train_epochs = 3.0learning_rate = 5e-05lr_scheduler_type = 'linear'warmup_steps = 0.1(10% av totala steps)optim = 'adamw_8bit'weight_decay = 0.001adam_beta1 = 0.9,adam_beta2 = 0.999max_grad_norm = 1.0seed = 3407report_to = 'none'
⚠️ Osäkra parametrar (GISSNINGAR märkta nedan)
| Parameter | Värde i scriptet | Osäkerhet |
|---|---|---|
max_seq_length |
2048 | GUESS — vllm serve kör max_model_len=2048 i start_vllm_lora.sh; konsistent med träning |
num_train_epochs |
3 | Unsloth default; okänd |
per_device_train_batch_size |
4 | Unsloth default; okänd |
dataset_path |
via --data argument |
Okänd — dataset finns ej kvar |
assistant_only_loss |
ej satt (False) | Qwen-Instruct SFT brukar använda det; oklart |
Notera: start_vllm_lora.sh kör med --max-model-len 2048 vilket starkt antyder att max_seq_length=2048 användes vid träning (vLLM-serving begränsas ofta till tränings-kontextlängden).
📄 Rekonstruerat script
Sparad till: /home/bernt/.openclaw/workspace/build/train_eslm.py
Användning
# Aktivera train_env på GPU-boxen
source ~/train_env/bin/activate
# Kör träning
python train_eslm.py \
--data /path/to/training_data.jsonl \
--output ~/aamos_adapter_new \
--max-seq-length 2048 \
--epochs 3 \
--lr 5e-5 \
--batch-size 4 \
--grad-accum 2 \
--merge-output ~/aamos_merged_new # valfritt
Dataset-format (JSONL)
{"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
{"messages": [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
🔎 Sammanfattning
| Aspekt | Status |
|---|---|
| Originalscript hittat | ❌ NEJ |
| Bash-historik tillgänglig | ❌ NEJ (fil saknas) |
| LoRA-hyperparametrar | ✅ BEKRÄFTADE (från adapter_config.json) |
| Träningshyperparametrar | ⚠️ TROLIGA (från Unsloth defaults) |
| max_seq_length | ⚠️ GUESS (2048, stöds av vllm-serve config) |
| Antal epochs | ⚠️ OKÄNT (Unsloth default = 3 används) |
| Dataset | ❌ OKÄNT (finns ej på GPU-boxen) |
Scriptet är troligtvis nära originalet eftersom Unsloth-användare sällan avviker kraftigt från defaults för dessa parametrar. De viktigaste värdena (LoRA-konfigurationen) är exakta kopior från den faktiska adapterfilen.