Commit Graph

32 Commits (3681271736a9b5769dc483bfbd7c134431a523b6)

Author SHA1 Message Date
Corey52HZ 3681271736
Merge 655d4705eb into 7a9137d2e9 2026-09-15 19:34:49 +08:00
Lingxu 655d4705eb feat: support Apple Silicon (MPS) for training and web demo
`device_type` currently only distinguishes "cuda" from "cpu", so running
with `--device mps` on Apple Silicon falls into the "cpu" branch, disables
autocast entirely and forces fp32 training.

Changes (9 files, mechanical):
- `device_type` now resolves to cuda / mps / cpu
- `torch.cuda.amp.autocast(...)` -> `torch.amp.autocast(device_type, ...)`
- `torch.cuda.amp.GradScaler(...)` -> `torch.amp.GradScaler(device_type, ...)`,
  enabled only for CUDA + fp16 (MPS has no gradient scaler)
- `web_demo.py` device selection now prefers mps when available

This also silences the `torch.cuda.amp.*` deprecation warnings on torch 2.x.
CUDA behaviour is unchanged.

Measured on Apple M5 Pro (24GB), hidden_size=512 / 8 layers, bs=16, seq=512:
- before (fp32, no autocast): 11,784 tok/s
- after  (bf16 autocast):     15,492 tok/s   (+31%)

Verified end-to-end on MPS: pretrain, full_sft, lora, dpo, ppo, grpo,
distillation and agent RL all run to completion, and the resulting weights
export correctly to transformers / GGUF.

Note for macOS users: `--num_workers 0` is currently required, as DataLoader
worker processes deadlock on macOS + Python 3.12 due to fork safety.
2026-09-09 21:42:03 +08:00
tkgcc 0f6803e551 [fix] replace tool eval() with an AST math evaluator
execute_tool() relied on signal.SIGALRM, which does not exist on Windows.
The AttributeError was swallowed by a bare except, so every tool call
silently returned None and the model always observed
{"error": "tool not found"} (issue #846).

calculate_math also ran eval() on model-generated text. Two of the three
call sites (scripts/eval_toolcall.py, scripts/web_demo.py) passed no
globals at all, leaving full builtins reachable from sampled output.

safe_math_eval() in trainer_utils.py parses the expression with ast and
walks it, allowing only arithmetic operators and a math whitelist, with
caps on expression length and exponent size. It cannot loop forever, so
the signal-based timeout is no longer needed and is removed. Both sqrt(x)
and math.sqrt(x) spellings keep working.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 07:53:33 +08:00
jingyaogong 512eed0b65 [fix] robustness 2026-06-28 18:03:34 +08:00
jingyaogong 5704766352 [update] tie embedding 2026-04-19 21:57:28 +08:00
jingyaogong 5351424bf0 [fix] lora moe 2026-04-09 16:36:48 +08:00
jingyaogong b7e0ae21d6 [update] default model 2026-03-31 13:40:16 +08:00
jingyaogong 6b0b0c5e2f [update] fp16 inference 2026-03-27 16:29:46 +08:00
jingyaogong 101d7df2da [update] minimind-3 2026-03-25 23:57:45 +08:00
jingyaogong 04616c41a5 [update] safe half 2026-01-30 20:29:31 +08:00
jingyaogong 07364c3fbe [update] rename train tokenizer 2026-01-06 01:17:33 +08:00
jingyaogong a8455ca8a3 [fix] messages num 2026-01-04 11:03:16 +08:00
jingyaogong eead9538b2 [feat] update config 2025-12-31 10:29:13 +08:00
jingyaogong 936d105e9b [feat] compatible tokenizer 2025-12-31 10:26:46 +08:00
jingyaogong 81e869fc3e [fix] harmonize template 2025-11-06 13:14:08 +08:00
jingyaogong 509d8dacf1 [feat] clear cache 2025-11-06 13:12:28 +08:00
jingyaogong 8a0b04ed82 [fix] harmonize template 2025-11-02 23:18:11 +08:00
jingyaogong 08ce3da228 [feat] update args 2025-10-30 10:48:31 +08:00
jingyaogong bf123b585d [feat] add args 2025-10-30 10:05:12 +08:00
jingyaogong 28cc44579a [feat] convert2llama 2025-10-23 20:22:42 +08:00
jingyaogong 7d877db79b [feat] minimind-2510 2025-10-21 21:19:47 +08:00
jingyaogong 2e118e9d3d update convert script 2025-04-27 15:44:40 +08:00
jingyaogong a62faf34bd 250426 2025-04-26 10:05:47 +08:00
jingyaogong 7da201a944 update chat-openai-api 2025-04-18 12:43:57 +08:00
jingyaogong 4a758564e4 fix top_p float bug 2025-04-09 16:52:20 +08:00
jingyaogong 08e9a22a25 update web_demo 2025-04-04 11:25:40 +08:00
gongjy c1a77f5c0f update web_demo 2025-02-14 19:38:55 +08:00
gongjy d519d2a233 update web_demo 2025-02-14 19:37:27 +08:00
gongjy b5d10d9a7d fix bugs 2025-02-13 20:56:14 +08:00
gongjy c9ca0f57dc update config 2025-02-10 00:14:11 +08:00
gongjy 29d6cd9cd2 update scripts file 2025-02-09 23:52:50 +08:00
gongjy 58e3af0359 add minimind2 2025-02-09 23:49:47 +08:00