Files
boc/intelligence/build-a1-training-script.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- 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
2026-06-29 16:24:48 +00:00

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_history finns 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 .bashrc men 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 = 4
  • gradient_accumulation_steps = 2
  • num_train_epochs = 3.0
  • learning_rate = 5e-05
  • lr_scheduler_type = 'linear'
  • warmup_steps = 0.1 (10% av totala steps)
  • optim = 'adamw_8bit'
  • weight_decay = 0.001
  • adam_beta1 = 0.9, adam_beta2 = 0.999
  • max_grad_norm = 1.0
  • seed = 3407
  • report_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.